merging in changes from upstream master
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/8781eaf7 Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/8781eaf7 Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/8781eaf7 Branch: refs/heads/two-dot-o Commit: 8781eaf760bc71b869bc2af4b183c6aa64ca2ab3 Parents: 59f1b4e d8459de Author: Alex Karasulu <[email protected]> Authored: Mon Jan 20 06:41:24 2014 +0200 Committer: Alex Karasulu <[email protected]> Committed: Mon Jan 20 06:41:24 2014 +0200 ---------------------------------------------------------------------- stack/corepersistence/collection/pom.xml | 454 +++++----- .../DynamicCompositeFieldSerializer.java | 48 + .../IdColDynamicCompositeSerializer.java | 87 ++ .../astyanax/MultiTennantColumnFamily.java | 16 +- .../exception/CollectionRuntimeException.java | 18 +- .../collection/guice/CollectionModule.java | 31 +- .../collection/mvcc/entity/ValidationUtils.java | 1 - .../mvcc/stage/write/EntityVersion.java | 62 ++ .../stage/write/EntityVersionSerializer.java | 67 ++ .../mvcc/stage/write/FieldSerializer.java | 102 +++ .../mvcc/stage/write/UniqueValue.java | 37 + .../mvcc/stage/write/UniqueValueImpl.java | 121 +++ .../write/UniqueValueSerializationStrategy.java | 64 ++ .../UniqueValueSerializationStrategyImpl.java | 171 ++++ .../mvcc/stage/write/WriteCommit.java | 64 +- .../collection/mvcc/stage/write/WriteFig.java | 42 + .../mvcc/stage/write/WriteUniqueVerify.java | 159 +++- .../collection/serialization/UniqueUpdate.java | 28 - .../impl/CollectionScopedRowKeySerializer.java | 38 +- .../MvccEntitySerializationStrategyImpl.java | 21 +- .../MvccLogEntrySerializationStrategyImpl.java | 20 +- .../serialization/impl/SerializationModule.java | 2 + .../collection/EntityCollectionManagerIT.java | 61 +- .../changelog/ChangeLogGeneratorImplTest.java | 20 - .../mvcc/stage/AbstractEntityStageTest.java | 17 + .../mvcc/stage/AbstractIdStageTest.java | 17 + .../mvcc/stage/AbstractMvccEntityStageTest.java | 76 +- .../mvcc/stage/InvalidMvccEntityGenerator.java | 118 --- .../mvcc/stage/TestEntityGenerator.java | 17 + .../mvcc/stage/delete/DeleteCommitTest.java | 5 +- .../write/EntityVersionSerializerTest.java | 40 + .../mvcc/stage/write/FieldSerializerTest.java | 47 + ...niqueValueSerializationStrategyImplTest.java | 121 +++ .../mvcc/stage/write/WriteCommitTest.java | 26 +- .../mvcc/stage/write/WriteStartTest.java | 17 + .../mvcc/stage/write/WriteUniqueVerifyTest.java | 66 +- .../impl/ScopedRowKeySerializerTest.java | 7 +- .../collection/util/InvalidEntityGenerator.java | 31 +- .../collection/util/InvalidIdGenerator.java | 69 +- .../util/InvalidMvccEntityGenerator.java | 144 +++ .../src/test/resources/log4j.properties | 5 +- stack/corepersistence/graph/pom.xml | 106 +-- .../DynamicCompositeFieldSerializer.java | 53 -- .../IdColDynamicCompositeSerializer.java | 93 -- .../impl/EdgeMetadataSerializationImpl.java | 3 +- .../impl/EdgeSerializationImpl.java | 2 +- .../persistence/graph/EdgeManagerIT.java | 8 +- .../persistence/model/field/AbstractField.java | 43 +- .../persistence/model/field/BooleanField.java | 22 +- .../persistence/model/field/DoubleField.java | 33 +- .../usergrid/persistence/model/field/Field.java | 5 + .../persistence/model/field/IntegerField.java | 33 +- .../persistence/model/field/LongField.java | 35 +- .../persistence/model/field/StringField.java | 36 +- .../persistence/model/field/UUIDField.java | 37 +- .../persistence/model/field/EntityTest.java | 4 +- stack/corepersistence/pom.xml | 108 ++- stack/pom.xml | 1 + stack/query-validator/.gitignore | 1 + stack/query-validator/README.md | 3 + stack/query-validator/pom.xml | 235 +++-- stack/query-validator/sql.db | Bin 4096 -> 0 bytes .../query/validator/ApiServerRunner.java | 49 +- .../validator/DefaultQueryResultsMatcher.java | 32 + .../usergrid/query/validator/QueryEntity.java | 31 +- .../usergrid/query/validator/QueryRequest.java | 31 +- .../usergrid/query/validator/QueryResponse.java | 22 +- .../query/validator/QueryResultsMatcher.java | 29 + .../usergrid/query/validator/QueryRunner.java | 23 +- .../validator/QueryValidationConfiguration.java | 22 +- .../query/validator/QueryValidator.java | 33 +- .../usergrid/query/validator/SqliteRunner.java | 60 +- .../usergrid-query-validator-context.xml | 16 +- .../query/validator/AbstractQueryIT.java | 133 +++ .../usergrid/query/validator/QueryITSuite.java | 39 + .../query/validator/QueryValidationTest.java | 339 ------- .../query/validator/QueryValidatorRunner.java | 209 ----- .../query/validator/users/UserQueryIT.java | 877 +++++++++++++++++++ .../src/test/resources/log4j.properties | 2 +- .../src/test/resources/project.properties | 1 + .../src/test/resources/user.json | 15 +- .../resources/usergrid-custom-test.properties | 13 +- .../test/resources/usergrid-test-context.xml | 24 +- .../test/java/org/usergrid/rest/ITSetup.java | 9 +- .../java/org/usergrid/rest/TomcatResource.java | 23 +- .../cassandra/ManagementServiceImpl.java | 32 +- 86 files changed, 3860 insertions(+), 1622 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/8781eaf7/stack/corepersistence/collection/pom.xml ---------------------------------------------------------------------- diff --cc stack/corepersistence/collection/pom.xml index e36371f,c004aa9..29a0c6b --- a/stack/corepersistence/collection/pom.xml +++ b/stack/corepersistence/collection/pom.xml @@@ -2,241 -2,178 +2,241 @@@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <artifactId>persistence</artifactId> - <groupId>org.apache.usergrid</groupId> - <version>1.0-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <description>The module for handling all scope I/O</description> + + <properties> + <guice.version>3.0</guice.version> + <guicyfig.version>3.3-SNAPSHOT</guicyfig.version> + <slf4j.version>1.7.2</slf4j.version> + <log4j.version>1.2.17</log4j.version> + <chop.version>1.0-SNAPSHOT</chop.version> + </properties> + - <artifactId>collection</artifactId> - - <build> - <resources> - <resource> - <directory>src/main/resources</directory> - <filtering>true</filtering> - <includes> - <include>**/*.properties</include> - </includes> - </resource> - </resources> - - <testResources> - <testResource> - <directory>src/test/resources</directory> - <filtering>true</filtering> - <includes> - <include>**/*.properties</include> - </includes> - </testResource> - </testResources> - - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <version>2.4</version> - <executions> - <execution> - <goals> - <goal>test-jar</goal> - </goals> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.safehaus.chop</groupId> - <artifactId>chop-maven-plugin</artifactId> + <parent> + <artifactId>persistence</artifactId> + <groupId>org.apache.usergrid</groupId> <version>1.0-SNAPSHOT</version> - - <!-- - NOTE: you should be putting most of these variables into your settings.xml - as an automatically activated profile. - --> - - <configuration> - <accessKey>${aws.s3.key}</accessKey> - <secretKey>${aws.s3.secret}</secretKey> - <availabilityZone>${availabilityZone}</availabilityZone> - <bucketName>${aws.s3.bucket}</bucketName> - <managerAppUsername>admin</managerAppUsername> - <managerAppPassword>${manager.app.password}</managerAppPassword> - <testPackageBase>org.apache.usergrid</testPackageBase> - <runnerSSHKeyFile>${runner.ssh.key.file}</runnerSSHKeyFile> - <failIfCommitNecessary>false</failIfCommitNecessary> - <amiID>${ami.id}</amiID> - <instanceType>m1.large</instanceType> - <resultsDirectory>${resultsDirectory}</resultsDirectory> - <dumpType>${dumpType}</dumpType> - <coldRestartTomcat>true</coldRestartTomcat> - <awsSecurityGroup>${security.group}</awsSecurityGroup> - <runnerKeyPairName>${runner.keypair.name}</runnerKeyPairName> - <runnerCount>12</runnerCount> - <securityGroupExceptions> - <!-- - Add your own IP address as an exception to allow access - but please do this in the settings.xml file .. essentially - all parameters should be in the settings.xml file. - --> - <param>${myip.address}/32:8080</param> - <param>${myip.address}/32:22</param> - </securityGroupExceptions> - </configuration> - </plugin> - - </plugins> - </build> - - <dependencies> - - <!-- Depends on the basic models --> - <dependency> - <groupId>${project.parent.groupId}</groupId> - <artifactId>model</artifactId> - <version>${project.version}</version> - </dependency> - - <dependency> - <groupId>com.netflix.astyanax</groupId> - <artifactId>astyanax-core</artifactId> - <version>${astyanax.version}</version> - </dependency> - - <dependency> - <groupId>com.netflix.astyanax</groupId> - <artifactId>astyanax-thrift</artifactId> - <version>${astyanax.version}</version> - </dependency> - - <dependency> - <groupId>com.netflix.astyanax</groupId> - <artifactId>astyanax-cassandra</artifactId> - <version>${astyanax.version}</version> - <exclusions> - <exclusion> - <artifactId>servlet-api</artifactId> - <groupId>org.mortbay.jetty</groupId> - </exclusion> - </exclusions> - </dependency> - - <dependency> - <groupId>org.safehaus.guicyfig</groupId> - <artifactId>guicyfig</artifactId> - <version>${guicyfig.version}</version> - </dependency> - - <dependency> - <groupId>org.safehaus.chop</groupId> - <artifactId>chop-api</artifactId> - <version>${chop.version}</version> - </dependency> - - <dependency> - <groupId>org.jukito</groupId> - <artifactId>jukito</artifactId> - <version>${jukito.version}</version> - <scope>test</scope> - </dependency> - - <!-- lang utils for setting uuids etc --> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - <version>3.1</version> - </dependency> - <!-- Serialization libraries --> - - <dependency> - <groupId>org.codehaus.jackson</groupId> - <artifactId>jackson-smile</artifactId> - <version>1.9.13</version> - </dependency> - - <dependency> - <groupId>com.esotericsoftware.kryo</groupId> - <artifactId>kryo</artifactId> - <version>2.22</version> - </dependency> - - <!-- helper serializers for kryo --> - <dependency> - <groupId>de.javakaffee</groupId> - <artifactId>kryo-serializers</artifactId> - <version>0.26</version> - </dependency> - - <!-- Google Guice --> - <dependency> - <groupId>com.google.inject</groupId> - <artifactId>guice</artifactId> - <version>${guice.version}</version> - </dependency> - - <!-- RX java --> - - - <dependency> - <groupId>com.netflix.rxjava</groupId> - <artifactId>rxjava-core</artifactId> - <version>0.15.1</version> - </dependency> - - <dependency> - <groupId>com.google.inject.extensions</groupId> - <artifactId>guice-multibindings</artifactId> - <version>${guice.version}</version> - </dependency> - - <dependency> - <groupId>com.google.inject.extensions</groupId> - <artifactId>guice-assistedinject</artifactId> - <version>${guice.version}</version> - </dependency> - - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <version>${slf4j.version}</version> - </dependency> - - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> - <version>${slf4j.version}</version> - </dependency> - - <dependency> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - <version>${log4j.version}</version> - </dependency> - - <dependency> - <groupId>com.netflix.hystrix</groupId> - <artifactId>hystrix-core</artifactId> - <version>${hystrix.version}</version> - </dependency> - <!-- Google Guice Integration Test Injectors --> - - <dependency> - <groupId>${project.parent.groupId}</groupId> - <artifactId>testutils</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - - </dependencies> - + </parent> + <modelVersion>4.0.0</modelVersion> + <description>The module for handling all scope I/O</description> + + <artifactId>collection</artifactId> + + <build> + <resources> + <resource> + <directory>src/main/resources</directory> + <filtering>true</filtering> + <includes> + <include>**/*.properties</include> + </includes> + </resource> + </resources> + + <testResources> + <testResource> + <directory>src/test/resources</directory> + <filtering>true</filtering> + <includes> + <include>**/*.properties</include> + </includes> + </testResource> + </testResources> + + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <version>2.4</version> + <executions> + <execution> + <goals> + <goal>test-jar</goal> + </goals> + </execution> + </executions> + </plugin> - </plugins> ++ ++ <plugin> ++ <groupId>org.safehaus.chop</groupId> ++ <artifactId>chop-maven-plugin</artifactId> ++ <version>1.0-SNAPSHOT</version> ++ ++ <!-- ++ NOTE: you should be putting most of these variables into your settings.xml ++ as an automatically activated profile. ++ --> ++ ++ <configuration> ++ <accessKey>${aws.s3.key}</accessKey> ++ <secretKey>${aws.s3.secret}</secretKey> ++ <availabilityZone>${availabilityZone}</availabilityZone> ++ <bucketName>${aws.s3.bucket}</bucketName> ++ <managerAppUsername>admin</managerAppUsername> ++ <managerAppPassword>${manager.app.password}</managerAppPassword> ++ <testPackageBase>org.apache.usergrid</testPackageBase> ++ <runnerSSHKeyFile>${runner.ssh.key.file}</runnerSSHKeyFile> ++ <failIfCommitNecessary>false</failIfCommitNecessary> ++ <amiID>${ami.id}</amiID> ++ <instanceType>m1.large</instanceType> ++ <resultsDirectory>${resultsDirectory}</resultsDirectory> ++ <dumpType>${dumpType}</dumpType> ++ <coldRestartTomcat>true</coldRestartTomcat> ++ <awsSecurityGroup>${security.group}</awsSecurityGroup> ++ <runnerKeyPairName>${runner.keypair.name}</runnerKeyPairName> ++ <runnerCount>12</runnerCount> ++ <securityGroupExceptions> ++ <!-- ++ Add your own IP address as an exception to allow access ++ but please do this in the settings.xml file .. essentially ++ all parameters should be in the settings.xml file. ++ --> ++ <param>${myip.address}/32:8080</param> ++ <param>${myip.address}/32:22</param> ++ </securityGroupExceptions> ++ </configuration> ++ </plugin> ++ </plugins> + </build> + + <dependencies> + ++ <dependency> ++ <groupId>org.safehaus.chop</groupId> ++ <artifactId>chop-api</artifactId> ++ <version>${chop.version}</version> ++ </dependency> ++ ++ <!-- Google Guice Integration Test Injectors --> ++ ++ <dependency> ++ <groupId>${project.parent.groupId}</groupId> ++ <artifactId>testutils</artifactId> ++ <version>${project.version}</version> ++ <scope>test</scope> ++ </dependency> ++ + <!-- Depends on the basic models --> + <dependency> + <groupId>${project.parent.groupId}</groupId> + <artifactId>model</artifactId> + <version>${project.version}</version> + </dependency> + + <dependency> + <groupId>com.netflix.astyanax</groupId> + <artifactId>astyanax-core</artifactId> + <version>${astyanax.version}</version> + </dependency> + + <dependency> + <groupId>com.netflix.astyanax</groupId> + <artifactId>astyanax-thrift</artifactId> + <version>${astyanax.version}</version> + </dependency> + + <dependency> + <groupId>com.netflix.astyanax</groupId> + <artifactId>astyanax-cassandra</artifactId> + <version>${astyanax.version}</version> + <exclusions> + <exclusion> + <artifactId>servlet-api</artifactId> + <groupId>org.mortbay.jetty</groupId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.safehaus.guicyfig</groupId> + <artifactId>guicyfig</artifactId> + <version>${guicyfig.version}</version> + </dependency> + + <dependency> + <groupId>org.jukito</groupId> + <artifactId>jukito</artifactId> + <version>${jukito.version}</version> + <scope>test</scope> + </dependency> + + <!-- lang utils for setting uuids etc --> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <version>3.1</version> + </dependency> + <!-- Serialization libraries --> + + <dependency> + <groupId>org.codehaus.jackson</groupId> + <artifactId>jackson-smile</artifactId> + <version>1.9.13</version> + </dependency> + + <dependency> + <groupId>com.esotericsoftware.kryo</groupId> + <artifactId>kryo</artifactId> + <version>2.22</version> + </dependency> + + <!-- helper serializers for kryo --> + <dependency> + <groupId>de.javakaffee</groupId> + <artifactId>kryo-serializers</artifactId> + <version>0.26</version> + </dependency> + + <!-- Google Guice --> + <dependency> + <groupId>com.google.inject</groupId> + <artifactId>guice</artifactId> + <version>${guice.version}</version> + </dependency> + + <!-- RX java --> + + + <dependency> + <groupId>com.netflix.rxjava</groupId> + <artifactId>rxjava-core</artifactId> + <version>0.15.1</version> + </dependency> + + <dependency> + <groupId>com.google.inject.extensions</groupId> + <artifactId>guice-multibindings</artifactId> + <version>${guice.version}</version> + </dependency> + + <dependency> + <groupId>com.google.inject.extensions</groupId> + <artifactId>guice-assistedinject</artifactId> + <version>${guice.version}</version> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>${slf4j.version}</version> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>${slf4j.version}</version> + </dependency> + + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>${log4j.version}</version> + </dependency> + + <dependency> + <groupId>com.netflix.hystrix</groupId> + <artifactId>hystrix-core</artifactId> + <version>${hystrix.version}</version> + </dependency> + + </dependencies> - </project> http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/8781eaf7/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.java ---------------------------------------------------------------------- diff --cc stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.java index c35464b,294c5fc..624a039 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.java +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.java @@@ -1,9 -1,22 +1,25 @@@ + /* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. The ASF licenses this file to You + * 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. For additional information regarding + * copyright in this work, please see the NOTICE file in the top level + * directory of this distribution. + */ package org.apache.usergrid.persistence.collection.guice; - +import java.io.IOException; + +import org.safehaus.guicyfig.Env; import org.safehaus.guicyfig.GuicyFigModule; import org.apache.usergrid.persistence.collection.EntityCollectionManager; @@@ -21,10 -33,10 +37,13 @@@ import org.apache.usergrid.persistence. import org.apache.usergrid.persistence.collection.service.impl.ServiceModule; import com.google.inject.AbstractModule; +import com.google.inject.Guice; +import com.google.inject.Injector; import com.google.inject.assistedinject.FactoryModuleBuilder; +import com.netflix.config.ConfigurationManager; + import org.apache.usergrid.persistence.collection.mvcc.stage.write.UniqueValueSerializationStrategy; + import org.apache.usergrid.persistence.collection.mvcc.stage.write.UniqueValueSerializationStrategyImpl; + import org.apache.usergrid.persistence.collection.mvcc.stage.write.WriteFig; import rx.Scheduler; http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/8781eaf7/stack/corepersistence/collection/src/test/resources/log4j.properties ---------------------------------------------------------------------- diff --cc stack/corepersistence/collection/src/test/resources/log4j.properties index bf81401,8a482db..eaf889c --- a/stack/corepersistence/collection/src/test/resources/log4j.properties +++ b/stack/corepersistence/collection/src/test/resources/log4j.properties @@@ -1,13 -1,8 +1,14 @@@ # suppress inspection "UnusedProperty" for whole file - log4j.rootLogger=DEBUG,stdout - log4j.rootCategory=DEBUG,stdout + log4j.rootLogger=INFO,standard -log4j.appender.standard=org.apache.log4j.ConsoleAppender -log4j.appender.standard.layout=org.apache.log4j.PatternLayout -log4j.appender.standard.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %c{3}.%M(%L)<%t>- %m%n +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %c{3}.%M(%L)<%t>- %m%n + +log4j.logger.org.safehaus.chop.plugin=DEBUG +log4j.logger.org.safehaus.guicyfig=ERROR +log4j.logger.org.safehaus.chop.api.store.amazon=DEBUG +log4j.logger.org.apache.http=ERROR +log4j.logger.com.amazonaws.request=ERROR + + log4j.logger.org.apache.usergrid=DEBUG http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/8781eaf7/stack/corepersistence/model/src/test/java/org/apache/usergrid/persistence/model/field/EntityTest.java ---------------------------------------------------------------------- diff --cc stack/corepersistence/model/src/test/java/org/apache/usergrid/persistence/model/field/EntityTest.java index c04d807,c04d807..c450263 --- a/stack/corepersistence/model/src/test/java/org/apache/usergrid/persistence/model/field/EntityTest.java +++ b/stack/corepersistence/model/src/test/java/org/apache/usergrid/persistence/model/field/EntityTest.java @@@ -14,8 -14,8 +14,8 @@@ import org.apache.usergrid.persistence. import org.apache.usergrid.persistence.model.entity.SimpleId; import org.apache.usergrid.persistence.model.util.UUIDGenerator; --import static junit.framework.Assert.assertEquals; --import static junit.framework.Assert.assertSame; ++import static junit.framework.TestCase.assertEquals; ++import static junit.framework.TestCase.assertSame; import static org.junit.Assert.assertTrue;
