STORM-2698: Upgrade Mockito and Hamcrest to latest versions
Project: http://git-wip-us.apache.org/repos/asf/storm/repo Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/3503dcea Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/3503dcea Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/3503dcea Branch: refs/heads/master Commit: 3503dcea62c9bb9d004388773705ad362e7cc5dd Parents: 70d8ba9 Author: Stig Rohde Døssing <s...@apache.org> Authored: Sun Oct 8 01:19:26 2017 +0200 Committer: Stig Rohde Døssing <s...@apache.org> Committed: Mon Oct 9 07:21:21 2017 +0200 ---------------------------------------------------------------------- examples/storm-starter/pom.xml | 9 +- external/storm-cassandra/pom.xml | 8 +- external/storm-elasticsearch/pom.xml | 13 +- .../elasticsearch/bolt/EsLookupBoltTest.java | 1 - .../elasticsearch/bolt/EsPercolateBoltTest.java | 13 +- external/storm-hbase/pom.xml | 7 +- external/storm-hdfs/pom.xml | 7 +- external/storm-hive/pom.xml | 10 +- external/storm-kafka-client/pom.xml | 9 +- .../apache/storm/kafka/bolt/KafkaBoltTest.java | 9 +- .../storm/kafka/spout/KafkaSpoutCommitTest.java | 10 +- external/storm-kafka/pom.xml | 8 +- .../org/apache/storm/kafka/bolt/KafkaBolt.java | 2 +- .../apache/storm/kafka/bolt/KafkaBoltTest.java | 15 +- external/storm-mongodb/pom.xml | 7 +- external/storm-opentsdb/pom.xml | 7 +- external/storm-redis/pom.xml | 7 +- pom.xml | 18 +- sql/storm-sql-core/pom.xml | 7 +- sql/storm-sql-external/storm-sql-hdfs/pom.xml | 7 +- .../sql/hdfs/TestHdfsDataSourcesProvider.java | 140 +++++++------- sql/storm-sql-external/storm-sql-kafka/pom.xml | 7 +- .../sql/kafka/TestKafkaDataSourcesProvider.java | 136 +++++++------- .../storm-sql-mongodb/pom.xml | 7 +- .../mongodb/TestMongoDataSourcesProvider.java | 121 ++++++------ sql/storm-sql-external/storm-sql-redis/pom.xml | 7 +- .../sql/redis/TestRedisDataSourcesProvider.java | 188 ++++++++++--------- sql/storm-sql-runtime/pom.xml | 7 +- storm-client/pom.xml | 8 +- .../storm/grouping/PartialKeyGroupingTest.java | 2 +- .../PersistentWindowedBoltExecutorTest.java | 29 ++- .../topology/StatefulBoltExecutorTest.java | 39 ++-- .../windowing/persistence/WindowStateTest.java | 10 - storm-core/pom.xml | 8 +- .../test/clj/org/apache/storm/cluster_test.clj | 2 +- .../test/clj/org/apache/storm/drpc_test.clj | 14 +- storm-server/pom.xml | 6 +- .../storm/daemon/supervisor/BasicContainer.java | 2 +- .../storm/localizer/AsyncLocalizerTest.java | 13 +- storm-webapp/pom.xml | 11 +- .../handler/LogviewerLogSearchHandlerTest.java | 27 +-- .../daemon/logviewer/utils/LogCleanerTest.java | 20 +- 42 files changed, 510 insertions(+), 468 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/examples/storm-starter/pom.xml ---------------------------------------------------------------------- diff --git a/examples/storm-starter/pom.xml b/examples/storm-starter/pom.xml index e95958d..d12062d 100644 --- a/examples/storm-starter/pom.xml +++ b/examples/storm-starter/pom.xml @@ -51,9 +51,12 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> <dependency> <groupId>org.easytesting</groupId> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-cassandra/pom.xml ---------------------------------------------------------------------- diff --git a/external/storm-cassandra/pom.xml b/external/storm-cassandra/pom.xml index 9a7d683..d98824c 100644 --- a/external/storm-cassandra/pom.xml +++ b/external/storm-cassandra/pom.xml @@ -117,9 +117,11 @@ <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <version>1.10.19</version> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-elasticsearch/pom.xml ---------------------------------------------------------------------- diff --git a/external/storm-elasticsearch/pom.xml b/external/storm-elasticsearch/pom.xml index 72d2639..c6371a4 100644 --- a/external/storm-elasticsearch/pom.xml +++ b/external/storm-elasticsearch/pom.xml @@ -86,12 +86,6 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-all</artifactId> - <version>1.3</version> - <scope>test</scope> - </dependency> - <dependency> <groupId>com.google.guava</groupId> <artifactId>guava-testlib</artifactId> <version>${guava.version}</version> @@ -99,8 +93,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> <dependency> <groupId>org.elasticsearch</groupId> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-elasticsearch/src/test/java/org/apache/storm/elasticsearch/bolt/EsLookupBoltTest.java ---------------------------------------------------------------------- diff --git a/external/storm-elasticsearch/src/test/java/org/apache/storm/elasticsearch/bolt/EsLookupBoltTest.java b/external/storm-elasticsearch/src/test/java/org/apache/storm/elasticsearch/bolt/EsLookupBoltTest.java index c68a4da..786bab1 100644 --- a/external/storm-elasticsearch/src/test/java/org/apache/storm/elasticsearch/bolt/EsLookupBoltTest.java +++ b/external/storm-elasticsearch/src/test/java/org/apache/storm/elasticsearch/bolt/EsLookupBoltTest.java @@ -92,7 +92,6 @@ public class EsLookupBoltTest extends AbstractEsBoltTest<EsLookupBolt> { when(tupleMapper.getIndex(tuple)).thenReturn(index); when(tupleMapper.getType(tuple)).thenReturn(type); when(tupleMapper.getId(tuple)).thenReturn(documentId); - when(output.toValues(any(Response.class))).thenReturn(Collections.singleton(new Values(""))); } private void makeRequestAndThrow(Exception exception) throws IOException { http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-elasticsearch/src/test/java/org/apache/storm/elasticsearch/bolt/EsPercolateBoltTest.java ---------------------------------------------------------------------- diff --git a/external/storm-elasticsearch/src/test/java/org/apache/storm/elasticsearch/bolt/EsPercolateBoltTest.java b/external/storm-elasticsearch/src/test/java/org/apache/storm/elasticsearch/bolt/EsPercolateBoltTest.java index f994f8f..135089e 100644 --- a/external/storm-elasticsearch/src/test/java/org/apache/storm/elasticsearch/bolt/EsPercolateBoltTest.java +++ b/external/storm-elasticsearch/src/test/java/org/apache/storm/elasticsearch/bolt/EsPercolateBoltTest.java @@ -17,20 +17,24 @@ */ package org.apache.storm.elasticsearch.bolt; -import static org.mockito.Matchers.any; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import org.apache.storm.elasticsearch.common.EsConfig; import org.apache.storm.elasticsearch.common.EsTestUtil; +import org.apache.storm.elasticsearch.response.PercolateResponse; import org.apache.storm.testing.IntegrationTest; import org.apache.storm.tuple.Tuple; import org.apache.storm.tuple.Values; -import org.elasticsearch.action.percolate.PercolateResponse; import org.elasticsearch.client.ResponseException; import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; +import org.mockito.ArgumentCaptor; @Category(IntegrationTest.class) public class EsPercolateBoltTest extends AbstractEsBoltIntegrationTest<EsPercolateBolt> { @@ -57,7 +61,10 @@ public class EsPercolateBoltTest extends AbstractEsBoltIntegrationTest<EsPercola bolt.execute(tuple); verify(outputCollector).ack(tuple); - verify(outputCollector).emit(new Values(source, any(PercolateResponse.Match.class))); + ArgumentCaptor<Values> emitCaptor = ArgumentCaptor.forClass(Values.class); + verify(outputCollector).emit(emitCaptor.capture()); + assertThat(emitCaptor.getValue().get(0), is(source)); + assertThat(emitCaptor.getValue().get(1), instanceOf(PercolateResponse.Match.class)); } @Test http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-hbase/pom.xml ---------------------------------------------------------------------- diff --git a/external/storm-hbase/pom.xml b/external/storm-hbase/pom.xml index b4f558a..2c97498 100644 --- a/external/storm-hbase/pom.xml +++ b/external/storm-hbase/pom.xml @@ -109,8 +109,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> </dependencies> <build> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-hdfs/pom.xml ---------------------------------------------------------------------- diff --git a/external/storm-hdfs/pom.xml b/external/storm-hdfs/pom.xml index 23b8ed7..03488a7 100644 --- a/external/storm-hdfs/pom.xml +++ b/external/storm-hdfs/pom.xml @@ -180,8 +180,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-hive/pom.xml ---------------------------------------------------------------------- diff --git a/external/storm-hive/pom.xml b/external/storm-hive/pom.xml index 24ca2cc..62979f0 100644 --- a/external/storm-hive/pom.xml +++ b/external/storm-hive/pom.xml @@ -135,10 +135,12 @@ </exclusions> </dependency> <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <version>1.9.0</version> - <scope>test</scope> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> <dependency> <groupId>org.apache.thrift</groupId> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-kafka-client/pom.xml ---------------------------------------------------------------------- diff --git a/external/storm-kafka-client/pom.xml b/external/storm-kafka-client/pom.xml index c3bd457..816f5dd 100644 --- a/external/storm-kafka-client/pom.xml +++ b/external/storm-kafka-client/pom.xml @@ -79,17 +79,10 @@ <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-core</artifactId> - <scope>test</scope> </dependency> <dependency> <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-library</artifactId> - <scope>test</scope> + <artifactId>java-hamcrest</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-kafka-client/src/test/java/org/apache/storm/kafka/bolt/KafkaBoltTest.java ---------------------------------------------------------------------- diff --git a/external/storm-kafka-client/src/test/java/org/apache/storm/kafka/bolt/KafkaBoltTest.java b/external/storm-kafka-client/src/test/java/org/apache/storm/kafka/bolt/KafkaBoltTest.java index 0e3d028..d84d803 100644 --- a/external/storm-kafka-client/src/test/java/org/apache/storm/kafka/bolt/KafkaBoltTest.java +++ b/external/storm-kafka-client/src/test/java/org/apache/storm/kafka/bolt/KafkaBoltTest.java @@ -17,8 +17,8 @@ */ package org.apache.storm.kafka.bolt; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.argThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -75,9 +75,8 @@ public class KafkaBoltTest { bolt.execute(testTuple); verify(producer).send(argThat(new ArgumentMatcher<ProducerRecord<String, String>>() { @Override - public boolean matches(Object argument) { - LOG.info("GOT {} ->", argument); - ProducerRecord<String, String> arg = (ProducerRecord<String, String>) argument; + public boolean matches(ProducerRecord<String, String> arg) { + LOG.info("GOT {} ->", arg); LOG.info(" {} {} {}", arg.topic(), arg.key(), arg.value()); return "MY_TOPIC".equals(arg.topic()) && "KEY".equals(arg.key()) && http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-kafka-client/src/test/java/org/apache/storm/kafka/spout/KafkaSpoutCommitTest.java ---------------------------------------------------------------------- diff --git a/external/storm-kafka-client/src/test/java/org/apache/storm/kafka/spout/KafkaSpoutCommitTest.java b/external/storm-kafka-client/src/test/java/org/apache/storm/kafka/spout/KafkaSpoutCommitTest.java index 99a7542..a356cb5 100644 --- a/external/storm-kafka-client/src/test/java/org/apache/storm/kafka/spout/KafkaSpoutCommitTest.java +++ b/external/storm-kafka-client/src/test/java/org/apache/storm/kafka/spout/KafkaSpoutCommitTest.java @@ -17,8 +17,6 @@ package org.apache.storm.kafka.spout; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.*; -import static org.mockito.Mockito.*; import java.util.ArrayList; import java.util.Collections; @@ -42,7 +40,13 @@ import org.mockito.MockitoAnnotations; import static org.apache.storm.kafka.spout.config.builder.SingleTopicKafkaSpoutConfiguration.createKafkaSpoutConfigBuilder; -import org.mockito.stubbing.OngoingStubbing; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.anyObject; +import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; public class KafkaSpoutCommitTest { http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-kafka/pom.xml ---------------------------------------------------------------------- diff --git a/external/storm-kafka/pom.xml b/external/storm-kafka/pom.xml index 14fd609..aa0454b 100644 --- a/external/storm-kafka/pom.xml +++ b/external/storm-kafka/pom.xml @@ -72,9 +72,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <version>1.9.0</version> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> <dependency> <groupId>org.apache.curator</groupId> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-kafka/src/jvm/org/apache/storm/kafka/bolt/KafkaBolt.java ---------------------------------------------------------------------- diff --git a/external/storm-kafka/src/jvm/org/apache/storm/kafka/bolt/KafkaBolt.java b/external/storm-kafka/src/jvm/org/apache/storm/kafka/bolt/KafkaBolt.java index 5cb6129..a4c255a 100644 --- a/external/storm-kafka/src/jvm/org/apache/storm/kafka/bolt/KafkaBolt.java +++ b/external/storm-kafka/src/jvm/org/apache/storm/kafka/bolt/KafkaBolt.java @@ -76,7 +76,7 @@ public class KafkaBolt<K, V> extends BaseTickTupleAwareRichBolt { private boolean async = true; public KafkaBolt() {} - + public KafkaBolt<K,V> withTupleToKafkaMapper(TupleToKafkaMapper<K,V> mapper) { this.mapper = mapper; return this; http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-kafka/src/test/org/apache/storm/kafka/bolt/KafkaBoltTest.java ---------------------------------------------------------------------- diff --git a/external/storm-kafka/src/test/org/apache/storm/kafka/bolt/KafkaBoltTest.java b/external/storm-kafka/src/test/org/apache/storm/kafka/bolt/KafkaBoltTest.java index cebc261..5f3753d 100644 --- a/external/storm-kafka/src/test/org/apache/storm/kafka/bolt/KafkaBoltTest.java +++ b/external/storm-kafka/src/test/org/apache/storm/kafka/bolt/KafkaBoltTest.java @@ -44,7 +44,6 @@ import org.apache.kafka.clients.producer.ProducerRecord; import org.junit.*; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.mockito.internal.util.reflection.Whitebox; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.apache.storm.kafka.*; @@ -60,6 +59,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.*; +import java.lang.reflect.Field; + public class KafkaBoltTest { private static final String TEST_TOPIC = "test-topic"; @@ -120,7 +121,7 @@ public class KafkaBoltTest { /* test synchronous sending */ @Test - public void executeWithByteArrayKeyAndMessageSync() { + public void executeWithByteArrayKeyAndMessageSync() throws Exception { boolean async = false; boolean fireAndForget = false; bolt = generateDefaultSerializerBolt(async, fireAndForget, null); @@ -136,7 +137,7 @@ public class KafkaBoltTest { /* test asynchronous sending (default) */ @Test - public void executeWithByteArrayKeyAndMessageAsync() { + public void executeWithByteArrayKeyAndMessageAsync() throws Exception { boolean async = true; boolean fireAndForget = false; String keyString = "test-key"; @@ -165,7 +166,7 @@ public class KafkaBoltTest { /* test with fireAndForget option enabled */ @Test - public void executeWithByteArrayKeyAndMessageFire() { + public void executeWithByteArrayKeyAndMessageFire() throws Exception { boolean async = true; boolean fireAndForget = true; bolt = generateDefaultSerializerBolt(async, fireAndForget, null); @@ -216,7 +217,7 @@ public class KafkaBoltTest { } private KafkaBolt generateDefaultSerializerBolt(boolean async, boolean fireAndForget, - KafkaProducer<?, ?> mockProducer) { + KafkaProducer<?, ?> mockProducer) throws Exception { Properties props = new Properties(); props.put("acks", "1"); props.put("bootstrap.servers", broker.getBrokerConnectionString()); @@ -229,7 +230,9 @@ public class KafkaBoltTest { bolt.setAsync(async); bolt.setFireAndForget(fireAndForget); if (mockProducer != null) { - Whitebox.setInternalState(bolt, "producer", mockProducer); + Field producerField = bolt.getClass().getDeclaredField("producer"); + producerField.setAccessible(true); + producerField.set(bolt, mockProducer); } return bolt; } http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-mongodb/pom.xml ---------------------------------------------------------------------- diff --git a/external/storm-mongodb/pom.xml b/external/storm-mongodb/pom.xml index 886d213..b374957 100644 --- a/external/storm-mongodb/pom.xml +++ b/external/storm-mongodb/pom.xml @@ -63,8 +63,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-opentsdb/pom.xml ---------------------------------------------------------------------- diff --git a/external/storm-opentsdb/pom.xml b/external/storm-opentsdb/pom.xml index f99c6dc..0f9e0c8 100644 --- a/external/storm-opentsdb/pom.xml +++ b/external/storm-opentsdb/pom.xml @@ -90,8 +90,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/external/storm-redis/pom.xml ---------------------------------------------------------------------- diff --git a/external/storm-redis/pom.xml b/external/storm-redis/pom.xml index 1023efd..9abf9ab 100644 --- a/external/storm-redis/pom.xml +++ b/external/storm-redis/pom.xml @@ -79,8 +79,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index bf6bf1c..85d575f 100644 --- a/pom.xml +++ b/pom.xml @@ -270,7 +270,7 @@ <metrics.version>3.1.0</metrics.version> <clojure.tools.nrepl.version>0.2.3</clojure.tools.nrepl.version> <clojure-complete.version>0.2.3</clojure-complete.version> - <mockito.version>1.9.5</mockito.version> + <mockito.version>2.10.0</mockito.version> <conjure.version>2.1.3</conjure.version> <zookeeper.version>3.4.6</zookeeper.version> <clojure-data-codec.version>0.1.0</clojure-data-codec.version> @@ -286,7 +286,7 @@ <junit.version>4.11</junit.version> <metrics-clojure.version>2.5.1</metrics-clojure.version> <hdrhistogram.version>2.1.7</hdrhistogram.version> - <hamcrest.version>1.3</hamcrest.version> + <hamcrest.version>2.0.0.0</hamcrest.version> <cassandra.version>2.1.7</cassandra.version> <druid.version>0.8.2</druid.version> <elasticsearch.version>5.2.2</elasticsearch.version> @@ -990,23 +990,11 @@ </dependency> <dependency> <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-core</artifactId> + <artifactId>java-hamcrest</artifactId> <version>${hamcrest.version}</version> <scope>test</scope> </dependency> <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-library</artifactId> - <version>${hamcrest.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <version>${mockito.version}</version> - <scope>test</scope> - </dependency> - <dependency> <groupId>org.clojars.runa</groupId> <artifactId>conjure</artifactId> <version>${conjure.version}</version> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/sql/storm-sql-core/pom.xml ---------------------------------------------------------------------- diff --git a/sql/storm-sql-core/pom.xml b/sql/storm-sql-core/pom.xml index 8b3035c..1723a5f 100644 --- a/sql/storm-sql-core/pom.xml +++ b/sql/storm-sql-core/pom.xml @@ -93,8 +93,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/sql/storm-sql-external/storm-sql-hdfs/pom.xml ---------------------------------------------------------------------- diff --git a/sql/storm-sql-external/storm-sql-hdfs/pom.xml b/sql/storm-sql-external/storm-sql-hdfs/pom.xml index 1574ed2..4259951 100644 --- a/sql/storm-sql-external/storm-sql-hdfs/pom.xml +++ b/sql/storm-sql-external/storm-sql-hdfs/pom.xml @@ -88,8 +88,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> </dependencies> <build> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/sql/storm-sql-external/storm-sql-hdfs/src/test/org/apache/storm/sql/hdfs/TestHdfsDataSourcesProvider.java ---------------------------------------------------------------------- diff --git a/sql/storm-sql-external/storm-sql-hdfs/src/test/org/apache/storm/sql/hdfs/TestHdfsDataSourcesProvider.java b/sql/storm-sql-external/storm-sql-hdfs/src/test/org/apache/storm/sql/hdfs/TestHdfsDataSourcesProvider.java index 1473438..32e35d5 100644 --- a/sql/storm-sql-external/storm-sql-hdfs/src/test/org/apache/storm/sql/hdfs/TestHdfsDataSourcesProvider.java +++ b/sql/storm-sql-external/storm-sql-hdfs/src/test/org/apache/storm/sql/hdfs/TestHdfsDataSourcesProvider.java @@ -34,7 +34,6 @@ import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.mockito.internal.util.reflection.Whitebox; import java.io.File; import java.io.IOException; @@ -49,81 +48,86 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import java.lang.reflect.Field; + public class TestHdfsDataSourcesProvider { - private static final List<FieldInfo> FIELDS = ImmutableList.of( - new FieldInfo("ID", int.class, true), - new FieldInfo("val", String.class, false)); - private static final Properties TBL_PROPERTIES = new Properties(); - - private static String hdfsURI; - private static MiniDFSCluster hdfsCluster; - - static { - TBL_PROPERTIES.put("hdfs.file.path", "/unittest"); - TBL_PROPERTIES.put("hdfs.file.name", "test1.txt"); - TBL_PROPERTIES.put("hdfs.rotation.time.seconds", "120"); - } - - @Before - public void setup() throws Exception { - Configuration conf = new Configuration(); - conf.set("fs.trash.interval", "10"); - conf.setBoolean("dfs.permissions", true); - File baseDir = new File("./target/hdfs/").getAbsoluteFile(); - FileUtil.fullyDelete(baseDir); - conf.set(MiniDFSCluster.HDFS_MINIDFS_BASEDIR, baseDir.getAbsolutePath()); - - MiniDFSCluster.Builder builder = new MiniDFSCluster.Builder(conf); - hdfsCluster = builder.build(); - hdfsURI = "hdfs://localhost:" + hdfsCluster.getNameNodePort() + "/"; - } - - @After - public void shutDown() throws IOException { - hdfsCluster.shutdown(); - } - - @SuppressWarnings("unchecked") - @Test - public void testHdfsSink() { - ISqlTridentDataSource ds = DataSourcesRegistry.constructTridentDataSource( + + private static final List<FieldInfo> FIELDS = ImmutableList.of( + new FieldInfo("ID", int.class, true), + new FieldInfo("val", String.class, false)); + private static final Properties TBL_PROPERTIES = new Properties(); + + private static String hdfsURI; + private static MiniDFSCluster hdfsCluster; + + static { + TBL_PROPERTIES.put("hdfs.file.path", "/unittest"); + TBL_PROPERTIES.put("hdfs.file.name", "test1.txt"); + TBL_PROPERTIES.put("hdfs.rotation.time.seconds", "120"); + } + + @Before + public void setup() throws Exception { + Configuration conf = new Configuration(); + conf.set("fs.trash.interval", "10"); + conf.setBoolean("dfs.permissions", true); + File baseDir = new File("./target/hdfs/").getAbsoluteFile(); + FileUtil.fullyDelete(baseDir); + conf.set(MiniDFSCluster.HDFS_MINIDFS_BASEDIR, baseDir.getAbsolutePath()); + + MiniDFSCluster.Builder builder = new MiniDFSCluster.Builder(conf); + hdfsCluster = builder.build(); + hdfsURI = "hdfs://localhost:" + hdfsCluster.getNameNodePort() + "/"; + } + + @After + public void shutDown() throws IOException { + hdfsCluster.shutdown(); + } + + @SuppressWarnings("unchecked") + @Test + public void testHdfsSink() throws Exception { + ISqlTridentDataSource ds = DataSourcesRegistry.constructTridentDataSource( URI.create(hdfsURI), null, null, TBL_PROPERTIES, FIELDS); - Assert.assertNotNull(ds); + Assert.assertNotNull(ds); + + ISqlTridentDataSource.SqlTridentConsumer consumer = ds.getConsumer(); - ISqlTridentDataSource.SqlTridentConsumer consumer = ds.getConsumer(); + Assert.assertEquals(HdfsStateFactory.class, consumer.getStateFactory().getClass()); + Assert.assertEquals(HdfsUpdater.class, consumer.getStateUpdater().getClass()); - Assert.assertEquals(HdfsStateFactory.class, consumer.getStateFactory().getClass()); - Assert.assertEquals(HdfsUpdater.class, consumer.getStateUpdater().getClass()); + HdfsState state = (HdfsState) consumer.getStateFactory().makeState(Collections.emptyMap(), null, 0, 1); + StateUpdater stateUpdater = consumer.getStateUpdater(); - HdfsState state = (HdfsState) consumer.getStateFactory().makeState(Collections.emptyMap(), null, 0, 1); - StateUpdater stateUpdater = consumer.getStateUpdater(); + HdfsFileOptions options = mock(HdfsFileOptions.class); + Field optionsField = state.getClass().getDeclaredField("options"); + optionsField.setAccessible(true); + optionsField.set(state, options); - HdfsFileOptions options = mock(HdfsFileOptions.class); - Whitebox.setInternalState(state, "options", options); + List<TridentTuple> tupleList = mockTupleList(); - List<TridentTuple> tupleList = mockTupleList(); + for (TridentTuple t : tupleList) { + stateUpdater.updateState(state, Collections.singletonList(t), null); + try { + verify(options).execute(Collections.singletonList(t)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } - for (TridentTuple t : tupleList) { - stateUpdater.updateState(state, Collections.singletonList(t), null); - try { - verify(options).execute(Collections.singletonList(t)); - } catch (IOException e) { - throw new RuntimeException(e); - } + private static List<TridentTuple> mockTupleList() { + List<TridentTuple> tupleList = new ArrayList<>(); + TridentTuple t0 = mock(TridentTuple.class); + TridentTuple t1 = mock(TridentTuple.class); + doReturn(1).when(t0).get(0); + doReturn(2).when(t1).get(0); + doReturn(Lists.<Object>newArrayList(1, "2")).when(t0).getValues(); + doReturn(Lists.<Object>newArrayList(2, "3")).when(t1).getValues(); + tupleList.add(t0); + tupleList.add(t1); + return tupleList; } - } - - private static List<TridentTuple> mockTupleList() { - List<TridentTuple> tupleList = new ArrayList<>(); - TridentTuple t0 = mock(TridentTuple.class); - TridentTuple t1 = mock(TridentTuple.class); - doReturn(1).when(t0).get(0); - doReturn(2).when(t1).get(0); - doReturn(Lists.<Object>newArrayList(1, "2")).when(t0).getValues(); - doReturn(Lists.<Object>newArrayList(2, "3")).when(t1).getValues(); - tupleList.add(t0); - tupleList.add(t1); - return tupleList; - } } http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/sql/storm-sql-external/storm-sql-kafka/pom.xml ---------------------------------------------------------------------- diff --git a/sql/storm-sql-external/storm-sql-kafka/pom.xml b/sql/storm-sql-external/storm-sql-kafka/pom.xml index 5645da3..97bd87c 100644 --- a/sql/storm-sql-external/storm-sql-kafka/pom.xml +++ b/sql/storm-sql-external/storm-sql-kafka/pom.xml @@ -77,8 +77,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> </dependencies> <build> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/sql/storm-sql-external/storm-sql-kafka/src/test/org/apache/storm/sql/kafka/TestKafkaDataSourcesProvider.java ---------------------------------------------------------------------- diff --git a/sql/storm-sql-external/storm-sql-kafka/src/test/org/apache/storm/sql/kafka/TestKafkaDataSourcesProvider.java b/sql/storm-sql-external/storm-sql-kafka/src/test/org/apache/storm/sql/kafka/TestKafkaDataSourcesProvider.java index 0cde492..c8fb768 100644 --- a/sql/storm-sql-external/storm-sql-kafka/src/test/org/apache/storm/sql/kafka/TestKafkaDataSourcesProvider.java +++ b/sql/storm-sql-external/storm-sql-kafka/src/test/org/apache/storm/sql/kafka/TestKafkaDataSourcesProvider.java @@ -32,7 +32,6 @@ import org.apache.storm.trident.tuple.TridentTuple; import org.junit.Assert; import org.junit.Test; import org.mockito.ArgumentMatcher; -import org.mockito.internal.util.reflection.Whitebox; import java.net.URI; import java.nio.ByteBuffer; @@ -46,80 +45,85 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +import java.lang.reflect.Field; + public class TestKafkaDataSourcesProvider { - private static final List<FieldInfo> FIELDS = ImmutableList.of( - new FieldInfo("ID", int.class, true), - new FieldInfo("val", String.class, false)); - private static final List<String> FIELD_NAMES = ImmutableList.of("ID", "val"); - private static final JsonSerializer SERIALIZER = new JsonSerializer(FIELD_NAMES); - private static final Properties TBL_PROPERTIES = new Properties(); - - static { - Map<String,Object> map = new HashMap<>(); - map.put("bootstrap.servers", "localhost:9092"); - map.put("acks", "1"); - map.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); - map.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); - TBL_PROPERTIES.put("producer", map); - } - - @SuppressWarnings("unchecked") - @Test - public void testKafkaSink() { - ISqlTridentDataSource ds = DataSourcesRegistry.constructTridentDataSource( + + private static final List<FieldInfo> FIELDS = ImmutableList.of( + new FieldInfo("ID", int.class, true), + new FieldInfo("val", String.class, false)); + private static final List<String> FIELD_NAMES = ImmutableList.of("ID", "val"); + private static final JsonSerializer SERIALIZER = new JsonSerializer(FIELD_NAMES); + private static final Properties TBL_PROPERTIES = new Properties(); + + static { + Map<String, Object> map = new HashMap<>(); + map.put("bootstrap.servers", "localhost:9092"); + map.put("acks", "1"); + map.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); + map.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); + TBL_PROPERTIES.put("producer", map); + } + + @SuppressWarnings("unchecked") + @Test + public void testKafkaSink() throws Exception { + ISqlTridentDataSource ds = DataSourcesRegistry.constructTridentDataSource( URI.create("kafka://mock?topic=foo"), null, null, TBL_PROPERTIES, FIELDS); - Assert.assertNotNull(ds); + Assert.assertNotNull(ds); - ISqlTridentDataSource.SqlTridentConsumer consumer = ds.getConsumer(); + ISqlTridentDataSource.SqlTridentConsumer consumer = ds.getConsumer(); - Assert.assertEquals(TridentKafkaStateFactory.class, consumer.getStateFactory().getClass()); - Assert.assertEquals(TridentKafkaUpdater.class, consumer.getStateUpdater().getClass()); + Assert.assertEquals(TridentKafkaStateFactory.class, consumer.getStateFactory().getClass()); + Assert.assertEquals(TridentKafkaUpdater.class, consumer.getStateUpdater().getClass()); - TridentKafkaState state = (TridentKafkaState) consumer.getStateFactory().makeState(Collections.emptyMap(), null, 0, 1); - KafkaProducer producer = mock(KafkaProducer.class); - doReturn(mock(Future.class)).when(producer).send(any(ProducerRecord.class)); - Whitebox.setInternalState(state, "producer", producer); + TridentKafkaState state = (TridentKafkaState) consumer.getStateFactory().makeState(Collections.emptyMap(), null, 0, 1); + KafkaProducer producer = mock(KafkaProducer.class); + doReturn(mock(Future.class)).when(producer).send(any(ProducerRecord.class)); + Field producerField = state.getClass().getDeclaredField("producer"); + producerField.setAccessible(true); + producerField.set(state, producer); - List<TridentTuple> tupleList = mockTupleList(); - for (TridentTuple t : tupleList) { - state.updateState(Collections.singletonList(t), null); - verify(producer).send(argThat(new KafkaMessageMatcher(t))); + List<TridentTuple> tupleList = mockTupleList(); + for (TridentTuple t : tupleList) { + state.updateState(Collections.singletonList(t), null); + verify(producer).send(argThat(new KafkaMessageMatcher(t))); + } + verifyNoMoreInteractions(producer); } - verifyNoMoreInteractions(producer); - } - - private static List<TridentTuple> mockTupleList() { - List<TridentTuple> tupleList = new ArrayList<>(); - TridentTuple t0 = mock(TridentTuple.class); - TridentTuple t1 = mock(TridentTuple.class); - doReturn(1).when(t0).get(0); - doReturn(2).when(t1).get(0); - doReturn(Lists.<Object>newArrayList(1, "2")).when(t0).getValues(); - doReturn(Lists.<Object>newArrayList(2, "3")).when(t1).getValues(); - tupleList.add(t0); - tupleList.add(t1); - return tupleList; - } - - private static class KafkaMessageMatcher extends ArgumentMatcher<ProducerRecord> { - private static final int PRIMARY_INDEX = 0; - private final TridentTuple tuple; - - private KafkaMessageMatcher(TridentTuple tuple) { - this.tuple = tuple; + + private static List<TridentTuple> mockTupleList() { + List<TridentTuple> tupleList = new ArrayList<>(); + TridentTuple t0 = mock(TridentTuple.class); + TridentTuple t1 = mock(TridentTuple.class); + doReturn(1).when(t0).get(0); + doReturn(2).when(t1).get(0); + doReturn(Lists.<Object>newArrayList(1, "2")).when(t0).getValues(); + doReturn(Lists.<Object>newArrayList(2, "3")).when(t1).getValues(); + tupleList.add(t0); + tupleList.add(t1); + return tupleList; } - @SuppressWarnings("unchecked") - @Override - public boolean matches(Object o) { - ProducerRecord<Object, ByteBuffer> m = (ProducerRecord<Object,ByteBuffer>)o; - if (m.key() != tuple.get(PRIMARY_INDEX)) { - return false; - } - ByteBuffer buf = m.value(); - ByteBuffer b = SERIALIZER.write(tuple.getValues(), null); - return b.equals(buf); + private static class KafkaMessageMatcher implements ArgumentMatcher<ProducerRecord<Object, ByteBuffer>> { + + private static final int PRIMARY_INDEX = 0; + private final TridentTuple tuple; + + private KafkaMessageMatcher(TridentTuple tuple) { + this.tuple = tuple; + } + + @SuppressWarnings("unchecked") + @Override + public boolean matches(ProducerRecord<Object, ByteBuffer> record) { + if (record.key() != tuple.get(PRIMARY_INDEX)) { + return false; + } + ByteBuffer buf = record.value(); + ByteBuffer b = SERIALIZER.write(tuple.getValues(), null); + return b.equals(buf); + } } - } } http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/sql/storm-sql-external/storm-sql-mongodb/pom.xml ---------------------------------------------------------------------- diff --git a/sql/storm-sql-external/storm-sql-mongodb/pom.xml b/sql/storm-sql-external/storm-sql-mongodb/pom.xml index 82a7036..8bd5651 100644 --- a/sql/storm-sql-external/storm-sql-mongodb/pom.xml +++ b/sql/storm-sql-external/storm-sql-mongodb/pom.xml @@ -68,8 +68,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> </dependencies> <build> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/sql/storm-sql-external/storm-sql-mongodb/src/test/org/apache/storm/sql/mongodb/TestMongoDataSourcesProvider.java ---------------------------------------------------------------------- diff --git a/sql/storm-sql-external/storm-sql-mongodb/src/test/org/apache/storm/sql/mongodb/TestMongoDataSourcesProvider.java b/sql/storm-sql-external/storm-sql-mongodb/src/test/org/apache/storm/sql/mongodb/TestMongoDataSourcesProvider.java index 429f386..4fcc6d0 100644 --- a/sql/storm-sql-external/storm-sql-mongodb/src/test/org/apache/storm/sql/mongodb/TestMongoDataSourcesProvider.java +++ b/sql/storm-sql-external/storm-sql-mongodb/src/test/org/apache/storm/sql/mongodb/TestMongoDataSourcesProvider.java @@ -33,7 +33,6 @@ import org.bson.Document; import org.junit.Assert; import org.junit.Test; import org.mockito.ArgumentMatcher; -import org.mockito.internal.util.reflection.Whitebox; import java.net.URI; import java.nio.ByteBuffer; @@ -49,74 +48,80 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +import java.lang.reflect.Field; + public class TestMongoDataSourcesProvider { - private static final List<FieldInfo> FIELDS = ImmutableList.of( - new FieldInfo("ID", int.class, true), - new FieldInfo("val", String.class, false)); - private static final List<String> FIELD_NAMES = ImmutableList.of("ID", "val"); - private static final JsonSerializer SERIALIZER = new JsonSerializer(FIELD_NAMES); - private static final Properties TBL_PROPERTIES = new Properties(); - - static { - TBL_PROPERTIES.put("collection.name", "collection1"); - TBL_PROPERTIES.put("trident.ser.field", "tridentSerField"); - } - - @SuppressWarnings("unchecked") - @Test - public void testMongoSink() { - ISqlTridentDataSource ds = DataSourcesRegistry.constructTridentDataSource( + + private static final List<FieldInfo> FIELDS = ImmutableList.of( + new FieldInfo("ID", int.class, true), + new FieldInfo("val", String.class, false)); + private static final List<String> FIELD_NAMES = ImmutableList.of("ID", "val"); + private static final JsonSerializer SERIALIZER = new JsonSerializer(FIELD_NAMES); + private static final Properties TBL_PROPERTIES = new Properties(); + + static { + TBL_PROPERTIES.put("collection.name", "collection1"); + TBL_PROPERTIES.put("trident.ser.field", "tridentSerField"); + } + + @SuppressWarnings("unchecked") + @Test + public void testMongoSink() throws Exception { + ISqlTridentDataSource ds = DataSourcesRegistry.constructTridentDataSource( URI.create("mongodb://127.0.0.1:27017/test"), null, null, TBL_PROPERTIES, FIELDS); - Assert.assertNotNull(ds); + Assert.assertNotNull(ds); - ISqlTridentDataSource.SqlTridentConsumer consumer = ds.getConsumer(); + ISqlTridentDataSource.SqlTridentConsumer consumer = ds.getConsumer(); - Assert.assertEquals(MongoStateFactory.class, consumer.getStateFactory().getClass()); - Assert.assertEquals(MongoStateUpdater.class, consumer.getStateUpdater().getClass()); + Assert.assertEquals(MongoStateFactory.class, consumer.getStateFactory().getClass()); + Assert.assertEquals(MongoStateUpdater.class, consumer.getStateUpdater().getClass()); - MongoState state = (MongoState) consumer.getStateFactory().makeState(Collections.emptyMap(), null, 0, 1); - StateUpdater stateUpdater = consumer.getStateUpdater(); + MongoState state = (MongoState) consumer.getStateFactory().makeState(Collections.emptyMap(), null, 0, 1); + StateUpdater stateUpdater = consumer.getStateUpdater(); - MongoDbClient mongoClient = mock(MongoDbClient.class); - Whitebox.setInternalState(state, "mongoClient", mongoClient); + MongoDbClient mongoClient = mock(MongoDbClient.class); + Field clientField = state.getClass().getDeclaredField("mongoClient"); + clientField.setAccessible(true); + clientField.set(state, mongoClient); - List<TridentTuple> tupleList = mockTupleList(); + List<TridentTuple> tupleList = mockTupleList(); - for (TridentTuple t : tupleList) { - stateUpdater.updateState(state, Collections.singletonList(t), null); - verify(mongoClient).insert(argThat(new MongoArgMatcher(t)) , eq(true)); + for (TridentTuple t : tupleList) { + stateUpdater.updateState(state, Collections.singletonList(t), null); + verify(mongoClient).insert(argThat(new MongoArgMatcher(t)), eq(true)); + } + + verifyNoMoreInteractions(mongoClient); } - verifyNoMoreInteractions(mongoClient); - } - - private static List<TridentTuple> mockTupleList() { - List<TridentTuple> tupleList = new ArrayList<>(); - TridentTuple t0 = mock(TridentTuple.class); - TridentTuple t1 = mock(TridentTuple.class); - doReturn(1).when(t0).get(0); - doReturn(2).when(t1).get(0); - doReturn(Lists.<Object>newArrayList(1, "2")).when(t0).getValues(); - doReturn(Lists.<Object>newArrayList(2, "3")).when(t1).getValues(); - tupleList.add(t0); - tupleList.add(t1); - return tupleList; - } - - private static class MongoArgMatcher extends ArgumentMatcher<List<Document>> { - private final TridentTuple tuple; - - private MongoArgMatcher(TridentTuple tuple) { - this.tuple = tuple; + private static List<TridentTuple> mockTupleList() { + List<TridentTuple> tupleList = new ArrayList<>(); + TridentTuple t0 = mock(TridentTuple.class); + TridentTuple t1 = mock(TridentTuple.class); + doReturn(1).when(t0).get(0); + doReturn(2).when(t1).get(0); + doReturn(Lists.<Object>newArrayList(1, "2")).when(t0).getValues(); + doReturn(Lists.<Object>newArrayList(2, "3")).when(t1).getValues(); + tupleList.add(t0); + tupleList.add(t1); + return tupleList; } - @SuppressWarnings("unchecked") - @Override - public boolean matches(Object o) { - Document doc = ((List<Document>)o).get(0); - ByteBuffer buf = ByteBuffer.wrap((byte[])doc.get(TBL_PROPERTIES.getProperty("trident.ser.field"))); - ByteBuffer b = SERIALIZER.write(tuple.getValues(), null); - return b.equals(buf); + private static class MongoArgMatcher implements ArgumentMatcher<List<Document>> { + + private final TridentTuple tuple; + + private MongoArgMatcher(TridentTuple tuple) { + this.tuple = tuple; + } + + @SuppressWarnings("unchecked") + @Override + public boolean matches(List<Document> docs) { + Document doc = docs.get(0); + ByteBuffer buf = ByteBuffer.wrap((byte[]) doc.get(TBL_PROPERTIES.getProperty("trident.ser.field"))); + ByteBuffer b = SERIALIZER.write(tuple.getValues(), null); + return b.equals(buf); + } } - } } http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/sql/storm-sql-external/storm-sql-redis/pom.xml ---------------------------------------------------------------------- diff --git a/sql/storm-sql-external/storm-sql-redis/pom.xml b/sql/storm-sql-external/storm-sql-redis/pom.xml index 82aa13b..4627450 100644 --- a/sql/storm-sql-external/storm-sql-redis/pom.xml +++ b/sql/storm-sql-external/storm-sql-redis/pom.xml @@ -60,8 +60,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> </dependencies> <build> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/sql/storm-sql-external/storm-sql-redis/src/test/org/apache/storm/sql/redis/TestRedisDataSourcesProvider.java ---------------------------------------------------------------------- diff --git a/sql/storm-sql-external/storm-sql-redis/src/test/org/apache/storm/sql/redis/TestRedisDataSourcesProvider.java b/sql/storm-sql-external/storm-sql-redis/src/test/org/apache/storm/sql/redis/TestRedisDataSourcesProvider.java index 94d4949..56df0e3 100644 --- a/sql/storm-sql-external/storm-sql-redis/src/test/org/apache/storm/sql/redis/TestRedisDataSourcesProvider.java +++ b/sql/storm-sql-external/storm-sql-redis/src/test/org/apache/storm/sql/redis/TestRedisDataSourcesProvider.java @@ -31,7 +31,6 @@ import org.apache.storm.trident.state.StateUpdater; import org.apache.storm.trident.tuple.TridentTuple; import org.junit.Assert; import org.junit.Test; -import org.mockito.internal.util.reflection.Whitebox; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisCluster; import redis.clients.jedis.JedisPool; @@ -51,108 +50,115 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.lang.reflect.Field; + public class TestRedisDataSourcesProvider { - private static final List<FieldInfo> FIELDS = ImmutableList.of( - new FieldInfo("ID", int.class, true), - new FieldInfo("val", String.class, false)); - private static final List<String> FIELD_NAMES = ImmutableList.of("ID", "val"); - private static final String ADDITIONAL_KEY = "hello"; - private static final JsonSerializer SERIALIZER = new JsonSerializer(FIELD_NAMES); - private static final Properties TBL_PROPERTIES = new Properties(); - private static final Properties CLUSTER_TBL_PROPERTIES = new Properties(); - - static { - TBL_PROPERTIES.put("data.type", "HASH"); - TBL_PROPERTIES.put("data.additional.key", ADDITIONAL_KEY); - CLUSTER_TBL_PROPERTIES.put("data.type", "HASH"); - CLUSTER_TBL_PROPERTIES.put("data.additional.key", ADDITIONAL_KEY); - CLUSTER_TBL_PROPERTIES.put("use.redis.cluster", "true"); - } - - @SuppressWarnings("unchecked") - @Test - public void testRedisSink() { - ISqlTridentDataSource ds = DataSourcesRegistry.constructTridentDataSource( - URI.create("redis://:foobared@localhost:6380/2"), null, null, TBL_PROPERTIES, FIELDS); - Assert.assertNotNull(ds); - - ISqlTridentDataSource.SqlTridentConsumer consumer = ds.getConsumer(); - - Assert.assertEquals(RedisState.Factory.class, consumer.getStateFactory().getClass()); - Assert.assertEquals(RedisStateUpdater.class, consumer.getStateUpdater().getClass()); - - RedisState state = (RedisState) consumer.getStateFactory().makeState(Collections.emptyMap(), null, 0, 1); - StateUpdater stateUpdater = consumer.getStateUpdater(); - - JedisPool mockJedisPool = mock(JedisPool.class); - Jedis mockJedis = mock(Jedis.class); - Pipeline mockPipeline = mock(Pipeline.class); - - Whitebox.setInternalState(state, "jedisPool", mockJedisPool); - when(mockJedisPool.getResource()).thenReturn(mockJedis); - when(mockJedis.pipelined()).thenReturn(mockPipeline); - - List<TridentTuple> tupleList = mockTupleList(); - - stateUpdater.updateState(state, tupleList, null); - for (TridentTuple t : tupleList) { - // PK goes to the key - String id = String.valueOf(t.getValueByField("ID")); - String serializedValue = new String(SERIALIZER.write(t.getValues(), null).array()); - verify(mockPipeline).hset(eq(ADDITIONAL_KEY), eq(id), eq(serializedValue)); + + private static final List<FieldInfo> FIELDS = ImmutableList.of( + new FieldInfo("ID", int.class, true), + new FieldInfo("val", String.class, false)); + private static final List<String> FIELD_NAMES = ImmutableList.of("ID", "val"); + private static final String ADDITIONAL_KEY = "hello"; + private static final JsonSerializer SERIALIZER = new JsonSerializer(FIELD_NAMES); + private static final Properties TBL_PROPERTIES = new Properties(); + private static final Properties CLUSTER_TBL_PROPERTIES = new Properties(); + + static { + TBL_PROPERTIES.put("data.type", "HASH"); + TBL_PROPERTIES.put("data.additional.key", ADDITIONAL_KEY); + CLUSTER_TBL_PROPERTIES.put("data.type", "HASH"); + CLUSTER_TBL_PROPERTIES.put("data.additional.key", ADDITIONAL_KEY); + CLUSTER_TBL_PROPERTIES.put("use.redis.cluster", "true"); } - verify(mockPipeline).sync(); - verify(mockJedis).close(); - } + @SuppressWarnings("unchecked") + @Test + public void testRedisSink() throws Exception { + ISqlTridentDataSource ds = DataSourcesRegistry.constructTridentDataSource( + URI.create("redis://:foobared@localhost:6380/2"), null, null, TBL_PROPERTIES, FIELDS); + Assert.assertNotNull(ds); - @SuppressWarnings("unchecked") - @Test - public void testRedisClusterSink() throws IOException { - ISqlTridentDataSource ds = DataSourcesRegistry.constructTridentDataSource( - URI.create("redis://localhost:6380"), null, null, CLUSTER_TBL_PROPERTIES, FIELDS); - Assert.assertNotNull(ds); + ISqlTridentDataSource.SqlTridentConsumer consumer = ds.getConsumer(); - ISqlTridentDataSource.SqlTridentConsumer consumer = ds.getConsumer(); + Assert.assertEquals(RedisState.Factory.class, consumer.getStateFactory().getClass()); + Assert.assertEquals(RedisStateUpdater.class, consumer.getStateUpdater().getClass()); - Assert.assertEquals(RedisClusterState.Factory.class, consumer.getStateFactory().getClass()); - Assert.assertEquals(RedisClusterStateUpdater.class, consumer.getStateUpdater().getClass()); + RedisState state = (RedisState) consumer.getStateFactory().makeState(Collections.emptyMap(), null, 0, 1); + StateUpdater stateUpdater = consumer.getStateUpdater(); - RedisClusterState state = (RedisClusterState) consumer.getStateFactory().makeState(Collections.emptyMap(), null, 0, 1); - StateUpdater stateUpdater = consumer.getStateUpdater(); + JedisPool mockJedisPool = mock(JedisPool.class); + Jedis mockJedis = mock(Jedis.class); + Pipeline mockPipeline = mock(Pipeline.class); - JedisCluster mockJedisCluster = mock(JedisCluster.class); + Field jedisPoolField = state.getClass().getDeclaredField("jedisPool"); + jedisPoolField.setAccessible(true); + jedisPoolField.set(state, mockJedisPool); + when(mockJedisPool.getResource()).thenReturn(mockJedis); + when(mockJedis.pipelined()).thenReturn(mockPipeline); - Whitebox.setInternalState(state, "jedisCluster", mockJedisCluster); + List<TridentTuple> tupleList = mockTupleList(); - List<TridentTuple> tupleList = mockTupleList(); + stateUpdater.updateState(state, tupleList, null); + for (TridentTuple t : tupleList) { + // PK goes to the key + String id = String.valueOf(t.getValueByField("ID")); + String serializedValue = new String(SERIALIZER.write(t.getValues(), null).array()); + verify(mockPipeline).hset(eq(ADDITIONAL_KEY), eq(id), eq(serializedValue)); + } - stateUpdater.updateState(state, tupleList, null); - for (TridentTuple t : tupleList) { - // PK goes to the key - String id = String.valueOf(t.getValueByField("ID")); - String serializedValue = new String(SERIALIZER.write(t.getValues(), null).array()); - verify(mockJedisCluster).hset(eq(ADDITIONAL_KEY), eq(id), eq(serializedValue)); + verify(mockPipeline).sync(); + verify(mockJedis).close(); } - verify(mockJedisCluster, never()).close(); - } - - private static List<TridentTuple> mockTupleList() { - List<TridentTuple> tupleList = new ArrayList<>(); - TridentTuple t0 = mock(TridentTuple.class); - TridentTuple t1 = mock(TridentTuple.class); - when(t0.getValueByField("ID")).thenReturn(1); - when(t0.getValueByField("val")).thenReturn("2"); - doReturn(Lists.<Object>newArrayList(1, "2")).when(t0).getValues(); - - when(t1.getValueByField("ID")).thenReturn(2); - when(t1.getValueByField("val")).thenReturn("3"); - doReturn(Lists.<Object>newArrayList(2, "3")).when(t1).getValues(); - - tupleList.add(t0); - tupleList.add(t1); - return tupleList; - } + @SuppressWarnings("unchecked") + @Test + public void testRedisClusterSink() throws Exception { + ISqlTridentDataSource ds = DataSourcesRegistry.constructTridentDataSource( + URI.create("redis://localhost:6380"), null, null, CLUSTER_TBL_PROPERTIES, FIELDS); + Assert.assertNotNull(ds); + + ISqlTridentDataSource.SqlTridentConsumer consumer = ds.getConsumer(); + + Assert.assertEquals(RedisClusterState.Factory.class, consumer.getStateFactory().getClass()); + Assert.assertEquals(RedisClusterStateUpdater.class, consumer.getStateUpdater().getClass()); + + RedisClusterState state = (RedisClusterState) consumer.getStateFactory().makeState(Collections.emptyMap(), null, 0, 1); + StateUpdater stateUpdater = consumer.getStateUpdater(); + + JedisCluster mockJedisCluster = mock(JedisCluster.class); + + Field jedisClusterField = state.getClass().getDeclaredField("jedisCluster"); + jedisClusterField.setAccessible(true); + jedisClusterField.set(state, mockJedisCluster); + + List<TridentTuple> tupleList = mockTupleList(); + + stateUpdater.updateState(state, tupleList, null); + for (TridentTuple t : tupleList) { + // PK goes to the key + String id = String.valueOf(t.getValueByField("ID")); + String serializedValue = new String(SERIALIZER.write(t.getValues(), null).array()); + verify(mockJedisCluster).hset(eq(ADDITIONAL_KEY), eq(id), eq(serializedValue)); + } + + verify(mockJedisCluster, never()).close(); + } + + private static List<TridentTuple> mockTupleList() { + List<TridentTuple> tupleList = new ArrayList<>(); + TridentTuple t0 = mock(TridentTuple.class); + TridentTuple t1 = mock(TridentTuple.class); + when(t0.getValueByField("ID")).thenReturn(1); + when(t0.getValueByField("val")).thenReturn("2"); + doReturn(Lists.<Object>newArrayList(1, "2")).when(t0).getValues(); + + when(t1.getValueByField("ID")).thenReturn(2); + when(t1.getValueByField("val")).thenReturn("3"); + doReturn(Lists.<Object>newArrayList(2, "3")).when(t1).getValues(); + + tupleList.add(t0); + tupleList.add(t1); + return tupleList; + } } http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/sql/storm-sql-runtime/pom.xml ---------------------------------------------------------------------- diff --git a/sql/storm-sql-runtime/pom.xml b/sql/storm-sql-runtime/pom.xml index f9969b2..77e22a4 100644 --- a/sql/storm-sql-runtime/pom.xml +++ b/sql/storm-sql-runtime/pom.xml @@ -85,8 +85,11 @@ </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> <dependency> <groupId>junit</groupId> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/storm-client/pom.xml ---------------------------------------------------------------------- diff --git a/storm-client/pom.xml b/storm-client/pom.xml index 538b7b9..b37f458 100644 --- a/storm-client/pom.xml +++ b/storm-client/pom.xml @@ -177,23 +177,17 @@ <!-- end of transitive dependency management --> <!-- test --> - <!-- hamcrest-core dependency is shaded inside the mockito-all and junit depends on newer version of hamcrest-core. - To give higher precedence to classes from newer version of hamcrest-core, Junit has been placed above mockito. - --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> - <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> - <scope>test</scope> </dependency> <dependency> <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-library</artifactId> - <scope>test</scope> + <artifactId>java-hamcrest</artifactId> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/storm-client/test/jvm/org/apache/storm/grouping/PartialKeyGroupingTest.java ---------------------------------------------------------------------- diff --git a/storm-client/test/jvm/org/apache/storm/grouping/PartialKeyGroupingTest.java b/storm-client/test/jvm/org/apache/storm/grouping/PartialKeyGroupingTest.java index 273a20a..0945062 100644 --- a/storm-client/test/jvm/org/apache/storm/grouping/PartialKeyGroupingTest.java +++ b/storm-client/test/jvm/org/apache/storm/grouping/PartialKeyGroupingTest.java @@ -53,7 +53,7 @@ public class PartialKeyGroupingTest { PartialKeyGrouping pkg = new PartialKeyGrouping(new Fields("test")); WorkerTopologyContext context = mock(WorkerTopologyContext.class); when(context.getComponentOutputFields(any(GlobalStreamId.class))).thenReturn(new Fields("test")); - pkg.prepare(context, null, Lists.newArrayList(0, 1, 2, 3, 4, 5)); + pkg.prepare(context, mock(GlobalStreamId.class), Lists.newArrayList(0, 1, 2, 3, 4, 5)); Values message = new Values("key1"); List<Integer> choice1 = pkg.chooseTasks(0, message); assertThat(choice1.size(), is(1)); http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/storm-client/test/jvm/org/apache/storm/topology/PersistentWindowedBoltExecutorTest.java ---------------------------------------------------------------------- diff --git a/storm-client/test/jvm/org/apache/storm/topology/PersistentWindowedBoltExecutorTest.java b/storm-client/test/jvm/org/apache/storm/topology/PersistentWindowedBoltExecutorTest.java index d486487..db1cf9e 100644 --- a/storm-client/test/jvm/org/apache/storm/topology/PersistentWindowedBoltExecutorTest.java +++ b/storm-client/test/jvm/org/apache/storm/topology/PersistentWindowedBoltExecutorTest.java @@ -18,9 +18,12 @@ package org.apache.storm.topology; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.junit.Assert.assertThat; + import com.google.common.collect.ImmutableMap; import org.apache.storm.Config; -import org.apache.storm.generated.GlobalStreamId; import org.apache.storm.state.KeyValueState; import org.apache.storm.streams.Pair; import org.apache.storm.task.OutputCollector; @@ -41,13 +44,11 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; import org.mockito.invocation.InvocationOnMock; import org.mockito.runners.MockitoJUnitRunner; import org.mockito.stubbing.Answer; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Deque; @@ -106,14 +107,12 @@ public class PersistentWindowedBoltExecutorTest { @Before public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); mockBolt = Mockito.mock(IStatefulWindowedBolt.class); mockWaterMarkEventGenerator = Mockito.mock(WaterMarkEventGenerator.class); mockTimestampExtractor = Mockito.mock(TimestampExtractor.class); tupleTs = System.currentTimeMillis(); Mockito.when(mockTimestampExtractor.extractTimestamp(Mockito.any())).thenReturn(tupleTs); Mockito.when(mockBolt.getTimestampExtractor()).thenReturn(mockTimestampExtractor); - Mockito.when(mockBolt.isPersistent()).thenReturn(true); mockTopologyContext = Mockito.mock(TopologyContext.class); Mockito.when(mockTopologyContext.getThisStreams()).thenReturn(Collections.singleton(LATE_STREAM)); mockOutputCollector = Mockito.mock(OutputCollector.class); @@ -126,7 +125,6 @@ public class PersistentWindowedBoltExecutorTest { testStormConf.put(Config.TOPOLOGY_STATE_CHECKPOINT_INTERVAL, 1000); Mockito.when(mockPartitionState.get(Mockito.any(), Mockito.any())).then(returnsArgAt(1)); Mockito.when(mockWindowState.get(Mockito.any(), Mockito.any())).then(returnsArgAt(1)); - Mockito.when(mockSystemState.get(Mockito.any(), Mockito.any())).then(returnsArgAt(1)); Mockito.when(mockSystemState.iterator()).thenReturn( ImmutableMap.<String, Optional<?>>of("es", Optional.empty(), "ts", Optional.empty()).entrySet().iterator()); executor.prepare(testStormConf, mockTopologyContext, mockOutputCollector, @@ -135,7 +133,7 @@ public class PersistentWindowedBoltExecutorTest { @Test public void testExecuteTuple() throws Exception { - Mockito.when(mockWaterMarkEventGenerator.track(Mockito.any(GlobalStreamId.class), Mockito.anyLong())).thenReturn(true); + Mockito.when(mockWaterMarkEventGenerator.track(Mockito.any(), Mockito.anyLong())).thenReturn(true); Tuple mockTuple = Mockito.mock(Tuple.class); executor.initState(null); executor.waterMarkEventGenerator = mockWaterMarkEventGenerator; @@ -146,7 +144,7 @@ public class PersistentWindowedBoltExecutorTest { @Test public void testExecuteLatetuple() throws Exception { - Mockito.when(mockWaterMarkEventGenerator.track(Mockito.any(GlobalStreamId.class), Mockito.anyLong())).thenReturn(false); + Mockito.when(mockWaterMarkEventGenerator.track(Mockito.any(), Mockito.anyLong())).thenReturn(false); Tuple mockTuple = Mockito.mock(Tuple.class); executor.initState(null); executor.waterMarkEventGenerator = mockWaterMarkEventGenerator; @@ -164,7 +162,7 @@ public class PersistentWindowedBoltExecutorTest { @Test public void testActivation() throws Exception { - Mockito.when(mockWaterMarkEventGenerator.track(Mockito.any(GlobalStreamId.class), Mockito.anyLong())).thenReturn(true); + Mockito.when(mockWaterMarkEventGenerator.track(Mockito.any(), Mockito.anyLong())).thenReturn(true); executor.initState(null); executor.waterMarkEventGenerator = mockWaterMarkEventGenerator; @@ -196,7 +194,7 @@ public class PersistentWindowedBoltExecutorTest { Mockito.verify(mockPartitionState, Mockito.times(1)).put(pkCatptor.capture(), partitionValuesCaptor.capture()); Assert.assertEquals(PARTITION_KEY, pkCatptor.getValue()); List<Long> expectedPartitionIds = Collections.singletonList(0L); - Assert.assertEquals(expectedPartitionIds, partitionValuesCaptor.getValue()); + assertThat(partitionValuesCaptor.getValue(), contains(expectedPartitionIds.toArray(new Long[0]))); // window partitions Mockito.verify(mockWindowState, Mockito.times(1)).put(longCaptor.capture(), windowValuesCaptor.capture()); @@ -217,7 +215,7 @@ public class PersistentWindowedBoltExecutorTest { @Test public void testCacheEviction() { - Mockito.when(mockWaterMarkEventGenerator.track(Mockito.any(GlobalStreamId.class), Mockito.anyLong())).thenReturn(true); + Mockito.when(mockWaterMarkEventGenerator.track(Mockito.any(), Mockito.anyLong())).thenReturn(true); executor.initState(null); executor.waterMarkEventGenerator = mockWaterMarkEventGenerator; int tupleCount = 20000; @@ -237,14 +235,15 @@ public class PersistentWindowedBoltExecutorTest { ArgumentCaptor<String> stringCaptor = ArgumentCaptor.forClass(String.class); Mockito.verify(mockPartitionState, Mockito.times(numPartitions)).put(stringCaptor.capture(), partitionValuesCaptor.capture()); // partition ids 0 .. 19 - Assert.assertEquals(LongStream.range(0, numPartitions).boxed().collect(Collectors.toList()), partitionValuesCaptor.getAllValues().get(numPartitions-1)); + Assert.assertThat(partitionValuesCaptor.getAllValues().get(numPartitions - 1), + contains(LongStream.range(0, numPartitions).boxed().collect(Collectors.toList()).toArray(new Long[0]))); Mockito.when(mockWindowState.get(Mockito.any(), Mockito.any())).then(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { - Object[] args = invocation.getArguments(); - WindowState.WindowPartition<Tuple> evicted = partitionMap.get(args[0]); - return evicted != null ? evicted : args[1]; + Long partition = invocation.getArgument(0); + WindowState.WindowPartition<Tuple> evicted = partitionMap.get(partition); + return evicted != null ? evicted : invocation.getArgument(1); } }); http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/storm-client/test/jvm/org/apache/storm/topology/StatefulBoltExecutorTest.java ---------------------------------------------------------------------- diff --git a/storm-client/test/jvm/org/apache/storm/topology/StatefulBoltExecutorTest.java b/storm-client/test/jvm/org/apache/storm/topology/StatefulBoltExecutorTest.java index 26b5594..3b4a64a 100644 --- a/storm-client/test/jvm/org/apache/storm/topology/StatefulBoltExecutorTest.java +++ b/storm-client/test/jvm/org/apache/storm/topology/StatefulBoltExecutorTest.java @@ -21,56 +21,47 @@ import org.apache.storm.generated.GlobalStreamId; import org.apache.storm.generated.Grouping; import org.apache.storm.spout.CheckpointSpout; import org.apache.storm.state.KeyValueState; -import org.apache.storm.state.State; import org.apache.storm.task.OutputCollector; import org.apache.storm.task.TopologyContext; import org.apache.storm.tuple.Tuple; -import org.apache.storm.topology.IStatefulBolt; -import org.apache.storm.topology.StatefulBoltExecutor; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import static org.apache.storm.spout.CheckPointState.Action.*; import static org.apache.storm.spout.CheckpointSpout.*; +import static org.mockito.Mockito.mock; /** * Unit tests for {@link StatefulBoltExecutor} */ public class StatefulBoltExecutorTest { - StatefulBoltExecutor<KeyValueState<String, String>> executor; - IStatefulBolt<KeyValueState<String, String>> mockBolt; - TopologyContext mockTopologyContext; - Tuple mockTuple; - Tuple mockCheckpointTuple; - Map<String, Object> mockStormConf = new HashMap<>(); - OutputCollector mockOutputCollector; - State mockState; - Map<GlobalStreamId, Grouping> mockGlobalStream; - Set<GlobalStreamId> mockStreamIds; + private StatefulBoltExecutor<KeyValueState<String, String>> executor; + private IStatefulBolt<KeyValueState<String, String>> mockBolt; + private TopologyContext mockTopologyContext; + private Tuple mockTuple; + private Tuple mockCheckpointTuple; + private Map<String, Object> mockStormConf = new HashMap<>(); + private OutputCollector mockOutputCollector; + private KeyValueState<String, String> mockState; + @Before public void setUp() throws Exception { mockBolt = Mockito.mock(IStatefulBolt.class); executor = new StatefulBoltExecutor<>(mockBolt); - GlobalStreamId mockGlobalStreamId = Mockito.mock(GlobalStreamId.class); - Mockito.when(mockGlobalStreamId.get_streamId()).thenReturn(CheckpointSpout.CHECKPOINT_STREAM_ID); - mockStreamIds = new HashSet<>(); - mockStreamIds.add(mockGlobalStreamId); mockTopologyContext = Mockito.mock(TopologyContext.class); mockOutputCollector = Mockito.mock(OutputCollector.class); - mockGlobalStream = Mockito.mock(Map.class); - mockState = Mockito.mock(State.class); + mockState = Mockito.mock(KeyValueState.class); Mockito.when(mockTopologyContext.getThisComponentId()).thenReturn("test"); Mockito.when(mockTopologyContext.getThisTaskId()).thenReturn(1); - Mockito.when(mockTopologyContext.getThisSources()).thenReturn(mockGlobalStream); - Mockito.when(mockTopologyContext.getComponentTasks(Mockito.anyString())).thenReturn(Collections.singletonList(1)); - Mockito.when(mockGlobalStream.keySet()).thenReturn(mockStreamIds); + GlobalStreamId globalStreamId = new GlobalStreamId("test", CheckpointSpout.CHECKPOINT_STREAM_ID); + Map<GlobalStreamId, Grouping> thisSources = Collections.singletonMap(globalStreamId, mock(Grouping.class)); + Mockito.when(mockTopologyContext.getThisSources()).thenReturn(thisSources); + Mockito.when(mockTopologyContext.getComponentTasks(Mockito.any())).thenReturn(Collections.singletonList(1)); mockTuple = Mockito.mock(Tuple.class); mockCheckpointTuple = Mockito.mock(Tuple.class); executor.prepare(mockStormConf, mockTopologyContext, mockOutputCollector, mockState); http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/storm-client/test/jvm/org/apache/storm/windowing/persistence/WindowStateTest.java ---------------------------------------------------------------------- diff --git a/storm-client/test/jvm/org/apache/storm/windowing/persistence/WindowStateTest.java b/storm-client/test/jvm/org/apache/storm/windowing/persistence/WindowStateTest.java index 587d874..1797caf 100644 --- a/storm-client/test/jvm/org/apache/storm/windowing/persistence/WindowStateTest.java +++ b/storm-client/test/jvm/org/apache/storm/windowing/persistence/WindowStateTest.java @@ -42,7 +42,6 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.function.Consumer; import java.util.function.Supplier; import static org.mockito.AdditionalAnswers.returnsArgAt; @@ -66,11 +65,6 @@ public class WindowStateTest { @Captor private ArgumentCaptor<WindowState.WindowPartition<Integer>> windowValuesCaptor; - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - } - @Test public void testAdd() throws Exception { Mockito.when(partitionIdsState.get(Mockito.any(), Mockito.any())).then(returnsArgAt(1)); @@ -125,8 +119,6 @@ public class WindowStateTest { } }).when(windowState).delete(Mockito.anyLong()); - Mockito.when(supplier.get()).thenReturn(Collections.emptyMap()); - WindowState<Integer> ws = getWindowState(10 * WindowState.MAX_PARTITION_EVENTS); long partitions = 15; @@ -186,8 +178,6 @@ public class WindowStateTest { } }).when(windowState).put(Mockito.any(), Mockito.any()); - Mockito.when(supplier.get()).thenReturn(Collections.emptyMap()); - WindowState<Integer> ws = getWindowState(10 * WindowState.MAX_PARTITION_EVENTS); long partitions = 10; http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/storm-core/pom.xml ---------------------------------------------------------------------- diff --git a/storm-core/pom.xml b/storm-core/pom.xml index ad4972e..727631d 100644 --- a/storm-core/pom.xml +++ b/storm-core/pom.xml @@ -291,12 +291,14 @@ <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> - <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/storm-core/test/clj/org/apache/storm/cluster_test.clj ---------------------------------------------------------------------- diff --git a/storm-core/test/clj/org/apache/storm/cluster_test.clj b/storm-core/test/clj/org/apache/storm/cluster_test.clj index b1cdd37..c6c87c1 100644 --- a/storm-core/test/clj/org/apache/storm/cluster_test.clj +++ b/storm-core/test/clj/org/apache/storm/cluster_test.clj @@ -353,7 +353,7 @@ curator-frameworke (reify CuratorFramework (^void close [this] nil))] ;; No need for when clauses because we just want to return nil (with-open [_ (MockedClientZookeeper. zk-mock)] - (. (Mockito/when (.mkClientImpl zk-mock (Mockito/anyMap) (Mockito/anyList) (Mockito/any) (Mockito/anyString) (Mockito/any) (Mockito/anyMap))) (thenReturn curator-frameworke)) + (. (Mockito/when (.mkClientImpl zk-mock (Mockito/anyMap) (Mockito/any) (Mockito/any) (Mockito/anyString) (Mockito/any) (Mockito/any))) (thenReturn curator-frameworke)) (ClusterUtils/mkStateStorage {} nil nil (ClusterStateContext.)) (.mkdirsImpl (Mockito/verify zk-mock (Mockito/times 1)) (Mockito/any) (Mockito/anyString) (Mockito/eq nil)))) (let [distributed-state-storage (reify IStateStorage http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/storm-core/test/clj/org/apache/storm/drpc_test.clj ---------------------------------------------------------------------- diff --git a/storm-core/test/clj/org/apache/storm/drpc_test.clj b/storm-core/test/clj/org/apache/storm/drpc_test.clj index 67e18c1..c9b955a 100644 --- a/storm-core/test/clj/org/apache/storm/drpc_test.clj +++ b/storm-core/test/clj/org/apache/storm/drpc_test.clj @@ -28,7 +28,7 @@ (:import [org.apache.storm.generated DRPCExecutionException DRPCRequest]) (:import [java.util.concurrent ConcurrentLinkedQueue]) (:import [org.apache.storm Thrift]) - (:import [org.mockito ArgumentCaptor Mockito Matchers]) + (:import [org.mockito ArgumentCaptor Mockito ArgumentMatchers]) (:use [org.apache.storm config]) (:use [org.apache.storm clojure]) (:use [conjure core])) @@ -239,9 +239,9 @@ ;; mock getServiceId s.t. DRPCSpout uses our handler (. (Mockito/when (.getServiceId handler)) thenReturn service-id) ;; mock fetchRequest s.t. DRPCSpout has a request to process on nextTuple - (. (Mockito/when (.fetchRequest handler (Matchers/anyString))) thenReturn (DRPCRequest. "square 2" "bar")) + (. (Mockito/when (.fetchRequest handler (ArgumentMatchers/anyString))) thenReturn (DRPCRequest. "square 2" "bar")) ;; mock failRequest s.t. DRPCSpout attempts retry on .fail - (.failRequest (.when (Mockito/doThrow (DRPCExecutionException.)) handler) (Matchers/anyString)) + (.failRequest (.when (Mockito/doThrow (into-array [(DRPCExecutionException.)])) handler) (ArgumentMatchers/anyString)) (let [spout (DRPCSpout. "test" handler)] ;; tell the spout to use the mock collector @@ -253,7 +253,7 @@ (.fail spout (.getValue captor)) ;; attempt 2 reconnects (.reconnectClient (Mockito/verify handler (Mockito/times 2))) - (.failRequest (Mockito/verify handler (Mockito/times 3)) (Matchers/anyString))))) + (.failRequest (Mockito/verify handler (Mockito/times 3)) (ArgumentMatchers/anyString))))) (deftest test-drpc-stops-retrying-after-successful-reconnect (let [handler (Mockito/mock DRPCInvocationsClient @@ -267,10 +267,10 @@ ;; mock getServiceId s.t. DRPCSpout uses our handler (. (Mockito/when (.getServiceId handler)) thenReturn service-id) ;; mock fetchRequest s.t. DRPCSpout has a request to process on nextTuple - (. (Mockito/when (.fetchRequest handler (Matchers/anyString))) thenReturn (DRPCRequest. "square 2" "bar")) + (. (Mockito/when (.fetchRequest handler (ArgumentMatchers/anyString))) thenReturn (DRPCRequest. "square 2" "bar")) ;; mock failRequest s.t. DRPCSpout attempts retry on .fail the first time only, but succeed the second time (.failRequest (.when (.doNothing - (Mockito/doThrow (DRPCExecutionException.))) handler) (Matchers/anyString)) + (Mockito/doThrow (into-array [(DRPCExecutionException.)]))) handler) (ArgumentMatchers/anyString)) (let [spout (DRPCSpout. "test" handler)] ;; tell the spout to use the mock collector @@ -282,4 +282,4 @@ (.fail spout (.getValue captor)) ;; reconnect once after a failure (.reconnectClient (Mockito/verify handler (Mockito/times 1))) - (.failRequest (Mockito/verify handler (Mockito/times 2)) (Matchers/anyString))))) + (.failRequest (Mockito/verify handler (Mockito/times 2)) (ArgumentMatchers/anyString))))) http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/storm-server/pom.xml ---------------------------------------------------------------------- diff --git a/storm-server/pom.xml b/storm-server/pom.xml index 7449257..2e803d0 100644 --- a/storm-server/pom.xml +++ b/storm-server/pom.xml @@ -84,7 +84,11 @@ <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/storm-server/src/main/java/org/apache/storm/daemon/supervisor/BasicContainer.java ---------------------------------------------------------------------- diff --git a/storm-server/src/main/java/org/apache/storm/daemon/supervisor/BasicContainer.java b/storm-server/src/main/java/org/apache/storm/daemon/supervisor/BasicContainer.java index 1e25e50..16f157d 100644 --- a/storm-server/src/main/java/org/apache/storm/daemon/supervisor/BasicContainer.java +++ b/storm-server/src/main/java/org/apache/storm/daemon/supervisor/BasicContainer.java @@ -269,7 +269,7 @@ public class BasicContainer extends Container { @SuppressWarnings("unchecked") Map<String, String> env = (Map<String, String>) _topoConf.get(Config.TOPOLOGY_ENVIRONMENT); if (env == null) { - env = new HashMap<String, String>(); + env = new HashMap<>(); } String str = ConfigUtils.workerArtifactsPidPath(_conf, _topologyId, _port); http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/storm-server/src/test/java/org/apache/storm/localizer/AsyncLocalizerTest.java ---------------------------------------------------------------------- diff --git a/storm-server/src/test/java/org/apache/storm/localizer/AsyncLocalizerTest.java b/storm-server/src/test/java/org/apache/storm/localizer/AsyncLocalizerTest.java index f49be63..34e9e8e 100644 --- a/storm-server/src/test/java/org/apache/storm/localizer/AsyncLocalizerTest.java +++ b/storm-server/src/test/java/org/apache/storm/localizer/AsyncLocalizerTest.java @@ -22,8 +22,17 @@ import static org.apache.storm.localizer.AsyncLocalizer.USERCACHE; import static org.junit.Assert.*; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.*; -import static org.mockito.Mockito.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.endsWith; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.startsWith; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import com.google.common.base.Joiner; import java.io.File; http://git-wip-us.apache.org/repos/asf/storm/blob/3503dcea/storm-webapp/pom.xml ---------------------------------------------------------------------- diff --git a/storm-webapp/pom.xml b/storm-webapp/pom.xml index 7c2bcf2..2846146 100644 --- a/storm-webapp/pom.xml +++ b/storm-webapp/pom.xml @@ -61,18 +61,17 @@ <groupId>io.dropwizard.metrics</groupId> <artifactId>metrics-core</artifactId> </dependency> - <!-- hamcrest-core dependency is shaded inside the mockito-all and junit depends on newer version of hamcrest-core. - To give higher precedence to classes from newer version of hamcrest-core, Junit has been placed above mockito. - --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> - <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> + <artifactId>mockito-core</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId>