QI-412: upgrade ElasticSearch from 1.2.1 to 1.3.4
Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/b8efcda1 Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/b8efcda1 Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/b8efcda1 Branch: refs/heads/develop Commit: b8efcda1446afbf0dde033719d6956542bcec9d8 Parents: cf36351 Author: Paul Merlin <[email protected]> Authored: Tue Oct 14 14:57:23 2014 +0200 Committer: Paul Merlin <[email protected]> Committed: Tue Oct 14 14:57:23 2014 +0200 ---------------------------------------------------------------------- .../index/elasticsearch/ImmenseTermTest.java | 143 +++++++++++++++++++ libraries.gradle | 2 +- 2 files changed, 144 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/b8efcda1/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/ImmenseTermTest.java ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/ImmenseTermTest.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/ImmenseTermTest.java new file mode 100644 index 0000000..6308f40 --- /dev/null +++ b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/ImmenseTermTest.java @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2014 the original author or authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.qi4j.index.elasticsearch; + +import java.io.File; +import java.util.List; +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; +import org.qi4j.api.association.ManyAssociation; +import org.qi4j.api.common.Optional; +import org.qi4j.api.common.Visibility; +import org.qi4j.api.entity.EntityComposite; +import org.qi4j.api.entity.Queryable; +import org.qi4j.api.property.Property; +import org.qi4j.api.query.Query; +import org.qi4j.api.unitofwork.UnitOfWork; +import org.qi4j.bootstrap.AssemblyException; +import org.qi4j.bootstrap.ModuleAssembly; +import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler; +import org.qi4j.library.fileconfig.FileConfigurationOverride; +import org.qi4j.library.fileconfig.FileConfigurationService; +import org.qi4j.test.AbstractQi4jTest; +import org.qi4j.test.EntityTestAssembler; +import org.qi4j.test.util.DelTreeAfter; + +import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertThat; +import static org.qi4j.api.query.QueryExpressions.eq; +import static org.qi4j.api.query.QueryExpressions.templateFor; +import static org.qi4j.test.util.Assume.assumeNoIbmJdk; + +/** + * ImmenseTermTest. + * <p> + * See <a href="https://ops4j1.jira.com/browse/QI-412">QI-412</a>. + */ +public class ImmenseTermTest + extends AbstractQi4jTest +{ + private static final File DATA_DIR = new File( "build/tmp/immense-term-test" ); + @Rule + public final DelTreeAfter delTreeAfter = new DelTreeAfter( DATA_DIR ); + + @BeforeClass + public static void beforeClass_IBMJDK() + { + assumeNoIbmJdk(); + } + + public interface TestEntity + extends EntityComposite + { + @Optional + Property<String> property(); + + @Queryable( false ) + ManyAssociation<TestEntity2> manyAssociation(); + } + + public interface TestEntity2 + extends EntityComposite + { + @Optional + Property<String> property(); + + @Optional + Property<List<Byte>> binaryProperty(); + } + + @Override + public void assemble( ModuleAssembly module ) + throws AssemblyException + { + // Config module + ModuleAssembly config = module.layer().module( "config" ); + new EntityTestAssembler().assemble( config ); + + // EntityStore + new EntityTestAssembler().assemble( module ); + + // Index/Query + new ESFilesystemIndexQueryAssembler(). + withConfig( config, Visibility.layer ). + assemble( module ); + ElasticSearchConfiguration esConfig = config.forMixin( ElasticSearchConfiguration.class ).declareDefaults(); + esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE ); + + // FileConfig + FileConfigurationOverride override = new FileConfigurationOverride(). + withData( new File( DATA_DIR, "qi4j-data" ) ). + withLog( new File( DATA_DIR, "qi4j-logs" ) ). + withTemporary( new File( DATA_DIR, "qi4j-temp" ) ); + module.services( FileConfigurationService.class ). + setMetaInfo( override ); + + // Entities & Values + module.entities( TestEntity.class, TestEntity2.class ); + } + + @Test + public void testManyAssociation() + throws Exception + { + long count = 10_000L; + TestEntity testEntity; + try( UnitOfWork uow = module.newUnitOfWork() ) + { + testEntity = uow.newEntity( TestEntity.class ); + for( long i = 0; i < count; i++ ) + { + TestEntity2 testEntity2 = module.currentUnitOfWork().newEntity( TestEntity2.class ); + testEntity2.property().set( "test" ); + testEntity.manyAssociation().add( testEntity2 ); + } + uow.complete(); + } + try( UnitOfWork uow = module.newUnitOfWork() ) + { + testEntity = uow.get( testEntity ); + Query<TestEntity2> query = uow.newQuery( + module.newQueryBuilder( TestEntity2.class ).where( + eq( templateFor( TestEntity2.class ).property(), "test" ) + ) + ); + assertThat( query.count(), is( count ) ); + assertThat( testEntity.manyAssociation().count(), is( (int) count ) ); + } + } +} http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/b8efcda1/libraries.gradle ---------------------------------------------------------------------- diff --git a/libraries.gradle b/libraries.gradle index 97e87a0..7903c59 100644 --- a/libraries.gradle +++ b/libraries.gradle @@ -12,7 +12,7 @@ def cxfVersion = '2.5.6' // 2.7.11 Unable to resolve dependencies! - 3.0.0 exist def derbyVersion = '10.10.2.0' def dnsJavaVersion = '2.1.6' def ehcacheVersion = '2.8.3' -def elasticsearchVersion = '1.2.1' +def elasticsearchVersion = '1.3.4' def freemarkerVersion = '2.3.20' def gaeVersion = '1.8.8' def groovyVersion = '2.3.2'
