You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by st...@apache.org on 2017/01/19 12:46:08 UTC
[01/28] incubator-rocketmq git commit: Integrate with Coveralls
Repository: incubator-rocketmq
Updated Branches:
refs/heads/ROCKETMQ-54 3884370e8 -> a06a51763
Integrate with Coveralls
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/62963b5c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/62963b5c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/62963b5c
Branch: refs/heads/ROCKETMQ-54
Commit: 62963b5c623561791b0d1c4836d7339ee93b22a7
Parents: 2a9769a
Author: vongosling <vo...@apache.org>
Authored: Tue Jan 17 13:09:02 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Tue Jan 17 13:09:02 2017 +0800
----------------------------------------------------------------------
pom.xml | 5 +++++
1 file changed, 5 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/62963b5c/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ca7ea1d..617ac9c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -317,6 +317,11 @@
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.eluder.coveralls</groupId>
+ <artifactId>coveralls-maven-plugin</artifactId>
+ <version>4.3.0</version>
+ </plugin>
</plugins>
</build>
[05/28] incubator-rocketmq git commit: Testing RocketMQ Project on
Multiple Operating Systems
Posted by st...@apache.org.
Testing RocketMQ Project on Multiple Operating Systems
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/1c529533
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/1c529533
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/1c529533
Branch: refs/heads/ROCKETMQ-54
Commit: 1c529533e12882c112f3a3f3a3500c65c531da50
Parents: 2892a77
Author: vongosling <vo...@apache.org>
Authored: Tue Jan 17 18:41:06 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Tue Jan 17 18:41:06 2017 +0800
----------------------------------------------------------------------
.travis.yml | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/1c529533/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 45b7d5d..0019310 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,3 +1,6 @@
+os:
+ - linux
+ - osx
language: java
jdk:
- oraclejdk8
[13/28] incubator-rocketmq git commit: Polish travis script
Posted by st...@apache.org.
Polish travis script
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/5cb7e382
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/5cb7e382
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/5cb7e382
Branch: refs/heads/ROCKETMQ-54
Commit: 5cb7e382b7c1aae651971cd6e93926448df7efc2
Parents: 3e3988d
Author: vongosling <vo...@apache.org>
Authored: Wed Jan 18 23:44:29 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Wed Jan 18 23:44:29 2017 +0800
----------------------------------------------------------------------
.travis.yml | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/5cb7e382/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 8701b48..9394f0a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,7 +10,7 @@ language: java
matrix:
include:
# On OSX, run with default JDK only.
- - os: osx
+ # - os: osx
# On Linux, run with specific JDKs only.
- os: linux
env: CUSTOM_JDK="oraclejdk8"
@@ -35,7 +35,8 @@ before_install:
script:
- - travis_retry mvn -B clean apache-rat:check package jacoco:report coveralls:report
+ - travis_retry mvn -B clean apache-rat:check
+ - travis_retry mvn package jacoco:report coveralls:report
after_success:
- mvn sonar:sonar
[17/28] incubator-rocketmq git commit: [ROCKETMQ-52] Add unit tests
for DefaultMQPushConsumer
Posted by st...@apache.org.
[ROCKETMQ-52] Add unit tests for DefaultMQPushConsumer
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/9d8bd590
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/9d8bd590
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/9d8bd590
Branch: refs/heads/ROCKETMQ-54
Commit: 9d8bd5902a1639080ec50fcf918750f1c7d240f0
Parents: acf9bc3
Author: yukon <yu...@apache.org>
Authored: Thu Jan 19 15:19:34 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
.../consumer/DefaultMQPullConsumerTest.java | 2 +-
.../consumer/DefaultMQPushConsumerTest.java | 180 +++++++++++++++++++
.../client/producer/DefaultMQProducerTest.java | 2 +-
3 files changed, 182 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/9d8bd590/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPullConsumerTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPullConsumerTest.java b/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPullConsumerTest.java
index 6dc4ed8..6672b1e 100644
--- a/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPullConsumerTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPullConsumerTest.java
@@ -146,7 +146,7 @@ public class DefaultMQPullConsumerTest {
});
}
- private PullResultExt createPullResult(PullMessageRequestHeader requestHeader, PullStatus pullStatus, List<MessageExt> messageExtList) {
+ private PullResultExt createPullResult(PullMessageRequestHeader requestHeader, PullStatus pullStatus, List<MessageExt> messageExtList) throws Exception {
return new PullResultExt(pullStatus, requestHeader.getQueueOffset() + messageExtList.size(), 123, 2048, messageExtList, 0, new byte[] {});
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/9d8bd590/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumerTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumerTest.java b/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumerTest.java
new file mode 100644
index 0000000..7f5c874
--- /dev/null
+++ b/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumerTest.java
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.rocketmq.client.consumer;
+
+import java.io.ByteArrayOutputStream;
+import java.lang.reflect.Field;
+import java.net.InetSocketAddress;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import org.apache.rocketmq.client.ClientConfig;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
+import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
+import org.apache.rocketmq.client.exception.MQBrokerException;
+import org.apache.rocketmq.client.impl.CommunicationMode;
+import org.apache.rocketmq.client.impl.FindBrokerResult;
+import org.apache.rocketmq.client.impl.MQClientAPIImpl;
+import org.apache.rocketmq.client.impl.MQClientManager;
+import org.apache.rocketmq.client.impl.consumer.ConsumeMessageConcurrentlyService;
+import org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl;
+import org.apache.rocketmq.client.impl.consumer.ProcessQueue;
+import org.apache.rocketmq.client.impl.consumer.PullAPIWrapper;
+import org.apache.rocketmq.client.impl.consumer.PullMessageService;
+import org.apache.rocketmq.client.impl.consumer.PullRequest;
+import org.apache.rocketmq.client.impl.consumer.PullResultExt;
+import org.apache.rocketmq.client.impl.factory.MQClientInstance;
+import org.apache.rocketmq.common.message.MessageClientExt;
+import org.apache.rocketmq.common.message.MessageDecoder;
+import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.common.protocol.header.PullMessageRequestHeader;
+import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.stubbing.Answer;
+
+import static org.apache.rocketmq.client.producer.DefaultMQProducerTest.createTopicRoute;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+@RunWith(MockitoJUnitRunner.class)
+public class DefaultMQPushConsumerTest {
+ private String consumerGroup;
+ private String topic = "FooBar";
+ private String brokerName = "BrokerA";
+ @Spy
+ private MQClientInstance mQClientFactory = MQClientManager.getInstance().getAndCreateMQClientInstance(new ClientConfig());
+ @Mock
+ private MQClientAPIImpl mQClientAPIImpl;
+ private PullAPIWrapper pullAPIWrapper;
+ private DefaultMQPushConsumer pushConsumer;
+
+ @Before
+ public void init() throws Exception {
+ consumerGroup = "FooBarGroup" + System.currentTimeMillis();
+ pullAPIWrapper = spy(new PullAPIWrapper(mQClientFactory, consumerGroup, false));
+ pushConsumer = new DefaultMQPushConsumer(consumerGroup);
+ pushConsumer.setNamesrvAddr("127.0.0.1:9876");
+ pushConsumer.setPullInterval(60 * 1000);
+
+ pushConsumer.registerMessageListener(new MessageListenerConcurrently() {
+ @Override public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
+ ConsumeConcurrentlyContext context) {
+ return null;
+ }
+ });
+ pushConsumer.subscribe(topic, "*");
+ pushConsumer.start();
+
+ DefaultMQPushConsumerImpl pushConsumerImpl = pushConsumer.getDefaultMQPushConsumerImpl();
+ Field field = DefaultMQPushConsumerImpl.class.getDeclaredField("mQClientFactory");
+ field.setAccessible(true);
+ field.set(pushConsumerImpl, mQClientFactory);
+
+ field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl");
+ field.setAccessible(true);
+ field.set(mQClientFactory, mQClientAPIImpl);
+
+ field = DefaultMQPushConsumerImpl.class.getDeclaredField("pullAPIWrapper");
+ field.setAccessible(true);
+ field.set(pushConsumerImpl, pullAPIWrapper);
+
+ when(mQClientFactory.findBrokerAddressInSubscribe(anyString(), anyLong(), anyBoolean())).thenReturn(new FindBrokerResult("127.0.0.1:10911", false));
+ mQClientFactory.registerConsumer(consumerGroup, pushConsumerImpl);
+ mQClientFactory.start();
+ when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(createTopicRoute());
+ }
+
+ @After
+ public void terminate() {
+ pushConsumer.shutdown();
+ }
+
+ @Test
+ public void testPullMessage_Success() throws InterruptedException, RemotingException, MQBrokerException {
+ final CountDownLatch countDownLatch = new CountDownLatch(1);
+ final MessageExt[] messageExts = new MessageExt[1];
+ pushConsumer.getDefaultMQPushConsumerImpl().setConsumeMessageService(new ConsumeMessageConcurrentlyService(pushConsumer.getDefaultMQPushConsumerImpl(), new MessageListenerConcurrently() {
+ @Override public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
+ ConsumeConcurrentlyContext context) {
+ messageExts[0] = msgs.get(0);
+ countDownLatch.countDown();
+ return null;
+ }
+ }));
+ doAnswer(new Answer() {
+ @Override public Object answer(InvocationOnMock mock) throws Throwable {
+ PullMessageRequestHeader requestHeader = mock.getArgument(1);
+ MessageClientExt messageClientExt = new MessageClientExt();
+ messageClientExt.setTopic(topic);
+ messageClientExt.setQueueId(0);
+ messageClientExt.setMsgId("123");
+ messageClientExt.setBody(new byte[] {'a'});
+ messageClientExt.setOffsetMsgId("234");
+ messageClientExt.setBornHost(new InetSocketAddress(8080));
+ messageClientExt.setStoreHost(new InetSocketAddress(8080));
+ PullResult pullResult = createPullResult(requestHeader, PullStatus.FOUND, Collections.<MessageExt>singletonList(messageClientExt));
+ ((PullCallback)mock.getArgument(4)).onSuccess(pullResult);
+ return null;
+ }
+ }).when(mQClientAPIImpl).pullMessage(anyString(), any(PullMessageRequestHeader.class), anyLong(), any(CommunicationMode.class), nullable(PullCallback.class));
+
+ PullMessageService pullMessageService = mQClientFactory.getPullMessageService();
+ pullMessageService.executePullRequestImmediately(createPullRequest());
+ countDownLatch.await();
+ assertThat(messageExts[0].getTopic()).isEqualTo(topic);
+ assertThat(messageExts[0].getBody()).isEqualTo(new byte[] {'a'});
+ }
+
+ private PullRequest createPullRequest() {
+ PullRequest pullRequest = new PullRequest();
+ pullRequest.setConsumerGroup(consumerGroup);
+ pullRequest.setNextOffset(1024);
+
+ MessageQueue messageQueue = new MessageQueue();
+ messageQueue.setBrokerName(brokerName);
+ messageQueue.setQueueId(0);
+ messageQueue.setTopic(topic);
+ pullRequest.setMessageQueue(messageQueue);
+ pullRequest.setProcessQueue(new ProcessQueue());
+
+ return pullRequest;
+ }
+
+ private PullResultExt createPullResult(PullMessageRequestHeader requestHeader, PullStatus pullStatus, List<MessageExt> messageExtList) throws Exception {
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ for (MessageExt messageExt : messageExtList) {
+ outputStream.write(MessageDecoder.encode(messageExt, false));
+ }
+ return new PullResultExt(pullStatus, requestHeader.getQueueOffset() + messageExtList.size(), 123, 2048, messageExtList, 0, outputStream.toByteArray());
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/9d8bd590/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java b/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java
index bbaff00..eddd380 100644
--- a/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java
@@ -190,7 +190,7 @@ public class DefaultMQProducerTest {
}
}
- private TopicRouteData createTopicRoute() {
+ public static TopicRouteData createTopicRoute() {
TopicRouteData topicRouteData = new TopicRouteData();
topicRouteData.setFilterServerTable(new HashMap<String, List<String>>());
[10/28] incubator-rocketmq git commit: Polish coveralls, jacoco,
sonar and travis-ci integration
Posted by st...@apache.org.
Polish coveralls,jacoco,sonar and travis-ci integration
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/54967c31
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/54967c31
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/54967c31
Branch: refs/heads/ROCKETMQ-54
Commit: 54967c31cfc0af7883b46a1f71086772e9256f7c
Parents: cc069a1
Author: vongosling <vo...@apache.org>
Authored: Wed Jan 18 14:36:22 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Wed Jan 18 14:36:22 2017 +0800
----------------------------------------------------------------------
.travis.yml | 17 +++++++----------
pom.xml | 43 ++++++++++++++++++++++++++++++++++++-------
2 files changed, 43 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/54967c31/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index c3c525d..2afd6bd 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,20 +4,18 @@ notifications:
- dev@rocketmq.incubator.apache.org
on_success: change
on_failure: always
-
+
+language: java
+
matrix:
include:
# On OSX, run with default JDK only.
- - language: java
- os: osx
# On Linux, run with specific JDKs only.
- - language: java
- os: linux
env: CUSTOM_JDK="oraclejdk8"
- - language: java
- os: linux
env: CUSTOM_JDK="oraclejdk7"
- - language: java
- os: linux
env: CUSTOM_JDK="openjdk7"
@@ -26,7 +24,7 @@ before_install:
- cat ~/.mavenrc
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then export JAVA_HOME=$(/usr/libexec/java_home); fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then jdk_switcher use "$CUSTOM_JDK"; fi
-#
+
#os:
# - linux
# - osx
@@ -36,9 +34,8 @@ before_install:
# - openjdk7
-#script:
-# - travis_retry mvn --batch-mode clean apache-rat:check
-# - travis_wait 60 mvn --batch-mode clean package findbugs:check
+script:
+ - travis_retry mvn -B clean apache-rat:check package jacoo:report coveralls:report
after_success:
- - mvn clean apache-rat:check cobertura:cobertura coveralls:report
+ - mvn sonar:sonar
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/54967c31/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index f189bb4..e9ab2ea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,7 +32,7 @@
<artifactId>rocketmq-all</artifactId>
<version>4.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
- <name>Apache RocketMQ git s${project.version}</name>
+ <name>Apache RocketMQ ${project.version}</name>
<url>http://rocketmq.incubator.apache.org/</url>
<prerequisites>
@@ -152,6 +152,8 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+
<!--maven properties -->
<maven.test.skip>false</maven.test.skip>
<maven.javadoc.skip>true</maven.javadoc.skip>
@@ -159,6 +161,14 @@
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
+ <!-- BEFORE SonarQube 4.4.0 - the destination file for the code coverage report has to be set to the same value
+ in the parent pom and in each module pom. Then JaCoCo will add up information in
+ the same report, so that, it will give the cross-module code coverage. -->
+ <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
+ <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
+ <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
+ <sonar.jacoco.itReportPath>${project.basedir}/../target/jacoco-it.exec</sonar.jacoco.itReportPath>
+ <sonar.language>java</sonar.language>
<!-- URL of the ASF SonarQube server -->
<sonar.host.url>https://builds.apache.org/analysis</sonar.host.url>
<!-- Exclude all generated code -->
@@ -329,14 +339,33 @@
<version>4.3.0</version>
</plugin>
<plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>cobertura-maven-plugin</artifactId>
- <version>2.7</version>
+ <groupId>org.jacoco</groupId>
+ <artifactId>jacoco-maven-plugin</artifactId>
+ <version>0.7.6.201602180812</version>
<configuration>
- <format>xml</format>
- <!-- aggregated reports for multi-module projects -->
- <aggregate>true</aggregate>
+ <append>true</append>
</configuration>
+ <executions>
+ <execution>
+ <id>agent-for-ut</id>
+ <goals>
+ <goal>prepare-agent</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>agent-for-it</id>
+ <goals>
+ <goal>prepare-agent-integration</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>report</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>report</goal>
+ </goals>
+ </execution>
+ </executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
[02/28] incubator-rocketmq git commit: Integrate travis-ci with
coveralls
Posted by st...@apache.org.
Integrate travis-ci with coveralls
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/0623b3c6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/0623b3c6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/0623b3c6
Branch: refs/heads/ROCKETMQ-54
Commit: 0623b3c6392e717af6879cd3bf78fc2ca40308f4
Parents: 62963b5
Author: vongosling <vo...@apache.org>
Authored: Tue Jan 17 13:57:33 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Tue Jan 17 13:57:33 2017 +0800
----------------------------------------------------------------------
.travis.yml | 7 +++++++
README.md | 2 +-
pom.xml | 15 +++++++++++++++
3 files changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/0623b3c6/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index b2168ad..a9927e2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,3 +3,10 @@ jdk:
- oraclejdk8
- oraclejdk7
- openjdk7
+
+script:
+ - travis_retry mvn --batch-mode clean apache-rat:check
+ - travis_wait 60 mvn --batch-mode clean package findbugs:check
+
+after_success:
+ - mvn clean cobertura:cobertura coveralls:report
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/0623b3c6/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index a0259f0..32c86fe 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-## RocketMQ [](https://travis-ci.org/apache/incubator-rocketmq)
+## RocketMQ [](https://travis-ci.org/apache/incubator-rocketmq) [](https://coveralls.io/github/apache/incubator-rocketmq?branch=master)
[](http://search.maven.org/#search%7Cga%7C1%7Corg.apache.rocketmq)
[](https://github.org/apache/rocketmqreleases)
[](https://www.apache.org/licenses/LICENSE-2.0.html)
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/0623b3c6/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 617ac9c..afd3d84 100644
--- a/pom.xml
+++ b/pom.xml
@@ -322,6 +322,21 @@
<artifactId>coveralls-maven-plugin</artifactId>
<version>4.3.0</version>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>cobertura-maven-plugin</artifactId>
+ <version>2.7</version>
+ <configuration>
+ <format>xml</format>
+ <!-- aggregated reports for multi-module projects -->
+ <aggregate>true</aggregate>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>findbugs-maven-plugin</artifactId>
+ <version>3.0.4</version>
+ </plugin>
</plugins>
</build>
[09/28] incubator-rocketmq git commit: Polish travis config
Posted by st...@apache.org.
Polish travis config
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/cc069a13
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/cc069a13
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/cc069a13
Branch: refs/heads/ROCKETMQ-54
Commit: cc069a131ca2f1c962051cd772466cda71e9737a
Parents: 3daf24e
Author: vongosling <vo...@apache.org>
Authored: Wed Jan 18 12:40:59 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Wed Jan 18 12:40:59 2017 +0800
----------------------------------------------------------------------
.travis.yml | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/cc069a13/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 4d33a4e..c3c525d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,18 +1,23 @@
notifications:
email:
- - dev@rocketmq.incubator.apache.org
+ recipients:
+ - dev@rocketmq.incubator.apache.org
on_success: change
on_failure: always
-language: java
+
matrix:
include:
# On OSX, run with default JDK only.
+ - language: java
- os: osx
# On Linux, run with specific JDKs only.
+ - language: java
- os: linux
env: CUSTOM_JDK="oraclejdk8"
+ - language: java
- os: linux
env: CUSTOM_JDK="oraclejdk7"
+ - language: java
- os: linux
env: CUSTOM_JDK="openjdk7"
[27/28] incubator-rocketmq git commit: [ROCKETMQ-51] Remove heavy
unit tests in rocketmq-broker
Posted by st...@apache.org.
[ROCKETMQ-51] Remove heavy unit tests in rocketmq-broker
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/c549854f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/c549854f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/c549854f
Branch: refs/heads/ROCKETMQ-54
Commit: c549854f923d1b82ab41b7bb9d957809b0056563
Parents: 6511bc3
Author: yukon <yu...@apache.org>
Authored: Wed Jan 18 17:08:26 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
.../rocketmq/broker/BrokerTestHarness.java | 69 -----------------
.../broker/api/BrokerFastFailureTest.java | 61 ---------------
.../rocketmq/broker/api/SendMessageTest.java | 79 --------------------
.../offset/ConsumerOffsetManagerTest.java | 61 ---------------
.../broker/topic/TopicConfigManagerTest.java | 60 ---------------
5 files changed, 330 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/c549854f/broker/src/test/java/org/apache/rocketmq/broker/BrokerTestHarness.java
----------------------------------------------------------------------
diff --git a/broker/src/test/java/org/apache/rocketmq/broker/BrokerTestHarness.java b/broker/src/test/java/org/apache/rocketmq/broker/BrokerTestHarness.java
deleted file mode 100644
index f5332dc..0000000
--- a/broker/src/test/java/org/apache/rocketmq/broker/BrokerTestHarness.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * 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.
- */
-
-/**
- * $Id: SendMessageTest.java 1831 2013-05-16 01:39:51Z vintagewang@apache.org $
- */
-package org.apache.rocketmq.broker;
-
-import java.io.File;
-import java.util.Random;
-import org.apache.rocketmq.common.BrokerConfig;
-import org.apache.rocketmq.remoting.netty.NettyClientConfig;
-import org.apache.rocketmq.remoting.netty.NettyServerConfig;
-import org.apache.rocketmq.store.config.MessageStoreConfig;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BrokerTestHarness {
-
- public final String BROKER_NAME = "TestBrokerName";
- protected BrokerController brokerController = null;
- protected Random random = new Random();
- protected String brokerAddr = "";
- protected Logger logger = LoggerFactory.getLogger(BrokerTestHarness.class);
- protected BrokerConfig brokerConfig = new BrokerConfig();
- protected NettyServerConfig nettyServerConfig = new NettyServerConfig();
- protected NettyClientConfig nettyClientConfig = new NettyClientConfig();
- protected MessageStoreConfig storeConfig = new MessageStoreConfig();
-
- @Before
- public void startup() throws Exception {
- brokerConfig.setBrokerName(BROKER_NAME);
- brokerConfig.setBrokerIP1("127.0.0.1");
- storeConfig.setStorePathRootDir(System.getProperty("user.home") + File.separator + "unitteststore");
- storeConfig.setStorePathCommitLog(System.getProperty("user.home") + File.separator + "unitteststore" + File.separator + "commitlog");
- nettyServerConfig.setListenPort(10000 + random.nextInt(1000));
- brokerAddr = brokerConfig.getBrokerIP1() + ":" + nettyServerConfig.getListenPort();
- brokerController = new BrokerController(brokerConfig, nettyServerConfig, nettyClientConfig, storeConfig);
- boolean initResult = brokerController.initialize();
- Assert.assertTrue(initResult);
- logger.info("Broker Start name:{} addr:{}", brokerConfig.getBrokerName(), brokerController.getBrokerAddr());
- brokerController.start();
- }
-
- @After
- public void shutdown() throws Exception {
- if (brokerController != null) {
- brokerController.shutdown();
- }
- //maybe need to clean the file store. But we do not suggest deleting anything.
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/c549854f/broker/src/test/java/org/apache/rocketmq/broker/api/BrokerFastFailureTest.java
----------------------------------------------------------------------
diff --git a/broker/src/test/java/org/apache/rocketmq/broker/api/BrokerFastFailureTest.java b/broker/src/test/java/org/apache/rocketmq/broker/api/BrokerFastFailureTest.java
deleted file mode 100644
index bec0af5..0000000
--- a/broker/src/test/java/org/apache/rocketmq/broker/api/BrokerFastFailureTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * 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.
- */
-package org.apache.rocketmq.broker.api;
-
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import org.apache.rocketmq.broker.BrokerTestHarness;
-import org.apache.rocketmq.broker.latency.BrokerFastFailure;
-import org.apache.rocketmq.broker.latency.FutureTaskExt;
-import org.apache.rocketmq.remoting.netty.RequestTask;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class BrokerFastFailureTest extends BrokerTestHarness {
-
- @Test
- public void testHeadSlowTimeMills() throws InterruptedException {
- BlockingQueue<Runnable> blockingQueue = new LinkedBlockingQueue<>();
- blockingQueue.add(new FutureTaskExt<>(new RequestTask(null, null, null), null));
- TimeUnit.MILLISECONDS.sleep(10);
- Assert.assertTrue(this.brokerController.headSlowTimeMills(blockingQueue) > 0);
-
- blockingQueue.clear();
- blockingQueue.add(new Runnable() {
- @Override public void run() {
-
- }
- });
- Assert.assertTrue(this.brokerController.headSlowTimeMills(blockingQueue) == 0);
- }
-
- @Test
- public void testCastRunnable() {
- Runnable runnable = new Runnable() {
- @Override public void run() {
-
- }
- };
- Assert.assertNull(BrokerFastFailure.castRunnable(runnable));
-
- RequestTask requestTask = new RequestTask(null, null, null);
- runnable = new FutureTaskExt<>(requestTask, null);
-
- Assert.assertEquals(requestTask, BrokerFastFailure.castRunnable(runnable));
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/c549854f/broker/src/test/java/org/apache/rocketmq/broker/api/SendMessageTest.java
----------------------------------------------------------------------
diff --git a/broker/src/test/java/org/apache/rocketmq/broker/api/SendMessageTest.java b/broker/src/test/java/org/apache/rocketmq/broker/api/SendMessageTest.java
deleted file mode 100644
index 69e01be..0000000
--- a/broker/src/test/java/org/apache/rocketmq/broker/api/SendMessageTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * 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.
- */
-
-/**
- * $Id: SendMessageTest.java 1831 2013-05-16 01:39:51Z vintagewang@apache.org $
- */
-package org.apache.rocketmq.broker.api;
-
-import org.apache.rocketmq.broker.BrokerTestHarness;
-import org.apache.rocketmq.client.ClientConfig;
-import org.apache.rocketmq.client.hook.SendMessageContext;
-import org.apache.rocketmq.client.impl.CommunicationMode;
-import org.apache.rocketmq.client.impl.MQClientAPIImpl;
-import org.apache.rocketmq.client.producer.SendResult;
-import org.apache.rocketmq.client.producer.SendStatus;
-import org.apache.rocketmq.common.MixAll;
-import org.apache.rocketmq.common.message.Message;
-import org.apache.rocketmq.common.message.MessageDecoder;
-import org.apache.rocketmq.common.protocol.header.SendMessageRequestHeader;
-import org.apache.rocketmq.remoting.netty.NettyClientConfig;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class SendMessageTest extends BrokerTestHarness {
-
- MQClientAPIImpl client = new MQClientAPIImpl(new NettyClientConfig(), null, null, new ClientConfig());
- String topic = "UnitTestTopic";
-
- @Before
- @Override
- public void startup() throws Exception {
- super.startup();
- client.start();
-
- }
-
- @After
- @Override
- public void shutdown() throws Exception {
- client.shutdown();
- super.shutdown();
- }
-
- @Test
- public void testSendSingle() throws Exception {
- Message msg = new Message(topic, "TAG1 TAG2", "100200300", "body".getBytes());
- SendMessageRequestHeader requestHeader = new SendMessageRequestHeader();
- requestHeader.setProducerGroup("abc");
- requestHeader.setTopic(msg.getTopic());
- requestHeader.setDefaultTopic(MixAll.DEFAULT_TOPIC);
- requestHeader.setDefaultTopicQueueNums(4);
- requestHeader.setQueueId(0);
- requestHeader.setSysFlag(0);
- requestHeader.setBornTimestamp(System.currentTimeMillis());
- requestHeader.setFlag(msg.getFlag());
- requestHeader.setProperties(MessageDecoder.messageProperties2String(msg.getProperties()));
-
- SendResult result = client.sendMessage(brokerAddr, BROKER_NAME, msg, requestHeader, 1000 * 5,
- CommunicationMode.SYNC, new SendMessageContext(), null);
- assertEquals(result.getSendStatus(), SendStatus.SEND_OK);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/c549854f/broker/src/test/java/org/apache/rocketmq/broker/offset/ConsumerOffsetManagerTest.java
----------------------------------------------------------------------
diff --git a/broker/src/test/java/org/apache/rocketmq/broker/offset/ConsumerOffsetManagerTest.java b/broker/src/test/java/org/apache/rocketmq/broker/offset/ConsumerOffsetManagerTest.java
deleted file mode 100644
index 76b1b7f..0000000
--- a/broker/src/test/java/org/apache/rocketmq/broker/offset/ConsumerOffsetManagerTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * 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.
- */
-
-/**
- * $Id: ConsumerOffsetManagerTest.java 1831 2013-05-16 01:39:51Z vintagewang@apache.org $
- */
-package org.apache.rocketmq.broker.offset;
-
-import org.apache.rocketmq.broker.BrokerTestHarness;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class ConsumerOffsetManagerTest extends BrokerTestHarness {
-
- @Test
- public void testFlushConsumerOffset() throws Exception {
- ConsumerOffsetManager consumerOffsetManager = new ConsumerOffsetManager(brokerController);
- for (int i = 0; i < 10; i++) {
- String group = "UNIT_TEST_GROUP_" + i;
- for (int id = 0; id < 10; id++) {
- consumerOffsetManager.commitOffset(null, group, "TOPIC_A", id, id + 100);
- consumerOffsetManager.commitOffset(null, group, "TOPIC_B", id, id + 100);
- consumerOffsetManager.commitOffset(null, group, "TOPIC_C", id, id + 100);
- }
- }
- consumerOffsetManager.persist();
- consumerOffsetManager.getOffsetTable().clear();
- for (int i = 0; i < 10; i++) {
- String group = "UNIT_TEST_GROUP_" + i;
- for (int id = 0; id < 10; id++) {
- assertEquals(consumerOffsetManager.queryOffset(group, "TOPIC_A", id), -1);
- assertEquals(consumerOffsetManager.queryOffset(group, "TOPIC_B", id), -1);
- assertEquals(consumerOffsetManager.queryOffset(group, "TOPIC_B", id), -1);
- }
- }
- consumerOffsetManager.load();
- for (int i = 0; i < 10; i++) {
- String group = "UNIT_TEST_GROUP_" + i;
- for (int id = 0; id < 10; id++) {
- assertEquals(consumerOffsetManager.queryOffset(group, "TOPIC_A", id), id + 100);
- assertEquals(consumerOffsetManager.queryOffset(group, "TOPIC_B", id), id + 100);
- assertEquals(consumerOffsetManager.queryOffset(group, "TOPIC_B", id), id + 100);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/c549854f/broker/src/test/java/org/apache/rocketmq/broker/topic/TopicConfigManagerTest.java
----------------------------------------------------------------------
diff --git a/broker/src/test/java/org/apache/rocketmq/broker/topic/TopicConfigManagerTest.java b/broker/src/test/java/org/apache/rocketmq/broker/topic/TopicConfigManagerTest.java
deleted file mode 100644
index e309be7..0000000
--- a/broker/src/test/java/org/apache/rocketmq/broker/topic/TopicConfigManagerTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * 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.
- */
-
-/**
- * $Id: TopicConfigManagerTest.java 1831 2013-05-16 01:39:51Z vintagewang@apache.org $
- */
-package org.apache.rocketmq.broker.topic;
-
-import org.apache.rocketmq.broker.BrokerTestHarness;
-import org.apache.rocketmq.common.MixAll;
-import org.apache.rocketmq.common.TopicConfig;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-public class TopicConfigManagerTest extends BrokerTestHarness {
- @Test
- public void testFlushTopicConfig() throws Exception {
- TopicConfigManager topicConfigManager = new TopicConfigManager(brokerController);
-
- for (int i = 0; i < 10; i++) {
- String topic = "UNITTEST-" + i;
- TopicConfig topicConfig = topicConfigManager.createTopicInSendMessageMethod(topic, MixAll.DEFAULT_TOPIC, null, 4, 0);
- assertNotNull(topicConfig);
- }
- topicConfigManager.persist();
-
- topicConfigManager.getTopicConfigTable().clear();
-
- for (int i = 0; i < 10; i++) {
- String topic = "UNITTEST-" + i;
- TopicConfig topicConfig = topicConfigManager.selectTopicConfig(topic);
- assertNull(topicConfig);
- }
- topicConfigManager.load();
- for (int i = 0; i < 10; i++) {
- String topic = "UNITTEST-" + i;
- TopicConfig topicConfig = topicConfigManager.selectTopicConfig(topic);
- assertNotNull(topicConfig);
- assertEquals(topicConfig.getTopicSysFlag(), 0);
- assertEquals(topicConfig.getReadQueueNums(), 4);
- }
- }
-}
[03/28] incubator-rocketmq git commit: Remove script command in
travis config file
Posted by st...@apache.org.
Remove script command in travis config file
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/df9d621b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/df9d621b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/df9d621b
Branch: refs/heads/ROCKETMQ-54
Commit: df9d621baac504ae2d7288a19a3907a3c02cd485
Parents: 0623b3c
Author: vongosling <vo...@apache.org>
Authored: Tue Jan 17 14:22:24 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Tue Jan 17 14:22:24 2017 +0800
----------------------------------------------------------------------
.travis.yml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/df9d621b/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index a9927e2..45b7d5d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,9 +4,9 @@ jdk:
- oraclejdk7
- openjdk7
-script:
- - travis_retry mvn --batch-mode clean apache-rat:check
- - travis_wait 60 mvn --batch-mode clean package findbugs:check
+#script:
+# - travis_retry mvn --batch-mode clean apache-rat:check
+# - travis_wait 60 mvn --batch-mode clean package findbugs:check
after_success:
- - mvn clean cobertura:cobertura coveralls:report
+ - mvn clean apache-rat:check cobertura:cobertura coveralls:report
[07/28] incubator-rocketmq git commit: polish osx platform for travis
Posted by st...@apache.org.
polish osx platform for travis
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/2cee0292
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/2cee0292
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/2cee0292
Branch: refs/heads/ROCKETMQ-54
Commit: 2cee029201a9f157208b8136693285668bfdb737
Parents: 7f33508
Author: vongosling <vo...@apache.org>
Authored: Wed Jan 18 11:02:03 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Wed Jan 18 11:02:03 2017 +0800
----------------------------------------------------------------------
.travis.yml | 38 +++++++++++++++++++++++++++++---------
1 file changed, 29 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/2cee0292/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index f82c45a..c41d858 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,15 +1,35 @@
-os:
- - linux
- - osx
+notifications:
+ email:
+ - dev@rocketmq.incubator.apache.org
+ on_success: change
+ on_failure: always
language: java
-jdk:
- - oraclejdk8
- - oraclejdk7
- - openjdk7
matrix:
include:
- - os: osx
- osx_image: xcode8
+ # On OSX, run with default JDK only.
+ - os: osx
+ # On Linux, run with specific JDKs only.
+ - os: linux
+ env: CUSTOM_JDK="oraclejdk8"
+ - os: linux
+ env: CUSTOM_JDK="oraclejdk7"
+ - os: linux
+ env: CUSTOM_JDK="openjdk7"
+
+before_install:
+ - echo 'MAVEN_OPTS="$MAVEN_OPTS -Xmx1024m -XX:MaxPermSize=512m -XX:+BytecodeVerificationLocal"' >> ~/.mavenrc
+ - cat ~/.mavenrc
+ - if [ "$TRAVIS_OS_NAME" == "osx" ]; then export JAVA_HOME=$(/usr/libexec/java_home); fi
+ - if [ "$TRAVIS_OS_NAME" == "linux" ]; then jdk_switcher use "$CUSTOM_JDK"; fi
+#
+#os:
+# - linux
+# - osx
+#jdk:
+# - oraclejdk8
+# - oraclejdk7
+# - openjdk7
+
#script:
# - travis_retry mvn --batch-mode clean apache-rat:check
[14/28] incubator-rocketmq git commit: Remove check goal in jacaco
plugin
Posted by st...@apache.org.
Remove check goal in jacaco plugin
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/4587775c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/4587775c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/4587775c
Branch: refs/heads/ROCKETMQ-54
Commit: 4587775c5169d8f7e4a50305cce4786f2823d5bf
Parents: 5cb7e38
Author: vongosling <vo...@apache.org>
Authored: Wed Jan 18 23:53:07 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Wed Jan 18 23:53:07 2017 +0800
----------------------------------------------------------------------
.travis.yml | 2 +-
pom.xml | 6 ------
2 files changed, 1 insertion(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/4587775c/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 9394f0a..dd57ba3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -36,7 +36,7 @@ before_install:
script:
- travis_retry mvn -B clean apache-rat:check
- - travis_retry mvn package jacoco:report coveralls:report
+ - travis_retry mvn -B package jacoco:report coveralls:report
after_success:
- mvn sonar:sonar
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/4587775c/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2966541..8ec8170 100644
--- a/pom.xml
+++ b/pom.xml
@@ -371,12 +371,6 @@
<goal>report-integration</goal>
</goals>
</execution>
- <execution>
- <id>default-check</id>
- <goals>
- <goal>check</goal>
- </goals>
- </execution>
</executions>
</plugin>
<plugin>
[11/28] incubator-rocketmq git commit: Fix typo error
Posted by st...@apache.org.
Fix typo error
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/02f8b14c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/02f8b14c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/02f8b14c
Branch: refs/heads/ROCKETMQ-54
Commit: 02f8b14c0b1b292d240c339fe3fdaa1071b72f27
Parents: 54967c3
Author: vongosling <vo...@apache.org>
Authored: Wed Jan 18 14:40:19 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Wed Jan 18 14:40:19 2017 +0800
----------------------------------------------------------------------
.travis.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/02f8b14c/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 2afd6bd..8701b48 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -35,7 +35,7 @@ before_install:
script:
- - travis_retry mvn -B clean apache-rat:check package jacoo:report coveralls:report
+ - travis_retry mvn -B clean apache-rat:check package jacoco:report coveralls:report
after_success:
- mvn sonar:sonar
[20/28] incubator-rocketmq git commit: [ROCKETMQ-52] Remove
unnecessary stubbing
Posted by st...@apache.org.
[ROCKETMQ-52] Remove unnecessary stubbing
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/4291348e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/4291348e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/4291348e
Branch: refs/heads/ROCKETMQ-54
Commit: 4291348ef7ce4f0cd7ff596e5b0c15908e41cf08
Parents: 9d8bd59
Author: yukon <yu...@apache.org>
Authored: Thu Jan 19 15:39:43 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
.../apache/rocketmq/client/consumer/DefaultMQPushConsumerTest.java | 2 --
1 file changed, 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/4291348e/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumerTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumerTest.java b/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumerTest.java
index 7f5c874..ce8b4d3 100644
--- a/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumerTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumerTest.java
@@ -55,7 +55,6 @@ import org.mockito.invocation.InvocationOnMock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.stubbing.Answer;
-import static org.apache.rocketmq.client.producer.DefaultMQProducerTest.createTopicRoute;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -111,7 +110,6 @@ public class DefaultMQPushConsumerTest {
when(mQClientFactory.findBrokerAddressInSubscribe(anyString(), anyLong(), anyBoolean())).thenReturn(new FindBrokerResult("127.0.0.1:10911", false));
mQClientFactory.registerConsumer(consumerGroup, pushConsumerImpl);
mQClientFactory.start();
- when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(createTopicRoute());
}
@After
[06/28] incubator-rocketmq git commit: Use xcode8 for osx test
Posted by st...@apache.org.
Use xcode8 for osx test
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/7f33508f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/7f33508f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/7f33508f
Branch: refs/heads/ROCKETMQ-54
Commit: 7f33508fbd5fe3cfb3fe74d696db489a04297f37
Parents: 1c52953
Author: yukon <yu...@apache.org>
Authored: Wed Jan 18 00:27:56 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Wed Jan 18 00:27:56 2017 +0800
----------------------------------------------------------------------
.travis.yml | 4 ++++
1 file changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/7f33508f/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 0019310..f82c45a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,6 +6,10 @@ jdk:
- oraclejdk8
- oraclejdk7
- openjdk7
+matrix:
+ include:
+ - os: osx
+ osx_image: xcode8
#script:
# - travis_retry mvn --batch-mode clean apache-rat:check
[23/28] incubator-rocketmq git commit: [ROCKETMQ-52] Use
MockitoJUnitRunner with Mock
Posted by st...@apache.org.
[ROCKETMQ-52] Use MockitoJUnitRunner with Mock
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/bbcb69ec
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/bbcb69ec
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/bbcb69ec
Branch: refs/heads/ROCKETMQ-54
Commit: bbcb69ec8de00c54b9fdc1678a628751912316de
Parents: 032bb2b
Author: yukon <yu...@apache.org>
Authored: Tue Jan 17 21:37:26 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
.../store/LocalFileOffsetStoreTest.java | 19 ++++++++--------
.../store/RemoteBrokerOffsetStoreTest.java | 23 ++++++++++----------
.../client/impl/MQClientAPIImplTest.java | 19 ++++++++--------
.../impl/factory/MQClientInstanceTest.java | 3 ---
4 files changed, 30 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/bbcb69ec/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java b/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
index 0a54855..0b522e6 100644
--- a/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
@@ -21,25 +21,26 @@ import java.util.HashSet;
import org.apache.rocketmq.client.ClientConfig;
import org.apache.rocketmq.client.impl.factory.MQClientInstance;
import org.apache.rocketmq.common.message.MessageQueue;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
+import org.junit.runner.RunWith;
import org.mockito.Mock;
-import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
+@RunWith(MockitoJUnitRunner.class)
public class LocalFileOffsetStoreTest {
@Mock
- private static MQClientInstance mQClientFactory;
- private static String group = "FooBarGroup";
- private static String topic = "FooBar";
- private static String brokerName = "DefaultBrokerName";
+ private MQClientInstance mQClientFactory;
+ private String group = "FooBarGroup";
+ private String topic = "FooBar";
+ private String brokerName = "DefaultBrokerName";
- @BeforeClass
- public static void init() {
+ @Before
+ public void init() {
System.setProperty("rocketmq.client.localOffsetStoreDir", System.getProperty("java.io.tmpdir") + ".rocketmq_offsets");
- mQClientFactory = Mockito.mock(MQClientInstance.class);
String clientId = new ClientConfig().buildMQClientId() + "#TestNamespace" + System.currentTimeMillis();
when(mQClientFactory.getClientId()).thenReturn(clientId);
}
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/bbcb69ec/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java b/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java
index 7ecb022..a13930f 100644
--- a/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java
@@ -27,10 +27,12 @@ import org.apache.rocketmq.common.message.MessageQueue;
import org.apache.rocketmq.common.protocol.header.QueryConsumerOffsetRequestHeader;
import org.apache.rocketmq.common.protocol.header.UpdateConsumerOffsetRequestHeader;
import org.apache.rocketmq.remoting.exception.RemotingException;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
+import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock;
+import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.stubbing.Answer;
import static org.assertj.core.api.Assertions.assertThat;
@@ -39,27 +41,24 @@ import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+@RunWith(MockitoJUnitRunner.class)
public class RemoteBrokerOffsetStoreTest {
@Mock
- private static MQClientInstance mQClientFactory;
+ private MQClientInstance mQClientFactory;
@Mock
- private static MQClientAPIImpl mqClientAPI;
- private static String group = "FooBarGroup";
- private static String topic = "FooBar";
- private static String brokerName = "DefaultBrokerName";
+ private MQClientAPIImpl mqClientAPI;
+ private String group = "FooBarGroup";
+ private String topic = "FooBar";
+ private String brokerName = "DefaultBrokerName";
- @BeforeClass
- public static void init() {
+ @Before
+ public void init() {
System.setProperty("rocketmq.client.localOffsetStoreDir", System.getProperty("java.io.tmpdir") + ".rocketmq_offsets");
- mQClientFactory = mock(MQClientInstance.class);
String clientId = new ClientConfig().buildMQClientId() + "#TestNamespace" + System.currentTimeMillis();
when(mQClientFactory.getClientId()).thenReturn(clientId);
when(mQClientFactory.findBrokerAddressInAdmin(brokerName)).thenReturn(new FindBrokerResult("127.0.0.1", false));
-
- mqClientAPI = mock(MQClientAPIImpl.class);
when(mQClientFactory.getMQClientAPIImpl()).thenReturn(mqClientAPI);
}
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/bbcb69ec/client/src/test/java/org/apache/rocketmq/client/impl/MQClientAPIImplTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/impl/MQClientAPIImplTest.java b/client/src/test/java/org/apache/rocketmq/client/impl/MQClientAPIImplTest.java
index cbcf560..3553738 100644
--- a/client/src/test/java/org/apache/rocketmq/client/impl/MQClientAPIImplTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/impl/MQClientAPIImplTest.java
@@ -35,13 +35,14 @@ import org.apache.rocketmq.remoting.RemotingClient;
import org.apache.rocketmq.remoting.exception.RemotingException;
import org.apache.rocketmq.remoting.exception.RemotingTimeoutException;
import org.apache.rocketmq.remoting.netty.NettyClientConfig;
-import org.apache.rocketmq.remoting.netty.NettyRemotingClient;
import org.apache.rocketmq.remoting.netty.ResponseFuture;
import org.apache.rocketmq.remoting.protocol.RemotingCommand;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
+import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock;
+import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.stubbing.Answer;
import static org.assertj.core.api.Assertions.assertThat;
@@ -52,14 +53,14 @@ import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
+@RunWith(MockitoJUnitRunner.class)
public class MQClientAPIImplTest {
- private static MQClientAPIImpl mqClientAPI = new MQClientAPIImpl(new NettyClientConfig(), null, null, new ClientConfig());
+ private MQClientAPIImpl mqClientAPI = new MQClientAPIImpl(new NettyClientConfig(), null, null, new ClientConfig());
@Mock
- private static RemotingClient remotingClient;
+ private RemotingClient remotingClient;
@Mock
- private static DefaultMQProducerImpl defaultMQProducerImpl;
+ private DefaultMQProducerImpl defaultMQProducerImpl;
private String brokerAddr = "127.0.0.1";
private String brokerName = "DefaultBroker";
@@ -67,10 +68,8 @@ public class MQClientAPIImplTest {
private static String topic = "FooBar";
private Message msg = new Message("FooBar", new byte[] {});
- @BeforeClass
- public static void init() throws Exception {
- remotingClient = mock(NettyRemotingClient.class);
- defaultMQProducerImpl = mock(DefaultMQProducerImpl.class);
+ @Before
+ public void init() throws Exception {
Field field = MQClientAPIImpl.class.getDeclaredField("remotingClient");
field.setAccessible(true);
field.set(mqClientAPI, remotingClient);
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/bbcb69ec/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java b/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
index b7b07c6..c32cdab 100644
--- a/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
@@ -32,7 +32,6 @@ import org.apache.rocketmq.common.protocol.route.TopicRouteData;
import org.apache.rocketmq.remoting.exception.RemotingException;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
import org.mockito.junit.MockitoJUnitRunner;
import static org.assertj.core.api.Assertions.assertThat;
@@ -40,9 +39,7 @@ import static org.mockito.Mockito.mock;
@RunWith(MockitoJUnitRunner.class)
public class MQClientInstanceTest {
- @InjectMocks
private MQClientInstance mqClientInstance = MQClientManager.getInstance().getAndCreateMQClientInstance(new ClientConfig());;
-
private String topic = "FooBar";
private String group = "FooBarGroup";
[26/28] incubator-rocketmq git commit: [ROCKETMQ-52] Add unit tests
for MQClientAPIImpl
Posted by st...@apache.org.
[ROCKETMQ-52] Add unit tests for MQClientAPIImpl
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/032bb2b3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/032bb2b3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/032bb2b3
Branch: refs/heads/ROCKETMQ-54
Commit: 032bb2b32e6fd288063b70690d318628db1a6abb
Parents: ba79706
Author: yukon <yu...@apache.org>
Authored: Tue Jan 17 20:46:16 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
.../client/common/ThreadLocalIndexTest.java | 1 -
.../store/LocalFileOffsetStoreTest.java | 1 -
.../store/RemoteBrokerOffsetStoreTest.java | 1 -
.../client/impl/MQClientAPIImplTest.java | 236 +++++++++++++++++++
.../impl/factory/MQClientInstanceTest.java | 7 +-
.../remoting/protocol/RemotingCommand.java | 4 +-
6 files changed, 238 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/032bb2b3/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java b/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java
index 350cde7..1be93ce 100644
--- a/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java
@@ -21,7 +21,6 @@ import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class ThreadLocalIndexTest {
-
@Test
public void testGetAndIncrement() throws Exception {
ThreadLocalIndex localIndex = new ThreadLocalIndex();
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/032bb2b3/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java b/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
index 58d99d6..0a54855 100644
--- a/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
@@ -30,7 +30,6 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
public class LocalFileOffsetStoreTest {
-
@Mock
private static MQClientInstance mQClientFactory;
private static String group = "FooBarGroup";
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/032bb2b3/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java b/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java
index 9a6a4b5..7ecb022 100644
--- a/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java
@@ -43,7 +43,6 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class RemoteBrokerOffsetStoreTest {
-
@Mock
private static MQClientInstance mQClientFactory;
@Mock
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/032bb2b3/client/src/test/java/org/apache/rocketmq/client/impl/MQClientAPIImplTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/impl/MQClientAPIImplTest.java b/client/src/test/java/org/apache/rocketmq/client/impl/MQClientAPIImplTest.java
new file mode 100644
index 0000000..cbcf560
--- /dev/null
+++ b/client/src/test/java/org/apache/rocketmq/client/impl/MQClientAPIImplTest.java
@@ -0,0 +1,236 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.rocketmq.client.impl;
+
+import java.lang.reflect.Field;
+import org.apache.rocketmq.client.ClientConfig;
+import org.apache.rocketmq.client.exception.MQBrokerException;
+import org.apache.rocketmq.client.hook.SendMessageContext;
+import org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl;
+import org.apache.rocketmq.client.producer.DefaultMQProducer;
+import org.apache.rocketmq.client.producer.SendCallback;
+import org.apache.rocketmq.client.producer.SendResult;
+import org.apache.rocketmq.client.producer.SendStatus;
+import org.apache.rocketmq.common.message.Message;
+import org.apache.rocketmq.common.message.MessageConst;
+import org.apache.rocketmq.common.protocol.ResponseCode;
+import org.apache.rocketmq.common.protocol.header.SendMessageRequestHeader;
+import org.apache.rocketmq.common.protocol.header.SendMessageResponseHeader;
+import org.apache.rocketmq.remoting.InvokeCallback;
+import org.apache.rocketmq.remoting.RemotingClient;
+import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.apache.rocketmq.remoting.exception.RemotingTimeoutException;
+import org.apache.rocketmq.remoting.netty.NettyClientConfig;
+import org.apache.rocketmq.remoting.netty.NettyRemotingClient;
+import org.apache.rocketmq.remoting.netty.ResponseFuture;
+import org.apache.rocketmq.remoting.protocol.RemotingCommand;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Fail.failBecauseExceptionWasNotThrown;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+
+public class MQClientAPIImplTest {
+ private static MQClientAPIImpl mqClientAPI = new MQClientAPIImpl(new NettyClientConfig(), null, null, new ClientConfig());
+ @Mock
+ private static RemotingClient remotingClient;
+ @Mock
+ private static DefaultMQProducerImpl defaultMQProducerImpl;
+
+ private String brokerAddr = "127.0.0.1";
+ private String brokerName = "DefaultBroker";
+ private static String group = "FooBarGroup";
+ private static String topic = "FooBar";
+ private Message msg = new Message("FooBar", new byte[] {});
+
+ @BeforeClass
+ public static void init() throws Exception {
+ remotingClient = mock(NettyRemotingClient.class);
+ defaultMQProducerImpl = mock(DefaultMQProducerImpl.class);
+ Field field = MQClientAPIImpl.class.getDeclaredField("remotingClient");
+ field.setAccessible(true);
+ field.set(mqClientAPI, remotingClient);
+ }
+
+ @Test
+ public void testSendMessageOneWay_Success() throws RemotingException, InterruptedException, MQBrokerException {
+ doNothing().when(remotingClient).invokeOneway(anyString(), any(RemotingCommand.class), anyLong());
+ SendResult sendResult = mqClientAPI.sendMessage(brokerAddr, brokerName, msg, new SendMessageRequestHeader(),
+ 3 * 1000, CommunicationMode.ONEWAY, new SendMessageContext(), defaultMQProducerImpl);
+ assertThat(sendResult).isNull();
+ }
+
+ @Test
+ public void testSendMessageOneWay_WithException() throws RemotingException, InterruptedException, MQBrokerException {
+ doThrow(new RemotingTimeoutException("Remoting Exception in Test")).when(remotingClient).invokeOneway(anyString(), any(RemotingCommand.class), anyLong());
+ try {
+ mqClientAPI.sendMessage(brokerAddr, brokerName, msg, new SendMessageRequestHeader(),
+ 3 * 1000, CommunicationMode.ONEWAY, new SendMessageContext(), defaultMQProducerImpl);
+ failBecauseExceptionWasNotThrown(RemotingException.class);
+ } catch (RemotingException e) {
+ assertThat(e).hasMessage("Remoting Exception in Test");
+ }
+
+ doThrow(new InterruptedException("Interrupted Exception in Test")).when(remotingClient).invokeOneway(anyString(), any(RemotingCommand.class), anyLong());
+ try {
+ mqClientAPI.sendMessage(brokerAddr, brokerName, msg, new SendMessageRequestHeader(),
+ 3 * 1000, CommunicationMode.ONEWAY, new SendMessageContext(), defaultMQProducerImpl);
+ failBecauseExceptionWasNotThrown(InterruptedException.class);
+ } catch (InterruptedException e) {
+ assertThat(e).hasMessage("Interrupted Exception in Test");
+ }
+ }
+
+ @Test
+ public void testSendMessageSync_Success() throws InterruptedException, RemotingException, MQBrokerException {
+ doAnswer(new Answer() {
+ @Override public Object answer(InvocationOnMock mock) throws Throwable {
+ RemotingCommand request = mock.getArgument(1);
+ return createSuccessResponse(request);
+ }
+ }).when(remotingClient).invokeSync(anyString(), any(RemotingCommand.class), anyLong());
+
+ SendMessageRequestHeader requestHeader = createSendMessageRequestHeader();
+
+ SendResult sendResult = mqClientAPI.sendMessage(brokerAddr, brokerName, msg, requestHeader,
+ 3 * 1000, CommunicationMode.SYNC, new SendMessageContext(), defaultMQProducerImpl);
+
+ assertThat(sendResult.getSendStatus()).isEqualTo(SendStatus.SEND_OK);
+ assertThat(sendResult.getOffsetMsgId()).isEqualTo("123");
+ assertThat(sendResult.getQueueOffset()).isEqualTo(123L);
+ assertThat(sendResult.getMessageQueue().getQueueId()).isEqualTo(1);
+ }
+
+ @Test
+ public void testSendMessageSync_WithException() throws InterruptedException, RemotingException, MQBrokerException {
+ doAnswer(new Answer() {
+ @Override public Object answer(InvocationOnMock mock) throws Throwable {
+ RemotingCommand request = mock.getArgument(1);
+ RemotingCommand response = RemotingCommand.createResponseCommand(SendMessageResponseHeader.class);
+ response.setCode(ResponseCode.SYSTEM_ERROR);
+ response.setOpaque(request.getOpaque());
+ response.setRemark("Broker is broken.");
+ return response;
+ }
+ }).when(remotingClient).invokeSync(anyString(), any(RemotingCommand.class), anyLong());
+
+ SendMessageRequestHeader requestHeader = createSendMessageRequestHeader();
+
+ try {
+ mqClientAPI.sendMessage(brokerAddr, brokerName, msg, requestHeader,
+ 3 * 1000, CommunicationMode.SYNC, new SendMessageContext(), defaultMQProducerImpl);
+ failBecauseExceptionWasNotThrown(MQBrokerException.class);
+ } catch (MQBrokerException e) {
+ assertThat(e).hasMessageContaining("Broker is broken.");
+ }
+ }
+
+ @Test
+ public void testSendMessageAsync_Success() throws RemotingException, InterruptedException, MQBrokerException {
+ doNothing().when(remotingClient).invokeAsync(anyString(), any(RemotingCommand.class), anyLong(), any(InvokeCallback.class));
+ SendResult sendResult = mqClientAPI.sendMessage(brokerAddr, brokerName, msg, new SendMessageRequestHeader(),
+ 3 * 1000, CommunicationMode.ASYNC, new SendMessageContext(), defaultMQProducerImpl);
+ assertThat(sendResult).isNull();
+
+ doAnswer(new Answer() {
+ @Override public Object answer(InvocationOnMock mock) throws Throwable {
+ InvokeCallback callback = mock.getArgument(3);
+ RemotingCommand request = mock.getArgument(1);
+ ResponseFuture responseFuture = new ResponseFuture(request.getOpaque(), 3 * 1000, null, null);
+ responseFuture.setResponseCommand(createSuccessResponse(request));
+ callback.operationComplete(responseFuture);
+ return null;
+ }
+ }).when(remotingClient).invokeAsync(anyString(), any(RemotingCommand.class), anyLong(), any(InvokeCallback.class));
+ SendMessageContext sendMessageContext = new SendMessageContext();
+ sendMessageContext.setProducer(new DefaultMQProducerImpl(new DefaultMQProducer()));
+ mqClientAPI.sendMessage(brokerAddr, brokerName, msg, new SendMessageRequestHeader(), 3 * 1000, CommunicationMode.ASYNC,
+ new SendCallback() {
+ @Override public void onSuccess(SendResult sendResult) {
+ assertThat(sendResult.getSendStatus()).isEqualTo(SendStatus.SEND_OK);
+ assertThat(sendResult.getOffsetMsgId()).isEqualTo("123");
+ assertThat(sendResult.getQueueOffset()).isEqualTo(123L);
+ assertThat(sendResult.getMessageQueue().getQueueId()).isEqualTo(1);
+ }
+
+ @Override public void onException(Throwable e) {
+ }
+ },
+ null, null, 0, sendMessageContext, defaultMQProducerImpl);
+ }
+
+ @Test
+ public void testSendMessageAsync_WithException() throws RemotingException, InterruptedException, MQBrokerException {
+ doThrow(new RemotingTimeoutException("Remoting Exception in Test")).when(remotingClient)
+ .invokeAsync(anyString(), any(RemotingCommand.class), anyLong(), any(InvokeCallback.class));
+ try {
+ mqClientAPI.sendMessage(brokerAddr, brokerName, msg, new SendMessageRequestHeader(),
+ 3 * 1000, CommunicationMode.ASYNC, new SendMessageContext(), defaultMQProducerImpl);
+ failBecauseExceptionWasNotThrown(RemotingException.class);
+ } catch (RemotingException e) {
+ assertThat(e).hasMessage("Remoting Exception in Test");
+ }
+
+ doThrow(new InterruptedException("Interrupted Exception in Test")).when(remotingClient)
+ .invokeAsync(anyString(), any(RemotingCommand.class), anyLong(), any(InvokeCallback.class));
+ try {
+ mqClientAPI.sendMessage(brokerAddr, brokerName, msg, new SendMessageRequestHeader(),
+ 3 * 1000, CommunicationMode.ASYNC, new SendMessageContext(), defaultMQProducerImpl);
+ failBecauseExceptionWasNotThrown(InterruptedException.class);
+ } catch (InterruptedException e) {
+ assertThat(e).hasMessage("Interrupted Exception in Test");
+ }
+ }
+
+ private RemotingCommand createSuccessResponse(RemotingCommand request) {
+ RemotingCommand response = RemotingCommand.createResponseCommand(SendMessageResponseHeader.class);
+ response.setCode(ResponseCode.SUCCESS);
+ response.setOpaque(request.getOpaque());
+
+ SendMessageResponseHeader responseHeader = (SendMessageResponseHeader) response.readCustomHeader();
+ responseHeader.setMsgId("123");
+ responseHeader.setQueueId(1);
+ responseHeader.setQueueOffset(123L);
+
+ response.addExtField(MessageConst.PROPERTY_MSG_REGION, "RegionHZ");
+ response.addExtField(MessageConst.PROPERTY_TRACE_SWITCH, "true");
+ response.addExtField("queueId", String.valueOf(responseHeader.getQueueId()));
+ response.addExtField("msgId", responseHeader.getMsgId());
+ response.addExtField("queueOffset", String.valueOf(responseHeader.getQueueOffset()));
+ return response;
+ }
+
+ private SendMessageRequestHeader createSendMessageRequestHeader() {
+ SendMessageRequestHeader requestHeader = new SendMessageRequestHeader();
+ requestHeader.setBornTimestamp(System.currentTimeMillis());
+ requestHeader.setTopic(topic);
+ requestHeader.setProducerGroup(group);
+ requestHeader.setQueueId(1);
+ requestHeader.setMaxReconsumeTimes(10);
+ return requestHeader;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/032bb2b3/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java b/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
index 956cdd9..b7b07c6 100644
--- a/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
@@ -22,7 +22,6 @@ import java.util.List;
import org.apache.rocketmq.client.ClientConfig;
import org.apache.rocketmq.client.admin.MQAdminExtInner;
import org.apache.rocketmq.client.exception.MQBrokerException;
-import org.apache.rocketmq.client.impl.MQClientAPIImpl;
import org.apache.rocketmq.client.impl.MQClientManager;
import org.apache.rocketmq.client.impl.consumer.MQConsumerInner;
import org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl;
@@ -34,7 +33,6 @@ import org.apache.rocketmq.remoting.exception.RemotingException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
-import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static org.assertj.core.api.Assertions.assertThat;
@@ -42,11 +40,8 @@ import static org.mockito.Mockito.mock;
@RunWith(MockitoJUnitRunner.class)
public class MQClientInstanceTest {
-
- @Mock
- private static MQClientAPIImpl mqClientAPI;
@InjectMocks
- private static MQClientInstance mqClientInstance = MQClientManager.getInstance().getAndCreateMQClientInstance(new ClientConfig());;
+ private MQClientInstance mqClientInstance = MQClientManager.getInstance().getAndCreateMQClientInstance(new ClientConfig());;
private String topic = "FooBar";
private String group = "FooBarGroup";
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/032bb2b3/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
----------------------------------------------------------------------
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
index 46ca8dd..99c13fb 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
@@ -114,9 +114,7 @@ public class RemotingCommand {
}
public static RemotingCommand createResponseCommand(Class<? extends CommandCustomHeader> classHeader) {
- RemotingCommand cmd = createResponseCommand(RemotingSysResponseCode.SYSTEM_ERROR, "not set any response code", classHeader);
-
- return cmd;
+ return createResponseCommand(RemotingSysResponseCode.SYSTEM_ERROR, "not set any response code", classHeader);
}
/**
[16/28] incubator-rocketmq git commit: [ROCKETMQ-52] Add unit tests
for Validators and ThreadLocalIndex
Posted by st...@apache.org.
[ROCKETMQ-52] Add unit tests for Validators and ThreadLocalIndex
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/edde487e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/edde487e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/edde487e
Branch: refs/heads/ROCKETMQ-54
Commit: edde487ed932b7e5b6700b203a897ed7c08c8373
Parents: 4587775
Author: yukon <yu...@apache.org>
Authored: Tue Jan 17 12:53:23 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
client/pom.xml | 4 ++
.../org/apache/rocketmq/client/Validators.java | 8 +--
.../client/common/ThreadLocalIndex.java | 4 --
.../client/impl/producer/TopicPublishInfo.java | 2 +-
.../latency/LatencyFaultToleranceImpl.java | 2 +-
.../apache/rocketmq/client/ValidatorsTest.java | 52 +++++++++++++++++++-
.../client/common/ThreadLocalIndexTest.java | 33 +++++++++++++
7 files changed, 94 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/edde487e/client/pom.xml
----------------------------------------------------------------------
diff --git a/client/pom.xml b/client/pom.xml
index 713523d..3a0f6ae 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -38,5 +38,9 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ </dependency>
</dependencies>
</project>
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/edde487e/client/src/main/java/org/apache/rocketmq/client/Validators.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/rocketmq/client/Validators.java b/client/src/main/java/org/apache/rocketmq/client/Validators.java
index 7ea1bf9..899efa6 100644
--- a/client/src/main/java/org/apache/rocketmq/client/Validators.java
+++ b/client/src/main/java/org/apache/rocketmq/client/Validators.java
@@ -118,23 +118,23 @@ public class Validators {
*/
public static void checkTopic(String topic) throws MQClientException {
if (UtilAll.isBlank(topic)) {
- throw new MQClientException("the specified topic is blank", null);
+ throw new MQClientException("The specified topic is blank", null);
}
if (!regularExpressionMatcher(topic, PATTERN)) {
throw new MQClientException(String.format(
- "the specified topic[%s] contains illegal characters, allowing only %s", topic,
+ "The specified topic[%s] contains illegal characters, allowing only %s", topic,
VALID_PATTERN_STR), null);
}
if (topic.length() > CHARACTER_MAX_LENGTH) {
- throw new MQClientException("the specified topic is longer than topic max length 255.", null);
+ throw new MQClientException("The specified topic is longer than topic max length 255.", null);
}
//whether the same with system reserved keyword
if (topic.equals(MixAll.DEFAULT_TOPIC)) {
throw new MQClientException(
- String.format("the topic[%s] is conflict with default topic.", topic), null);
+ String.format("The topic[%s] is conflict with default topic.", topic), null);
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/edde487e/client/src/main/java/org/apache/rocketmq/client/common/ThreadLocalIndex.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/rocketmq/client/common/ThreadLocalIndex.java b/client/src/main/java/org/apache/rocketmq/client/common/ThreadLocalIndex.java
index a30b5da..ab223c3 100644
--- a/client/src/main/java/org/apache/rocketmq/client/common/ThreadLocalIndex.java
+++ b/client/src/main/java/org/apache/rocketmq/client/common/ThreadLocalIndex.java
@@ -23,10 +23,6 @@ public class ThreadLocalIndex {
private final ThreadLocal<Integer> threadLocalIndex = new ThreadLocal<Integer>();
private final Random random = new Random();
- public ThreadLocalIndex(int value) {
-
- }
-
public int getAndIncrement() {
Integer index = this.threadLocalIndex.get();
if (null == index) {
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/edde487e/client/src/main/java/org/apache/rocketmq/client/impl/producer/TopicPublishInfo.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/producer/TopicPublishInfo.java b/client/src/main/java/org/apache/rocketmq/client/impl/producer/TopicPublishInfo.java
index 52c5cfb..deb02cf 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/producer/TopicPublishInfo.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/producer/TopicPublishInfo.java
@@ -27,7 +27,7 @@ public class TopicPublishInfo {
private boolean orderTopic = false;
private boolean haveTopicRouterInfo = false;
private List<MessageQueue> messageQueueList = new ArrayList<MessageQueue>();
- private volatile ThreadLocalIndex sendWhichQueue = new ThreadLocalIndex(0);
+ private volatile ThreadLocalIndex sendWhichQueue = new ThreadLocalIndex();
private TopicRouteData topicRouteData;
public boolean isOrderTopic() {
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/edde487e/client/src/main/java/org/apache/rocketmq/client/latency/LatencyFaultToleranceImpl.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/rocketmq/client/latency/LatencyFaultToleranceImpl.java b/client/src/main/java/org/apache/rocketmq/client/latency/LatencyFaultToleranceImpl.java
index 5309bc9..72d4347 100644
--- a/client/src/main/java/org/apache/rocketmq/client/latency/LatencyFaultToleranceImpl.java
+++ b/client/src/main/java/org/apache/rocketmq/client/latency/LatencyFaultToleranceImpl.java
@@ -27,7 +27,7 @@ import org.apache.rocketmq.client.common.ThreadLocalIndex;
public class LatencyFaultToleranceImpl implements LatencyFaultTolerance<String> {
private final ConcurrentHashMap<String, FaultItem> faultItemTable = new ConcurrentHashMap<String, FaultItem>(16);
- private final ThreadLocalIndex whichItemWorst = new ThreadLocalIndex(0);
+ private final ThreadLocalIndex whichItemWorst = new ThreadLocalIndex();
@Override
public void updateFaultItem(final String name, final long currentLatency, final long notAvailableDuration) {
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/edde487e/client/src/test/java/org/apache/rocketmq/client/ValidatorsTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/ValidatorsTest.java b/client/src/test/java/org/apache/rocketmq/client/ValidatorsTest.java
index 6775404..2db648d 100644
--- a/client/src/test/java/org/apache/rocketmq/client/ValidatorsTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/ValidatorsTest.java
@@ -17,17 +17,67 @@
package org.apache.rocketmq.client;
+import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.client.exception.MQClientException;
+import org.apache.rocketmq.common.MixAll;
import org.junit.Test;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Fail.failBecauseExceptionWasNotThrown;
+
public class ValidatorsTest {
@Test
- public void topicValidatorTest() throws MQClientException {
+ public void testCheckTopic_Success() throws MQClientException {
Validators.checkTopic("Hello");
Validators.checkTopic("%RETRY%Hello");
Validators.checkTopic("_%RETRY%Hello");
Validators.checkTopic("-%RETRY%Hello");
Validators.checkTopic("223-%RETRY%Hello");
}
+
+ @Test
+ public void testCheckTopic_HasIllegalCharacters() {
+ String illegalTopic = "TOPIC&*^";
+ try {
+ Validators.checkTopic(illegalTopic);
+ failBecauseExceptionWasNotThrown(MQClientException.class);
+ } catch (MQClientException e) {
+ assertThat(e).hasMessageStartingWith(String.format("The specified topic[%s] contains illegal characters, allowing only %s", illegalTopic, Validators.VALID_PATTERN_STR));
+ }
+ }
+
+ @Test
+ public void testCheckTopic_UseDefaultTopic() {
+ String defaultTopic = MixAll.DEFAULT_TOPIC;
+ try {
+ Validators.checkTopic(defaultTopic);
+ failBecauseExceptionWasNotThrown(MQClientException.class);
+ } catch (MQClientException e) {
+ assertThat(e).hasMessageStartingWith(String.format("The topic[%s] is conflict with default topic.", defaultTopic));
+ }
+ }
+
+ @Test
+ public void testCheckTopic_BlankTopic() {
+ String blankTopic = "";
+ try {
+ Validators.checkTopic(blankTopic);
+ failBecauseExceptionWasNotThrown(MQClientException.class);
+ } catch (MQClientException e) {
+ assertThat(e).hasMessageStartingWith("The specified topic is blank");
+ }
+ }
+
+ @Test
+ public void testCheckTopic_TooLongTopic() {
+ String tooLongTopic = StringUtils.rightPad("TooLongTopic", Validators.CHARACTER_MAX_LENGTH + 1, "_");
+ assertThat(tooLongTopic.length()).isGreaterThan(Validators.CHARACTER_MAX_LENGTH);
+ try {
+ Validators.checkTopic(tooLongTopic);
+ failBecauseExceptionWasNotThrown(MQClientException.class);
+ } catch (MQClientException e) {
+ assertThat(e).hasMessageStartingWith("The specified topic is longer than topic max length 255.");
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/edde487e/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java b/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java
new file mode 100644
index 0000000..b937e45
--- /dev/null
+++ b/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.rocketmq.client.common;
+
+import org.junit.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ThreadLocalIndexTest {
+
+ @Test
+ public void getAndIncrement() throws Exception {
+ ThreadLocalIndex localIndex = new ThreadLocalIndex();
+ int initialVal = localIndex.getAndIncrement();
+
+ assertThat(localIndex.getAndIncrement()).isEqualTo(initialVal + 1);
+ }
+
+}
\ No newline at end of file
[28/28] incubator-rocketmq git commit: [ROCKETMQ-54] resolve conflict
Posted by st...@apache.org.
[ROCKETMQ-54] resolve conflict
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/a06a5176
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/a06a5176
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/a06a5176
Branch: refs/heads/ROCKETMQ-54
Commit: a06a517635d9c41711644caa8eed7ac46760ea5f
Parents: 3884370 4291348
Author: stevenschew <st...@apache.org>
Authored: Thu Jan 19 20:45:32 2017 +0800
Committer: stevenschew <st...@apache.org>
Committed: Thu Jan 19 20:45:32 2017 +0800
----------------------------------------------------------------------
.travis.yml | 45 +++-
README.md | 2 +-
.../rocketmq/broker/BrokerTestHarness.java | 69 ------
.../broker/api/BrokerFastFailureTest.java | 61 -----
.../rocketmq/broker/api/SendMessageTest.java | 79 ------
.../offset/ConsumerOffsetManagerTest.java | 61 -----
.../broker/topic/TopicConfigManagerTest.java | 60 -----
.../consumer/DefaultMQPullConsumerTest.java | 152 ++++++++++++
.../consumer/DefaultMQPushConsumerTest.java | 178 +++++++++++++
.../store/LocalFileOffsetStoreTest.java | 3 +-
.../impl/factory/MQClientInstanceTest.java | 6 +-
.../client/producer/DefaultMQProducerTest.java | 248 +++++++++++++++++++
pom.xml | 76 +++++-
13 files changed, 696 insertions(+), 344 deletions(-)
----------------------------------------------------------------------
[12/28] incubator-rocketmq git commit: Polish travis-ci for jacoco
Posted by st...@apache.org.
Polish travis-ci for jacoco
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/3e3988d6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/3e3988d6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/3e3988d6
Branch: refs/heads/ROCKETMQ-54
Commit: 3e3988d612ce128e560719230988fd06aaad3012
Parents: 02f8b14
Author: vongosling <vo...@apache.org>
Authored: Wed Jan 18 23:10:33 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Wed Jan 18 23:10:33 2017 +0800
----------------------------------------------------------------------
pom.xml | 48 ++++++++++++++++++++++++++++++------------------
1 file changed, 30 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/3e3988d6/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index e9ab2ea..2966541 100644
--- a/pom.xml
+++ b/pom.xml
@@ -154,21 +154,16 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <!--maven properties -->
+ <!-- Maven properties -->
<maven.test.skip>false</maven.test.skip>
<maven.javadoc.skip>true</maven.javadoc.skip>
- <!-- compiler settings properties -->
+ <!-- Compiler settings properties -->
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
- <!-- BEFORE SonarQube 4.4.0 - the destination file for the code coverage report has to be set to the same value
- in the parent pom and in each module pom. Then JaCoCo will add up information in
- the same report, so that, it will give the cross-module code coverage. -->
+ <!-- Overwritten by the test configuration,otherwise the JaCoCo agent cannot be attached.Details see http://www.eclemma.org/jacoco/trunk/doc/prepare-agent-mojo.html -->
+ <argLine>-Xms512m -Xmx1024m</argLine>
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
- <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
- <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
- <sonar.jacoco.itReportPath>${project.basedir}/../target/jacoco-it.exec</sonar.jacoco.itReportPath>
- <sonar.language>java</sonar.language>
<!-- URL of the ASF SonarQube server -->
<sonar.host.url>https://builds.apache.org/analysis</sonar.host.url>
<!-- Exclude all generated code -->
@@ -245,13 +240,22 @@
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
- <argLine>-Xms512m -Xmx1024m</argLine>
+ <forkCount>1</forkCount>
+ <reuseForks>true</reuseForks>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
<plugin>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <version>2.19.1</version>
+ <configuration>
+ <forkCount>1</forkCount>
+ <reuseForks>true</reuseForks>
+ </configuration>
+ </plugin>
+ <plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
<configuration>
@@ -341,30 +345,38 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
- <version>0.7.6.201602180812</version>
- <configuration>
- <append>true</append>
- </configuration>
+ <version>0.7.8</version>
<executions>
<execution>
- <id>agent-for-ut</id>
+ <id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
- <id>agent-for-it</id>
+ <id>default-prepare-agent-integration</id>
<goals>
<goal>prepare-agent-integration</goal>
</goals>
</execution>
<execution>
- <id>report</id>
- <phase>prepare-package</phase>
+ <id>default-report</id>
<goals>
<goal>report</goal>
</goals>
</execution>
+ <execution>
+ <id>default-report-integration</id>
+ <goals>
+ <goal>report-integration</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>default-check</id>
+ <goals>
+ <goal>check</goal>
+ </goals>
+ </execution>
</executions>
</plugin>
<plugin>
[08/28] incubator-rocketmq git commit: Bugfix for valid yaml
Posted by st...@apache.org.
Bugfix for valid yaml
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/3daf24e8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/3daf24e8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/3daf24e8
Branch: refs/heads/ROCKETMQ-54
Commit: 3daf24e8266e0e0d334b389f0ab452566acd6b12
Parents: 2cee029
Author: vongosling <vo...@apache.org>
Authored: Wed Jan 18 11:06:38 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Wed Jan 18 11:06:38 2017 +0800
----------------------------------------------------------------------
.travis.yml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/3daf24e8/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index c41d858..4d33a4e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,8 +1,8 @@
notifications:
email:
- - dev@rocketmq.incubator.apache.org
- on_success: change
- on_failure: always
+ - dev@rocketmq.incubator.apache.org
+ on_success: change
+ on_failure: always
language: java
matrix:
include:
[24/28] incubator-rocketmq git commit: [ROCKETMQ-52] Add unit tests
for DefaultMQPullConsumer
Posted by st...@apache.org.
[ROCKETMQ-52] Add unit tests for DefaultMQPullConsumer
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/acf9bc37
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/acf9bc37
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/acf9bc37
Branch: refs/heads/ROCKETMQ-54
Commit: acf9bc37ea987456e997259c496905e44cd71461
Parents: c549854
Author: yukon <yu...@apache.org>
Authored: Thu Jan 19 10:43:39 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
.../consumer/DefaultMQPullConsumerTest.java | 152 +++++++++++
.../impl/producer/DefaultMQProducerTest.java | 250 -------------------
.../client/producer/DefaultMQProducerTest.java | 248 ++++++++++++++++++
3 files changed, 400 insertions(+), 250 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/acf9bc37/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPullConsumerTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPullConsumerTest.java b/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPullConsumerTest.java
new file mode 100644
index 0000000..6dc4ed8
--- /dev/null
+++ b/client/src/test/java/org/apache/rocketmq/client/consumer/DefaultMQPullConsumerTest.java
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.rocketmq.client.consumer;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import org.apache.rocketmq.client.ClientConfig;
+import org.apache.rocketmq.client.impl.CommunicationMode;
+import org.apache.rocketmq.client.impl.FindBrokerResult;
+import org.apache.rocketmq.client.impl.MQClientAPIImpl;
+import org.apache.rocketmq.client.impl.MQClientManager;
+import org.apache.rocketmq.client.impl.consumer.PullAPIWrapper;
+import org.apache.rocketmq.client.impl.consumer.PullResultExt;
+import org.apache.rocketmq.client.impl.factory.MQClientInstance;
+import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.common.protocol.header.PullMessageRequestHeader;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.stubbing.Answer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.when;
+
+@RunWith(MockitoJUnitRunner.class)
+public class DefaultMQPullConsumerTest {
+ @Spy
+ private MQClientInstance mQClientFactory = MQClientManager.getInstance().getAndCreateMQClientInstance(new ClientConfig());
+ @Mock
+ private MQClientAPIImpl mQClientAPIImpl;
+ private DefaultMQPullConsumer pullConsumer;
+ private String consumerGroup = "FooBarGroup";
+ private String topic = "FooBar";
+ private String brokerName = "BrokerA";
+
+ @Before
+ public void init() throws Exception {
+ pullConsumer = new DefaultMQPullConsumer(consumerGroup);
+ pullConsumer.setNamesrvAddr("127.0.0.1:9876");
+ pullConsumer.start();
+ PullAPIWrapper pullAPIWrapper = pullConsumer.getDefaultMQPullConsumerImpl().getPullAPIWrapper();
+ Field field = PullAPIWrapper.class.getDeclaredField("mQClientFactory");
+ field.setAccessible(true);
+ field.set(pullAPIWrapper, mQClientFactory);
+
+ field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl");
+ field.setAccessible(true);
+ field.set(mQClientFactory, mQClientAPIImpl);
+
+ when(mQClientFactory.findBrokerAddressInSubscribe(anyString(), anyLong(), anyBoolean())).thenReturn(new FindBrokerResult("127.0.0.1:10911", false));
+ }
+
+ @After
+ public void terminate() {
+ pullConsumer.shutdown();
+ }
+
+ @Test
+ public void testPullMessage_Success() throws Exception {
+ doAnswer(new Answer() {
+ @Override public Object answer(InvocationOnMock mock) throws Throwable {
+ PullMessageRequestHeader requestHeader = mock.getArgument(1);
+ return createPullResult(requestHeader, PullStatus.FOUND, Collections.singletonList(new MessageExt()));
+ }
+ }).when(mQClientAPIImpl).pullMessage(anyString(), any(PullMessageRequestHeader.class), anyLong(), any(CommunicationMode.class), nullable(PullCallback.class));
+
+ MessageQueue messageQueue = new MessageQueue(topic, brokerName, 0);
+ PullResult pullResult = pullConsumer.pull(messageQueue, "*", 1024, 3);
+ assertThat(pullResult).isNotNull();
+ assertThat(pullResult.getPullStatus()).isEqualTo(PullStatus.FOUND);
+ assertThat(pullResult.getNextBeginOffset()).isEqualTo(1024 + 1);
+ assertThat(pullResult.getMinOffset()).isEqualTo(123);
+ assertThat(pullResult.getMaxOffset()).isEqualTo(2048);
+ assertThat(pullResult.getMsgFoundList()).isEqualTo(new ArrayList<>());
+ }
+
+ @Test
+ public void testPullMessage_NotFound() throws Exception{
+ doAnswer(new Answer() {
+ @Override public Object answer(InvocationOnMock mock) throws Throwable {
+ PullMessageRequestHeader requestHeader = mock.getArgument(1);
+ return createPullResult(requestHeader, PullStatus.NO_NEW_MSG, new ArrayList<MessageExt>());
+ }
+ }).when(mQClientAPIImpl).pullMessage(anyString(), any(PullMessageRequestHeader.class), anyLong(), any(CommunicationMode.class), nullable(PullCallback.class));
+
+ MessageQueue messageQueue = new MessageQueue(topic, brokerName, 0);
+ PullResult pullResult = pullConsumer.pull(messageQueue, "*", 1024, 3);
+ assertThat(pullResult.getPullStatus()).isEqualTo(PullStatus.NO_NEW_MSG);
+ }
+
+ @Test
+ public void testPullMessageAsync_Success() throws Exception {
+ doAnswer(new Answer() {
+ @Override public Object answer(InvocationOnMock mock) throws Throwable {
+ PullMessageRequestHeader requestHeader = mock.getArgument(1);
+ PullResult pullResult = createPullResult(requestHeader, PullStatus.FOUND, Collections.singletonList(new MessageExt()));
+
+ PullCallback pullCallback = mock.getArgument(4);
+ pullCallback.onSuccess(pullResult);
+ return null;
+ }
+ }).when(mQClientAPIImpl).pullMessage(anyString(), any(PullMessageRequestHeader.class), anyLong(), any(CommunicationMode.class), nullable(PullCallback.class));
+
+ MessageQueue messageQueue = new MessageQueue(topic, brokerName, 0);
+ pullConsumer.pull(messageQueue, "*", 1024, 3, new PullCallback() {
+ @Override public void onSuccess(PullResult pullResult) {
+ assertThat(pullResult).isNotNull();
+ assertThat(pullResult.getPullStatus()).isEqualTo(PullStatus.FOUND);
+ assertThat(pullResult.getNextBeginOffset()).isEqualTo(1024 + 1);
+ assertThat(pullResult.getMinOffset()).isEqualTo(123);
+ assertThat(pullResult.getMaxOffset()).isEqualTo(2048);
+ assertThat(pullResult.getMsgFoundList()).isEqualTo(new ArrayList<>());
+ }
+
+ @Override public void onException(Throwable e) {
+
+ }
+ });
+ }
+
+ private PullResultExt createPullResult(PullMessageRequestHeader requestHeader, PullStatus pullStatus, List<MessageExt> messageExtList) {
+ return new PullResultExt(pullStatus, requestHeader.getQueueOffset() + messageExtList.size(), 123, 2048, messageExtList, 0, new byte[] {});
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/acf9bc37/client/src/test/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerTest.java b/client/src/test/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerTest.java
deleted file mode 100644
index 5946ea8..0000000
--- a/client/src/test/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerTest.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * 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.
- */
-package org.apache.rocketmq.client.impl.producer;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import org.apache.rocketmq.client.ClientConfig;
-import org.apache.rocketmq.client.exception.MQBrokerException;
-import org.apache.rocketmq.client.exception.MQClientException;
-import org.apache.rocketmq.client.hook.SendMessageContext;
-import org.apache.rocketmq.client.hook.SendMessageHook;
-import org.apache.rocketmq.client.impl.CommunicationMode;
-import org.apache.rocketmq.client.impl.MQClientAPIImpl;
-import org.apache.rocketmq.client.impl.MQClientManager;
-import org.apache.rocketmq.client.impl.factory.MQClientInstance;
-import org.apache.rocketmq.client.producer.DefaultMQProducer;
-import org.apache.rocketmq.client.producer.SendCallback;
-import org.apache.rocketmq.client.producer.SendResult;
-import org.apache.rocketmq.client.producer.SendStatus;
-import org.apache.rocketmq.common.message.Message;
-import org.apache.rocketmq.common.protocol.header.SendMessageRequestHeader;
-import org.apache.rocketmq.common.protocol.route.BrokerData;
-import org.apache.rocketmq.common.protocol.route.QueueData;
-import org.apache.rocketmq.common.protocol.route.TopicRouteData;
-import org.apache.rocketmq.remoting.exception.RemotingException;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.mockito.junit.MockitoJUnitRunner;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Fail.failBecauseExceptionWasNotThrown;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyLong;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.nullable;
-import static org.mockito.Mockito.when;
-
-@RunWith(MockitoJUnitRunner.class)
-public class DefaultMQProducerTest {
- @Spy
- private MQClientInstance mQClientFactory = MQClientManager.getInstance().getAndCreateMQClientInstance(new ClientConfig());
- @Mock
- private MQClientAPIImpl mQClientAPIImpl;
-
- private DefaultMQProducer producer;
- private Message message;
- private Message zeroMsg;
- private String topic = "FooBar";
- private String producerGroupPrefix = "FooBar_PID";
-
- @Before
- public void init() throws Exception {
- String producerGroupTemp = producerGroupPrefix + System.currentTimeMillis();
- producer = new DefaultMQProducer(producerGroupTemp);
- producer.setNamesrvAddr("127.0.0.1:9876");
- message = new Message(topic, new byte[] {'a'});
- zeroMsg = new Message(topic, new byte[] {});
-
- producer.start();
-
- Field field = DefaultMQProducerImpl.class.getDeclaredField("mQClientFactory");
- field.setAccessible(true);
- field.set(producer.getDefaultMQProducerImpl(), mQClientFactory);
-
- field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl");
- field.setAccessible(true);
- field.set(mQClientFactory, mQClientAPIImpl);
-
- producer.getDefaultMQProducerImpl().getmQClientFactory().registerProducer(producerGroupTemp, producer.getDefaultMQProducerImpl());
-
- when(mQClientAPIImpl.sendMessage(anyString(), anyString(), any(Message.class), any(SendMessageRequestHeader.class), anyLong(), any(CommunicationMode.class),
- nullable(SendMessageContext.class), any(DefaultMQProducerImpl.class))).thenCallRealMethod();
- when(mQClientAPIImpl.sendMessage(anyString(), anyString(), any(Message.class), any(SendMessageRequestHeader.class), anyLong(), any(CommunicationMode.class),
- nullable(SendCallback.class), nullable(TopicPublishInfo.class), nullable(MQClientInstance.class), anyInt(), nullable(SendMessageContext.class), any(DefaultMQProducerImpl.class)))
- .thenReturn(createSendResult(SendStatus.SEND_OK));
- }
-
- @After
- public void terminate() {
- producer.shutdown();
- }
-
- @Test
- public void testSendMessage_ZeroMessage() throws InterruptedException, RemotingException, MQBrokerException {
- try {
- producer.send(zeroMsg);
- failBecauseExceptionWasNotThrown(MQClientException.class);
- } catch (MQClientException e) {
- assertThat(e).hasMessageContaining("message body length is zero");
- }
- }
-
- @Test
- public void testSendMessage_NoNameSrv() throws RemotingException, InterruptedException, MQBrokerException {
- when(mQClientAPIImpl.getNameServerAddressList()).thenReturn(new ArrayList<String>());
- try {
- producer.send(message);
- failBecauseExceptionWasNotThrown(MQClientException.class);
- } catch (MQClientException e) {
- assertThat(e).hasMessageContaining("No name server address");
- }
- }
-
- @Test
- public void testSendMessage_NoRoute() throws RemotingException, InterruptedException, MQBrokerException {
- when(mQClientAPIImpl.getNameServerAddressList()).thenReturn(Collections.singletonList("127.0.0.1:9876"));
- try {
- producer.send(message);
- failBecauseExceptionWasNotThrown(MQClientException.class);
- } catch (MQClientException e) {
- assertThat(e).hasMessageContaining("No route info of this topic");
- }
- }
-
- @Test
- public void testSendMessageSync_Success() throws RemotingException, InterruptedException, MQBrokerException, MQClientException {
- when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(createTopicRoute());
- SendResult sendResult = producer.send(message);
-
- assertThat(sendResult.getSendStatus()).isEqualTo(SendStatus.SEND_OK);
- assertThat(sendResult.getOffsetMsgId()).isEqualTo("123");
- assertThat(sendResult.getQueueOffset()).isEqualTo(456L);
- }
-
- @Test
- public void testSendMessageSync_SuccessWithHook() throws Throwable {
- when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(createTopicRoute());
- final Throwable[] assertionErrors = new Throwable[1];
- final CountDownLatch countDownLatch = new CountDownLatch(2);
- producer.getDefaultMQProducerImpl().registerSendMessageHook(new SendMessageHook() {
- @Override public String hookName() {
- return "TestHook";
- }
-
- @Override public void sendMessageBefore(final SendMessageContext context) {
- assertionErrors[0] = assertInOtherThread(new Runnable() {
- @Override public void run() {
- assertThat(context.getMessage()).isEqualTo(message);
- assertThat(context.getProducer()).isEqualTo(producer);
- assertThat(context.getCommunicationMode()).isEqualTo(CommunicationMode.SYNC);
- assertThat(context.getSendResult()).isNull();
- }
- });
- countDownLatch.countDown();
- }
-
- @Override public void sendMessageAfter(final SendMessageContext context) {
- assertionErrors[0] = assertInOtherThread(new Runnable() {
- @Override public void run() {
- assertThat(context.getMessage()).isEqualTo(message);
- assertThat(context.getProducer()).isEqualTo(producer.getDefaultMQProducerImpl());
- assertThat(context.getCommunicationMode()).isEqualTo(CommunicationMode.SYNC);
- assertThat(context.getSendResult()).isNotNull();
- }
- });
- countDownLatch.countDown();
- }
- });
- SendResult sendResult = producer.send(message);
-
- assertThat(sendResult.getSendStatus()).isEqualTo(SendStatus.SEND_OK);
- assertThat(sendResult.getOffsetMsgId()).isEqualTo("123");
- assertThat(sendResult.getQueueOffset()).isEqualTo(456L);
-
- countDownLatch.await();
-
- if (assertionErrors[0] != null) {
- throw assertionErrors[0];
- }
- }
-
- private TopicRouteData createTopicRoute() {
- TopicRouteData topicRouteData = new TopicRouteData();
-
- topicRouteData.setFilterServerTable(new HashMap<String, List<String>>());
- List<BrokerData> brokerDataList = new ArrayList<>();
- BrokerData brokerData = new BrokerData();
- brokerData.setBrokerName("BrokerA");
- brokerData.setCluster("DefaultCluster");
- HashMap<Long, String> brokerAddrs = new HashMap<>();
- brokerAddrs.put(0L, "127.0.0.1:10911");
- brokerData.setBrokerAddrs(brokerAddrs);
- brokerDataList.add(brokerData);
- topicRouteData.setBrokerDatas(brokerDataList);
-
- List<QueueData> queueDataList = new ArrayList<>();
- QueueData queueData = new QueueData();
- queueData.setBrokerName("BrokerA");
- queueData.setPerm(6);
- queueData.setReadQueueNums(3);
- queueData.setWriteQueueNums(4);
- queueData.setTopicSynFlag(0);
- queueDataList.add(queueData);
- topicRouteData.setQueueDatas(queueDataList);
- return topicRouteData;
- }
-
- private SendResult createSendResult(SendStatus sendStatus) {
- SendResult sendResult = new SendResult();
- sendResult.setMsgId("123");
- sendResult.setOffsetMsgId("123");
- sendResult.setQueueOffset(456);
- sendResult.setSendStatus(sendStatus);
- sendResult.setRegionId("HZ");
- return sendResult;
- }
-
- private Throwable assertInOtherThread(final Runnable runnable) {
- final Throwable[] assertionErrors = new Throwable[1];
- Thread thread = new Thread(new Runnable() {
- @Override public void run() {
- try {
- runnable.run();
- } catch (AssertionError e) {
- assertionErrors[0] = e;
- }
- }
- });
- thread.start();
- try {
- thread.join();
- } catch (InterruptedException e) {
- assertionErrors[0] = e;
- }
- return assertionErrors[0];
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/acf9bc37/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java b/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java
new file mode 100644
index 0000000..bbaff00
--- /dev/null
+++ b/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java
@@ -0,0 +1,248 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.rocketmq.client.producer;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import org.apache.rocketmq.client.ClientConfig;
+import org.apache.rocketmq.client.exception.MQBrokerException;
+import org.apache.rocketmq.client.exception.MQClientException;
+import org.apache.rocketmq.client.hook.SendMessageContext;
+import org.apache.rocketmq.client.hook.SendMessageHook;
+import org.apache.rocketmq.client.impl.CommunicationMode;
+import org.apache.rocketmq.client.impl.MQClientAPIImpl;
+import org.apache.rocketmq.client.impl.MQClientManager;
+import org.apache.rocketmq.client.impl.factory.MQClientInstance;
+import org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl;
+import org.apache.rocketmq.client.impl.producer.TopicPublishInfo;
+import org.apache.rocketmq.common.message.Message;
+import org.apache.rocketmq.common.protocol.header.SendMessageRequestHeader;
+import org.apache.rocketmq.common.protocol.route.BrokerData;
+import org.apache.rocketmq.common.protocol.route.QueueData;
+import org.apache.rocketmq.common.protocol.route.TopicRouteData;
+import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Fail.failBecauseExceptionWasNotThrown;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.when;
+
+@RunWith(MockitoJUnitRunner.class)
+public class DefaultMQProducerTest {
+ @Spy
+ private MQClientInstance mQClientFactory = MQClientManager.getInstance().getAndCreateMQClientInstance(new ClientConfig());
+ @Mock
+ private MQClientAPIImpl mQClientAPIImpl;
+
+ private DefaultMQProducer producer;
+ private Message message;
+ private Message zeroMsg;
+ private String topic = "FooBar";
+ private String producerGroupPrefix = "FooBar_PID";
+
+ @Before
+ public void init() throws Exception {
+ String producerGroupTemp = producerGroupPrefix + System.currentTimeMillis();
+ producer = new DefaultMQProducer(producerGroupTemp);
+ producer.setNamesrvAddr("127.0.0.1:9876");
+ message = new Message(topic, new byte[] {'a'});
+ zeroMsg = new Message(topic, new byte[] {});
+
+ producer.start();
+
+ Field field = DefaultMQProducerImpl.class.getDeclaredField("mQClientFactory");
+ field.setAccessible(true);
+ field.set(producer.getDefaultMQProducerImpl(), mQClientFactory);
+
+ field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl");
+ field.setAccessible(true);
+ field.set(mQClientFactory, mQClientAPIImpl);
+
+ producer.getDefaultMQProducerImpl().getmQClientFactory().registerProducer(producerGroupTemp, producer.getDefaultMQProducerImpl());
+
+ when(mQClientAPIImpl.sendMessage(anyString(), anyString(), any(Message.class), any(SendMessageRequestHeader.class), anyLong(), any(CommunicationMode.class),
+ nullable(SendMessageContext.class), any(DefaultMQProducerImpl.class))).thenCallRealMethod();
+ when(mQClientAPIImpl.sendMessage(anyString(), anyString(), any(Message.class), any(SendMessageRequestHeader.class), anyLong(), any(CommunicationMode.class),
+ nullable(SendCallback.class), nullable(TopicPublishInfo.class), nullable(MQClientInstance.class), anyInt(), nullable(SendMessageContext.class), any(DefaultMQProducerImpl.class)))
+ .thenReturn(createSendResult(SendStatus.SEND_OK));
+ }
+
+ @After
+ public void terminate() {
+ producer.shutdown();
+ }
+
+ @Test
+ public void testSendMessage_ZeroMessage() throws InterruptedException, RemotingException, MQBrokerException {
+ try {
+ producer.send(zeroMsg);
+ failBecauseExceptionWasNotThrown(MQClientException.class);
+ } catch (MQClientException e) {
+ assertThat(e).hasMessageContaining("message body length is zero");
+ }
+ }
+
+ @Test
+ public void testSendMessage_NoNameSrv() throws RemotingException, InterruptedException, MQBrokerException {
+ when(mQClientAPIImpl.getNameServerAddressList()).thenReturn(new ArrayList<String>());
+ try {
+ producer.send(message);
+ failBecauseExceptionWasNotThrown(MQClientException.class);
+ } catch (MQClientException e) {
+ assertThat(e).hasMessageContaining("No name server address");
+ }
+ }
+
+ @Test
+ public void testSendMessage_NoRoute() throws RemotingException, InterruptedException, MQBrokerException {
+ when(mQClientAPIImpl.getNameServerAddressList()).thenReturn(Collections.singletonList("127.0.0.1:9876"));
+ try {
+ producer.send(message);
+ failBecauseExceptionWasNotThrown(MQClientException.class);
+ } catch (MQClientException e) {
+ assertThat(e).hasMessageContaining("No route info of this topic");
+ }
+ }
+
+ @Test
+ public void testSendMessageSync_Success() throws RemotingException, InterruptedException, MQBrokerException, MQClientException {
+ when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(createTopicRoute());
+ SendResult sendResult = producer.send(message);
+
+ assertThat(sendResult.getSendStatus()).isEqualTo(SendStatus.SEND_OK);
+ assertThat(sendResult.getOffsetMsgId()).isEqualTo("123");
+ assertThat(sendResult.getQueueOffset()).isEqualTo(456L);
+ }
+
+ @Test
+ public void testSendMessageSync_SuccessWithHook() throws Throwable {
+ when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(createTopicRoute());
+ final Throwable[] assertionErrors = new Throwable[1];
+ final CountDownLatch countDownLatch = new CountDownLatch(2);
+ producer.getDefaultMQProducerImpl().registerSendMessageHook(new SendMessageHook() {
+ @Override public String hookName() {
+ return "TestHook";
+ }
+
+ @Override public void sendMessageBefore(final SendMessageContext context) {
+ assertionErrors[0] = assertInOtherThread(new Runnable() {
+ @Override public void run() {
+ assertThat(context.getMessage()).isEqualTo(message);
+ assertThat(context.getProducer()).isEqualTo(producer);
+ assertThat(context.getCommunicationMode()).isEqualTo(CommunicationMode.SYNC);
+ assertThat(context.getSendResult()).isNull();
+ }
+ });
+ countDownLatch.countDown();
+ }
+
+ @Override public void sendMessageAfter(final SendMessageContext context) {
+ assertionErrors[0] = assertInOtherThread(new Runnable() {
+ @Override public void run() {
+ assertThat(context.getMessage()).isEqualTo(message);
+ assertThat(context.getProducer()).isEqualTo(producer.getDefaultMQProducerImpl());
+ assertThat(context.getCommunicationMode()).isEqualTo(CommunicationMode.SYNC);
+ assertThat(context.getSendResult()).isNotNull();
+ }
+ });
+ countDownLatch.countDown();
+ }
+ });
+ SendResult sendResult = producer.send(message);
+
+ assertThat(sendResult.getSendStatus()).isEqualTo(SendStatus.SEND_OK);
+ assertThat(sendResult.getOffsetMsgId()).isEqualTo("123");
+ assertThat(sendResult.getQueueOffset()).isEqualTo(456L);
+
+ countDownLatch.await();
+
+ if (assertionErrors[0] != null) {
+ throw assertionErrors[0];
+ }
+ }
+
+ private TopicRouteData createTopicRoute() {
+ TopicRouteData topicRouteData = new TopicRouteData();
+
+ topicRouteData.setFilterServerTable(new HashMap<String, List<String>>());
+ List<BrokerData> brokerDataList = new ArrayList<>();
+ BrokerData brokerData = new BrokerData();
+ brokerData.setBrokerName("BrokerA");
+ brokerData.setCluster("DefaultCluster");
+ HashMap<Long, String> brokerAddrs = new HashMap<>();
+ brokerAddrs.put(0L, "127.0.0.1:10911");
+ brokerData.setBrokerAddrs(brokerAddrs);
+ brokerDataList.add(brokerData);
+ topicRouteData.setBrokerDatas(brokerDataList);
+
+ List<QueueData> queueDataList = new ArrayList<>();
+ QueueData queueData = new QueueData();
+ queueData.setBrokerName("BrokerA");
+ queueData.setPerm(6);
+ queueData.setReadQueueNums(3);
+ queueData.setWriteQueueNums(4);
+ queueData.setTopicSynFlag(0);
+ queueDataList.add(queueData);
+ topicRouteData.setQueueDatas(queueDataList);
+ return topicRouteData;
+ }
+
+ private SendResult createSendResult(SendStatus sendStatus) {
+ SendResult sendResult = new SendResult();
+ sendResult.setMsgId("123");
+ sendResult.setOffsetMsgId("123");
+ sendResult.setQueueOffset(456);
+ sendResult.setSendStatus(sendStatus);
+ sendResult.setRegionId("HZ");
+ return sendResult;
+ }
+
+ private Throwable assertInOtherThread(final Runnable runnable) {
+ final Throwable[] assertionErrors = new Throwable[1];
+ Thread thread = new Thread(new Runnable() {
+ @Override public void run() {
+ try {
+ runnable.run();
+ } catch (AssertionError e) {
+ assertionErrors[0] = e;
+ }
+ }
+ });
+ thread.start();
+ try {
+ thread.join();
+ } catch (InterruptedException e) {
+ assertionErrors[0] = e;
+ }
+ return assertionErrors[0];
+ }
+}
\ No newline at end of file
[15/28] incubator-rocketmq git commit: [ROCKETMQ-52] Add unit tests
for LatencyFaultTolerance
Posted by st...@apache.org.
[ROCKETMQ-52] Add unit tests for LatencyFaultTolerance
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/e06a26ce
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/e06a26ce
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/e06a26ce
Branch: refs/heads/ROCKETMQ-54
Commit: e06a26cef72948603b54299f8a234faf468fc2c0
Parents: bbcb69e
Author: yukon <yu...@apache.org>
Authored: Tue Jan 17 22:03:07 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
.../latency/LatencyFaultToleranceImplTest.java | 67 ++++++++++++++++++++
1 file changed, 67 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/e06a26ce/client/src/test/java/org/apache/rocketmq/client/latency/LatencyFaultToleranceImplTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/latency/LatencyFaultToleranceImplTest.java b/client/src/test/java/org/apache/rocketmq/client/latency/LatencyFaultToleranceImplTest.java
new file mode 100644
index 0000000..86690e4
--- /dev/null
+++ b/client/src/test/java/org/apache/rocketmq/client/latency/LatencyFaultToleranceImplTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.rocketmq.client.latency;
+
+import java.util.concurrent.TimeUnit;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class LatencyFaultToleranceImplTest {
+ private LatencyFaultTolerance<String> latencyFaultTolerance;
+ private String brokerName = "BrokerA";
+ private String anotherBrokerName = "BrokerB";
+
+ @Before
+ public void init() {
+ latencyFaultTolerance = new LatencyFaultToleranceImpl();
+ }
+
+ @Test
+ public void testUpdateFaultItem() throws Exception {
+ latencyFaultTolerance.updateFaultItem(brokerName, 3000, 3000);
+ assertThat(latencyFaultTolerance.isAvailable(brokerName)).isFalse();
+ assertThat(latencyFaultTolerance.isAvailable(anotherBrokerName)).isTrue();
+ }
+
+ @Test
+ public void testIsAvailable() throws Exception {
+ latencyFaultTolerance.updateFaultItem(brokerName, 3000, 50);
+ assertThat(latencyFaultTolerance.isAvailable(brokerName)).isFalse();
+
+ TimeUnit.MILLISECONDS.sleep(70);
+ assertThat(latencyFaultTolerance.isAvailable(brokerName)).isTrue();
+ }
+
+ @Test
+ public void testRemove() throws Exception {
+ latencyFaultTolerance.updateFaultItem(brokerName, 3000, 3000);
+ assertThat(latencyFaultTolerance.isAvailable(brokerName)).isFalse();
+ latencyFaultTolerance.remove(brokerName);
+ assertThat(latencyFaultTolerance.isAvailable(brokerName)).isTrue();
+ }
+
+ @Test
+ public void testPickOneAtLeast() throws Exception {
+ latencyFaultTolerance.updateFaultItem(brokerName, 1000, 3000);
+ assertThat(latencyFaultTolerance.pickOneAtLeast()).isEqualTo(brokerName);
+
+ latencyFaultTolerance.updateFaultItem(anotherBrokerName, 1001, 3000);
+ assertThat(latencyFaultTolerance.pickOneAtLeast()).isEqualTo(brokerName);
+ }
+}
\ No newline at end of file
[19/28] incubator-rocketmq git commit: [ROCKETMQ-52] Add unit tests
for DefaultMQProducer
Posted by st...@apache.org.
[ROCKETMQ-52] Add unit tests for DefaultMQProducer
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/6511bc32
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/6511bc32
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/6511bc32
Branch: refs/heads/ROCKETMQ-54
Commit: 6511bc327126fd419801741f18a3c99f87063fe9
Parents: e06a26c
Author: yukon <yu...@apache.org>
Authored: Wed Jan 18 16:59:48 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
.../store/LocalFileOffsetStoreTest.java | 3 +-
.../impl/factory/MQClientInstanceTest.java | 6 +-
.../impl/producer/DefaultMQProducerTest.java | 250 +++++++++++++++++++
3 files changed, 255 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/6511bc32/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java b/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
index 0b522e6..bf0adcb 100644
--- a/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.rocketmq.client.consumer.store;
+import java.io.File;
import java.util.Collections;
import java.util.HashSet;
import org.apache.rocketmq.client.ClientConfig;
@@ -40,7 +41,7 @@ public class LocalFileOffsetStoreTest {
@Before
public void init() {
- System.setProperty("rocketmq.client.localOffsetStoreDir", System.getProperty("java.io.tmpdir") + ".rocketmq_offsets");
+ System.setProperty("rocketmq.client.localOffsetStoreDir", System.getProperty("java.io.tmpdir") + File.separator + ".rocketmq_offsets");
String clientId = new ClientConfig().buildMQClientId() + "#TestNamespace" + System.currentTimeMillis();
when(mQClientFactory.getClientId()).thenReturn(clientId);
}
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/6511bc32/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java b/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
index c32cdab..eedf0b1 100644
--- a/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
@@ -39,7 +39,7 @@ import static org.mockito.Mockito.mock;
@RunWith(MockitoJUnitRunner.class)
public class MQClientInstanceTest {
- private MQClientInstance mqClientInstance = MQClientManager.getInstance().getAndCreateMQClientInstance(new ClientConfig());;
+ private MQClientInstance mqClientInstance = MQClientManager.getInstance().getAndCreateMQClientInstance(new ClientConfig());
private String topic = "FooBar";
private String group = "FooBarGroup";
@@ -53,7 +53,7 @@ public class MQClientInstanceTest {
brokerData.setBrokerName("BrokerA");
brokerData.setCluster("DefaultCluster");
HashMap<Long, String> brokerAddrs = new HashMap<>();
- brokerAddrs.put(0L, "127.0.0.1");
+ brokerAddrs.put(0L, "127.0.0.1:10911");
brokerData.setBrokerAddrs(brokerAddrs);
brokerDataList.add(brokerData);
topicRouteData.setBrokerDatas(brokerDataList);
@@ -61,7 +61,7 @@ public class MQClientInstanceTest {
List<QueueData> queueDataList = new ArrayList<>();
QueueData queueData = new QueueData();
queueData.setBrokerName("BrokerA");
- queueData.setPerm(2);
+ queueData.setPerm(6);
queueData.setReadQueueNums(3);
queueData.setWriteQueueNums(4);
queueData.setTopicSynFlag(0);
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/6511bc32/client/src/test/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerTest.java b/client/src/test/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerTest.java
new file mode 100644
index 0000000..5946ea8
--- /dev/null
+++ b/client/src/test/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerTest.java
@@ -0,0 +1,250 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.rocketmq.client.impl.producer;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import org.apache.rocketmq.client.ClientConfig;
+import org.apache.rocketmq.client.exception.MQBrokerException;
+import org.apache.rocketmq.client.exception.MQClientException;
+import org.apache.rocketmq.client.hook.SendMessageContext;
+import org.apache.rocketmq.client.hook.SendMessageHook;
+import org.apache.rocketmq.client.impl.CommunicationMode;
+import org.apache.rocketmq.client.impl.MQClientAPIImpl;
+import org.apache.rocketmq.client.impl.MQClientManager;
+import org.apache.rocketmq.client.impl.factory.MQClientInstance;
+import org.apache.rocketmq.client.producer.DefaultMQProducer;
+import org.apache.rocketmq.client.producer.SendCallback;
+import org.apache.rocketmq.client.producer.SendResult;
+import org.apache.rocketmq.client.producer.SendStatus;
+import org.apache.rocketmq.common.message.Message;
+import org.apache.rocketmq.common.protocol.header.SendMessageRequestHeader;
+import org.apache.rocketmq.common.protocol.route.BrokerData;
+import org.apache.rocketmq.common.protocol.route.QueueData;
+import org.apache.rocketmq.common.protocol.route.TopicRouteData;
+import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Fail.failBecauseExceptionWasNotThrown;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.when;
+
+@RunWith(MockitoJUnitRunner.class)
+public class DefaultMQProducerTest {
+ @Spy
+ private MQClientInstance mQClientFactory = MQClientManager.getInstance().getAndCreateMQClientInstance(new ClientConfig());
+ @Mock
+ private MQClientAPIImpl mQClientAPIImpl;
+
+ private DefaultMQProducer producer;
+ private Message message;
+ private Message zeroMsg;
+ private String topic = "FooBar";
+ private String producerGroupPrefix = "FooBar_PID";
+
+ @Before
+ public void init() throws Exception {
+ String producerGroupTemp = producerGroupPrefix + System.currentTimeMillis();
+ producer = new DefaultMQProducer(producerGroupTemp);
+ producer.setNamesrvAddr("127.0.0.1:9876");
+ message = new Message(topic, new byte[] {'a'});
+ zeroMsg = new Message(topic, new byte[] {});
+
+ producer.start();
+
+ Field field = DefaultMQProducerImpl.class.getDeclaredField("mQClientFactory");
+ field.setAccessible(true);
+ field.set(producer.getDefaultMQProducerImpl(), mQClientFactory);
+
+ field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl");
+ field.setAccessible(true);
+ field.set(mQClientFactory, mQClientAPIImpl);
+
+ producer.getDefaultMQProducerImpl().getmQClientFactory().registerProducer(producerGroupTemp, producer.getDefaultMQProducerImpl());
+
+ when(mQClientAPIImpl.sendMessage(anyString(), anyString(), any(Message.class), any(SendMessageRequestHeader.class), anyLong(), any(CommunicationMode.class),
+ nullable(SendMessageContext.class), any(DefaultMQProducerImpl.class))).thenCallRealMethod();
+ when(mQClientAPIImpl.sendMessage(anyString(), anyString(), any(Message.class), any(SendMessageRequestHeader.class), anyLong(), any(CommunicationMode.class),
+ nullable(SendCallback.class), nullable(TopicPublishInfo.class), nullable(MQClientInstance.class), anyInt(), nullable(SendMessageContext.class), any(DefaultMQProducerImpl.class)))
+ .thenReturn(createSendResult(SendStatus.SEND_OK));
+ }
+
+ @After
+ public void terminate() {
+ producer.shutdown();
+ }
+
+ @Test
+ public void testSendMessage_ZeroMessage() throws InterruptedException, RemotingException, MQBrokerException {
+ try {
+ producer.send(zeroMsg);
+ failBecauseExceptionWasNotThrown(MQClientException.class);
+ } catch (MQClientException e) {
+ assertThat(e).hasMessageContaining("message body length is zero");
+ }
+ }
+
+ @Test
+ public void testSendMessage_NoNameSrv() throws RemotingException, InterruptedException, MQBrokerException {
+ when(mQClientAPIImpl.getNameServerAddressList()).thenReturn(new ArrayList<String>());
+ try {
+ producer.send(message);
+ failBecauseExceptionWasNotThrown(MQClientException.class);
+ } catch (MQClientException e) {
+ assertThat(e).hasMessageContaining("No name server address");
+ }
+ }
+
+ @Test
+ public void testSendMessage_NoRoute() throws RemotingException, InterruptedException, MQBrokerException {
+ when(mQClientAPIImpl.getNameServerAddressList()).thenReturn(Collections.singletonList("127.0.0.1:9876"));
+ try {
+ producer.send(message);
+ failBecauseExceptionWasNotThrown(MQClientException.class);
+ } catch (MQClientException e) {
+ assertThat(e).hasMessageContaining("No route info of this topic");
+ }
+ }
+
+ @Test
+ public void testSendMessageSync_Success() throws RemotingException, InterruptedException, MQBrokerException, MQClientException {
+ when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(createTopicRoute());
+ SendResult sendResult = producer.send(message);
+
+ assertThat(sendResult.getSendStatus()).isEqualTo(SendStatus.SEND_OK);
+ assertThat(sendResult.getOffsetMsgId()).isEqualTo("123");
+ assertThat(sendResult.getQueueOffset()).isEqualTo(456L);
+ }
+
+ @Test
+ public void testSendMessageSync_SuccessWithHook() throws Throwable {
+ when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(createTopicRoute());
+ final Throwable[] assertionErrors = new Throwable[1];
+ final CountDownLatch countDownLatch = new CountDownLatch(2);
+ producer.getDefaultMQProducerImpl().registerSendMessageHook(new SendMessageHook() {
+ @Override public String hookName() {
+ return "TestHook";
+ }
+
+ @Override public void sendMessageBefore(final SendMessageContext context) {
+ assertionErrors[0] = assertInOtherThread(new Runnable() {
+ @Override public void run() {
+ assertThat(context.getMessage()).isEqualTo(message);
+ assertThat(context.getProducer()).isEqualTo(producer);
+ assertThat(context.getCommunicationMode()).isEqualTo(CommunicationMode.SYNC);
+ assertThat(context.getSendResult()).isNull();
+ }
+ });
+ countDownLatch.countDown();
+ }
+
+ @Override public void sendMessageAfter(final SendMessageContext context) {
+ assertionErrors[0] = assertInOtherThread(new Runnable() {
+ @Override public void run() {
+ assertThat(context.getMessage()).isEqualTo(message);
+ assertThat(context.getProducer()).isEqualTo(producer.getDefaultMQProducerImpl());
+ assertThat(context.getCommunicationMode()).isEqualTo(CommunicationMode.SYNC);
+ assertThat(context.getSendResult()).isNotNull();
+ }
+ });
+ countDownLatch.countDown();
+ }
+ });
+ SendResult sendResult = producer.send(message);
+
+ assertThat(sendResult.getSendStatus()).isEqualTo(SendStatus.SEND_OK);
+ assertThat(sendResult.getOffsetMsgId()).isEqualTo("123");
+ assertThat(sendResult.getQueueOffset()).isEqualTo(456L);
+
+ countDownLatch.await();
+
+ if (assertionErrors[0] != null) {
+ throw assertionErrors[0];
+ }
+ }
+
+ private TopicRouteData createTopicRoute() {
+ TopicRouteData topicRouteData = new TopicRouteData();
+
+ topicRouteData.setFilterServerTable(new HashMap<String, List<String>>());
+ List<BrokerData> brokerDataList = new ArrayList<>();
+ BrokerData brokerData = new BrokerData();
+ brokerData.setBrokerName("BrokerA");
+ brokerData.setCluster("DefaultCluster");
+ HashMap<Long, String> brokerAddrs = new HashMap<>();
+ brokerAddrs.put(0L, "127.0.0.1:10911");
+ brokerData.setBrokerAddrs(brokerAddrs);
+ brokerDataList.add(brokerData);
+ topicRouteData.setBrokerDatas(brokerDataList);
+
+ List<QueueData> queueDataList = new ArrayList<>();
+ QueueData queueData = new QueueData();
+ queueData.setBrokerName("BrokerA");
+ queueData.setPerm(6);
+ queueData.setReadQueueNums(3);
+ queueData.setWriteQueueNums(4);
+ queueData.setTopicSynFlag(0);
+ queueDataList.add(queueData);
+ topicRouteData.setQueueDatas(queueDataList);
+ return topicRouteData;
+ }
+
+ private SendResult createSendResult(SendStatus sendStatus) {
+ SendResult sendResult = new SendResult();
+ sendResult.setMsgId("123");
+ sendResult.setOffsetMsgId("123");
+ sendResult.setQueueOffset(456);
+ sendResult.setSendStatus(sendStatus);
+ sendResult.setRegionId("HZ");
+ return sendResult;
+ }
+
+ private Throwable assertInOtherThread(final Runnable runnable) {
+ final Throwable[] assertionErrors = new Throwable[1];
+ Thread thread = new Thread(new Runnable() {
+ @Override public void run() {
+ try {
+ runnable.run();
+ } catch (AssertionError e) {
+ assertionErrors[0] = e;
+ }
+ }
+ });
+ thread.start();
+ try {
+ thread.join();
+ } catch (InterruptedException e) {
+ assertionErrors[0] = e;
+ }
+ return assertionErrors[0];
+ }
+}
\ No newline at end of file
[18/28] incubator-rocketmq git commit: [ROCKETMQ-52] Add unit tests
for LocalFileOffsetStore
Posted by st...@apache.org.
[ROCKETMQ-52] Add unit tests for LocalFileOffsetStore
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/127b163d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/127b163d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/127b163d
Branch: refs/heads/ROCKETMQ-54
Commit: 127b163dddae5bce3a33fa66d5b1f1167290a240
Parents: c99510f
Author: yukon <yu...@apache.org>
Authored: Tue Jan 17 15:15:16 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
.../store/LocalFileOffsetStoreTest.java | 74 ++++++++++++++++++++
1 file changed, 74 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/127b163d/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java b/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
new file mode 100644
index 0000000..58d99d6
--- /dev/null
+++ b/client/src/test/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStoreTest.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.rocketmq.client.consumer.store;
+
+import java.util.Collections;
+import java.util.HashSet;
+import org.apache.rocketmq.client.ClientConfig;
+import org.apache.rocketmq.client.impl.factory.MQClientInstance;
+import org.apache.rocketmq.common.message.MessageQueue;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.when;
+
+public class LocalFileOffsetStoreTest {
+
+ @Mock
+ private static MQClientInstance mQClientFactory;
+ private static String group = "FooBarGroup";
+ private static String topic = "FooBar";
+ private static String brokerName = "DefaultBrokerName";
+
+ @BeforeClass
+ public static void init() {
+ System.setProperty("rocketmq.client.localOffsetStoreDir", System.getProperty("java.io.tmpdir") + ".rocketmq_offsets");
+ mQClientFactory = Mockito.mock(MQClientInstance.class);
+ String clientId = new ClientConfig().buildMQClientId() + "#TestNamespace" + System.currentTimeMillis();
+ when(mQClientFactory.getClientId()).thenReturn(clientId);
+ }
+
+ @Test
+ public void testUpdateOffset() throws Exception {
+ OffsetStore offsetStore = new LocalFileOffsetStore(mQClientFactory, group);
+ MessageQueue messageQueue = new MessageQueue(topic, brokerName, 1);
+ offsetStore.updateOffset(messageQueue, 1024, false);
+
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_MEMORY)).isEqualTo(1024);
+
+ offsetStore.updateOffset(messageQueue, 1023, false);
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_MEMORY)).isEqualTo(1023);
+
+ offsetStore.updateOffset(messageQueue, 1022, true);
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_MEMORY)).isEqualTo(1023);
+ }
+
+ @Test
+ public void testReadOffset_FromStore() throws Exception {
+ OffsetStore offsetStore = new LocalFileOffsetStore(mQClientFactory, group);
+ MessageQueue messageQueue = new MessageQueue(topic, brokerName, 2);
+
+ offsetStore.updateOffset(messageQueue, 1024, false);
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_STORE)).isEqualTo(-1);
+
+ offsetStore.persistAll(new HashSet<>(Collections.singletonList(messageQueue)));
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_STORE)).isEqualTo(1024);
+ }
+}
\ No newline at end of file
[21/28] incubator-rocketmq git commit: [ROCKETMQ-52] Add unit tests
for MessageQueueSelector
Posted by st...@apache.org.
[ROCKETMQ-52] Add unit tests for MessageQueueSelector
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/c99510f5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/c99510f5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/c99510f5
Branch: refs/heads/ROCKETMQ-54
Commit: c99510f57550d8fdbf36de691074187da0e8e153
Parents: edde487
Author: yukon <yu...@apache.org>
Authored: Tue Jan 17 13:28:56 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
.../client/common/ThreadLocalIndexTest.java | 2 +-
.../selector/SelectMessageQueueByHashTest.java | 49 ++++++++++++++++++++
2 files changed, 50 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/c99510f5/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java b/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java
index b937e45..350cde7 100644
--- a/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/common/ThreadLocalIndexTest.java
@@ -23,7 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
public class ThreadLocalIndexTest {
@Test
- public void getAndIncrement() throws Exception {
+ public void testGetAndIncrement() throws Exception {
ThreadLocalIndex localIndex = new ThreadLocalIndex();
int initialVal = localIndex.getAndIncrement();
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/c99510f5/client/src/test/java/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHashTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHashTest.java b/client/src/test/java/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHashTest.java
new file mode 100644
index 0000000..64ef21d
--- /dev/null
+++ b/client/src/test/java/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHashTest.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.rocketmq.client.producer.selector;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.rocketmq.common.message.Message;
+import org.apache.rocketmq.common.message.MessageQueue;
+import org.junit.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class SelectMessageQueueByHashTest {
+
+ private String topic = "FooBar";
+
+ @Test
+ public void testSelect() throws Exception {
+ SelectMessageQueueByHash selector = new SelectMessageQueueByHash();
+
+ Message message = new Message(topic, new byte[] {});
+
+ List<MessageQueue> messageQueues = new ArrayList<>();
+ for (int i = 0; i < 10; i++) {
+ MessageQueue messageQueue = new MessageQueue(topic, "DefaultBroker", i);
+ messageQueues.add(messageQueue);
+ }
+
+ String orderId = "123";
+ String anotherOrderId = "234";
+ MessageQueue selected = selector.select(messageQueues, message, orderId);
+ assertThat(selector.select(messageQueues, message, anotherOrderId)).isNotEqualTo(selected);
+ }
+
+}
\ No newline at end of file
[22/28] incubator-rocketmq git commit: [ROCKETMQ-52] Add unit tests
for MQClientInstance
Posted by st...@apache.org.
[ROCKETMQ-52] Add unit tests for MQClientInstance
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/ba79706f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/ba79706f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/ba79706f
Branch: refs/heads/ROCKETMQ-54
Commit: ba79706f8cf8c0d236a1da870cf0d0d53e9ad57d
Parents: 98e4631
Author: yukon <yu...@apache.org>
Authored: Tue Jan 17 17:22:15 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
.../impl/factory/MQClientInstanceTest.java | 123 +++++++++++++++++++
1 file changed, 123 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/ba79706f/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java b/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
new file mode 100644
index 0000000..956cdd9
--- /dev/null
+++ b/client/src/test/java/org/apache/rocketmq/client/impl/factory/MQClientInstanceTest.java
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.rocketmq.client.impl.factory;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import org.apache.rocketmq.client.ClientConfig;
+import org.apache.rocketmq.client.admin.MQAdminExtInner;
+import org.apache.rocketmq.client.exception.MQBrokerException;
+import org.apache.rocketmq.client.impl.MQClientAPIImpl;
+import org.apache.rocketmq.client.impl.MQClientManager;
+import org.apache.rocketmq.client.impl.consumer.MQConsumerInner;
+import org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl;
+import org.apache.rocketmq.client.impl.producer.TopicPublishInfo;
+import org.apache.rocketmq.common.protocol.route.BrokerData;
+import org.apache.rocketmq.common.protocol.route.QueueData;
+import org.apache.rocketmq.common.protocol.route.TopicRouteData;
+import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+
+@RunWith(MockitoJUnitRunner.class)
+public class MQClientInstanceTest {
+
+ @Mock
+ private static MQClientAPIImpl mqClientAPI;
+ @InjectMocks
+ private static MQClientInstance mqClientInstance = MQClientManager.getInstance().getAndCreateMQClientInstance(new ClientConfig());;
+
+ private String topic = "FooBar";
+ private String group = "FooBarGroup";
+
+ @Test
+ public void testTopicRouteData2TopicPublishInfo() {
+ TopicRouteData topicRouteData = new TopicRouteData();
+
+ topicRouteData.setFilterServerTable(new HashMap<String, List<String>>());
+ List<BrokerData> brokerDataList = new ArrayList<>();
+ BrokerData brokerData = new BrokerData();
+ brokerData.setBrokerName("BrokerA");
+ brokerData.setCluster("DefaultCluster");
+ HashMap<Long, String> brokerAddrs = new HashMap<>();
+ brokerAddrs.put(0L, "127.0.0.1");
+ brokerData.setBrokerAddrs(brokerAddrs);
+ brokerDataList.add(brokerData);
+ topicRouteData.setBrokerDatas(brokerDataList);
+
+ List<QueueData> queueDataList = new ArrayList<>();
+ QueueData queueData = new QueueData();
+ queueData.setBrokerName("BrokerA");
+ queueData.setPerm(2);
+ queueData.setReadQueueNums(3);
+ queueData.setWriteQueueNums(4);
+ queueData.setTopicSynFlag(0);
+ queueDataList.add(queueData);
+ topicRouteData.setQueueDatas(queueDataList);
+
+ TopicPublishInfo topicPublishInfo = MQClientInstance.topicRouteData2TopicPublishInfo(topic, topicRouteData);
+
+ assertThat(topicPublishInfo.isHaveTopicRouterInfo()).isFalse();
+ assertThat(topicPublishInfo.getMessageQueueList().size()).isEqualTo(4);
+ }
+
+ @Test
+ public void testRegisterProducer() {
+ boolean flag = mqClientInstance.registerProducer(group, mock(DefaultMQProducerImpl.class));
+ assertThat(flag).isTrue();
+
+ flag = mqClientInstance.registerProducer(group, mock(DefaultMQProducerImpl.class));
+ assertThat(flag).isFalse();
+
+ mqClientInstance.unregisterProducer(group);
+ flag = mqClientInstance.registerProducer(group, mock(DefaultMQProducerImpl.class));
+ assertThat(flag).isTrue();
+ }
+
+ @Test
+ public void testRegisterConsumer() throws RemotingException, InterruptedException, MQBrokerException {
+ boolean flag = mqClientInstance.registerConsumer(group, mock(MQConsumerInner.class));
+ assertThat(flag).isTrue();
+
+ flag = mqClientInstance.registerConsumer(group, mock(MQConsumerInner.class));
+ assertThat(flag).isFalse();
+
+ mqClientInstance.unregisterConsumer(group);
+ flag = mqClientInstance.registerConsumer(group, mock(MQConsumerInner.class));
+ assertThat(flag).isTrue();
+ }
+
+ @Test
+ public void testRegisterAdminExt() {
+ boolean flag = mqClientInstance.registerAdminExt(group, mock(MQAdminExtInner.class));
+ assertThat(flag).isTrue();
+
+ flag = mqClientInstance.registerAdminExt(group, mock(MQAdminExtInner.class));
+ assertThat(flag).isFalse();
+
+ mqClientInstance.unregisterAdminExt(group);
+ flag = mqClientInstance.registerAdminExt(group, mock(MQAdminExtInner.class));
+ assertThat(flag).isTrue();
+ }
+}
\ No newline at end of file
[25/28] incubator-rocketmq git commit: [ROCKETMQ-52] Add unit tests
for RemoteBrokerOffsetStore
Posted by st...@apache.org.
[ROCKETMQ-52] Add unit tests for RemoteBrokerOffsetStore
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/98e4631a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/98e4631a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/98e4631a
Branch: refs/heads/ROCKETMQ-54
Commit: 98e4631a070417794fe75639b24319447a001d85
Parents: 127b163
Author: yukon <yu...@apache.org>
Authored: Tue Jan 17 16:15:11 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jan 19 15:45:19 2017 +0800
----------------------------------------------------------------------
.../store/RemoteBrokerOffsetStoreTest.java | 141 +++++++++++++++++++
1 file changed, 141 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/98e4631a/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java b/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java
new file mode 100644
index 0000000..9a6a4b5
--- /dev/null
+++ b/client/src/test/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStoreTest.java
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.rocketmq.client.consumer.store;
+
+import java.util.Collections;
+import java.util.HashSet;
+import org.apache.rocketmq.client.ClientConfig;
+import org.apache.rocketmq.client.exception.MQBrokerException;
+import org.apache.rocketmq.client.impl.FindBrokerResult;
+import org.apache.rocketmq.client.impl.MQClientAPIImpl;
+import org.apache.rocketmq.client.impl.factory.MQClientInstance;
+import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.common.protocol.header.QueryConsumerOffsetRequestHeader;
+import org.apache.rocketmq.common.protocol.header.UpdateConsumerOffsetRequestHeader;
+import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class RemoteBrokerOffsetStoreTest {
+
+ @Mock
+ private static MQClientInstance mQClientFactory;
+ @Mock
+ private static MQClientAPIImpl mqClientAPI;
+ private static String group = "FooBarGroup";
+ private static String topic = "FooBar";
+ private static String brokerName = "DefaultBrokerName";
+
+ @BeforeClass
+ public static void init() {
+ System.setProperty("rocketmq.client.localOffsetStoreDir", System.getProperty("java.io.tmpdir") + ".rocketmq_offsets");
+ mQClientFactory = mock(MQClientInstance.class);
+ String clientId = new ClientConfig().buildMQClientId() + "#TestNamespace" + System.currentTimeMillis();
+ when(mQClientFactory.getClientId()).thenReturn(clientId);
+ when(mQClientFactory.findBrokerAddressInAdmin(brokerName)).thenReturn(new FindBrokerResult("127.0.0.1", false));
+
+ mqClientAPI = mock(MQClientAPIImpl.class);
+ when(mQClientFactory.getMQClientAPIImpl()).thenReturn(mqClientAPI);
+ }
+
+ @Test
+ public void testUpdateOffset() throws Exception {
+ OffsetStore offsetStore = new RemoteBrokerOffsetStore(mQClientFactory, group);
+ MessageQueue messageQueue = new MessageQueue(topic, brokerName, 1);
+
+ offsetStore.updateOffset(messageQueue, 1024, false);
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_MEMORY)).isEqualTo(1024);
+
+ offsetStore.updateOffset(messageQueue, 1023, false);
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_MEMORY)).isEqualTo(1023);
+
+ offsetStore.updateOffset(messageQueue, 1022, true);
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_MEMORY)).isEqualTo(1023);
+ }
+
+ @Test
+ public void testReadOffset_WithException() throws Exception {
+ OffsetStore offsetStore = new RemoteBrokerOffsetStore(mQClientFactory, group);
+ MessageQueue messageQueue = new MessageQueue(topic, brokerName, 2);
+
+ offsetStore.updateOffset(messageQueue, 1024, false);
+
+ doThrow(new MQBrokerException(-1, ""))
+ .when(mqClientAPI).queryConsumerOffset(anyString(), any(QueryConsumerOffsetRequestHeader.class), anyLong());
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_STORE)).isEqualTo(-1);
+
+ doThrow(new RemotingException("", null))
+ .when(mqClientAPI).queryConsumerOffset(anyString(), any(QueryConsumerOffsetRequestHeader.class), anyLong());
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_STORE)).isEqualTo(-2);
+ }
+
+ @Test
+ public void testReadOffset_Success() throws Exception {
+ OffsetStore offsetStore = new RemoteBrokerOffsetStore(mQClientFactory, group);
+ final MessageQueue messageQueue = new MessageQueue(topic, brokerName, 3);
+
+ doAnswer(new Answer() {
+ @Override public Object answer(InvocationOnMock mock) throws Throwable {
+ UpdateConsumerOffsetRequestHeader updateRequestHeader = mock.getArgument(1);
+ when(mqClientAPI.queryConsumerOffset(anyString(), any(QueryConsumerOffsetRequestHeader.class), anyLong())).thenReturn(updateRequestHeader.getCommitOffset());
+ return null;
+ }
+ }).when(mqClientAPI).updateConsumerOffsetOneway(any(String.class), any(UpdateConsumerOffsetRequestHeader.class), any(Long.class));
+
+ offsetStore.updateOffset(messageQueue, 1024, false);
+ offsetStore.persist(messageQueue);
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_STORE)).isEqualTo(1024);
+
+ offsetStore.updateOffset(messageQueue, 1023, false);
+ offsetStore.persist(messageQueue);
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_STORE)).isEqualTo(1023);
+
+ offsetStore.updateOffset(messageQueue, 1022, true);
+ offsetStore.persist(messageQueue);
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_STORE)).isEqualTo(1023);
+
+ offsetStore.updateOffset(messageQueue, 1025, false);
+ offsetStore.persistAll(new HashSet<>(Collections.singletonList(messageQueue)));
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_STORE)).isEqualTo(1025);
+ }
+
+
+
+ @Test
+ public void testRemoveOffset() throws Exception {
+ OffsetStore offsetStore = new RemoteBrokerOffsetStore(mQClientFactory, group);
+ final MessageQueue messageQueue = new MessageQueue(topic, brokerName, 4);
+
+ offsetStore.updateOffset(messageQueue, 1024, false);
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_MEMORY)).isEqualTo(1024);
+
+ offsetStore.removeOffset(messageQueue);
+ assertThat(offsetStore.readOffset(messageQueue, ReadOffsetType.READ_FROM_MEMORY)).isEqualTo(-1);
+ }
+}
\ No newline at end of file
[04/28] incubator-rocketmq git commit: IntegrateASF sonar
Posted by st...@apache.org.
IntegrateASF sonar
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/2892a775
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/2892a775
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/2892a775
Branch: refs/heads/ROCKETMQ-54
Commit: 2892a7759f3f867cdca7214399ff121eded78970
Parents: df9d621
Author: vongosling <vo...@apache.org>
Authored: Tue Jan 17 15:18:11 2017 +0800
Committer: vongosling <vo...@apache.org>
Committed: Tue Jan 17 15:18:11 2017 +0800
----------------------------------------------------------------------
pom.xml | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/2892a775/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index afd3d84..f189bb4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,7 +32,7 @@
<artifactId>rocketmq-all</artifactId>
<version>4.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
- <name>rocketmq-all ${project.version}</name>
+ <name>Apache RocketMQ git s${project.version}</name>
<url>http://rocketmq.incubator.apache.org/</url>
<prerequisites>
@@ -42,7 +42,8 @@
<scm>
<url>https://git-wip-us.apache.org/repos/asf/incubator-rocketmq.git</url>
<connection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-rocketmq.git</connection>
- <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-rocketmq.git</developerConnection>
+ <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-rocketmq.git
+ </developerConnection>
</scm>
<mailingLists>
@@ -157,6 +158,11 @@
<!-- compiler settings properties -->
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
+
+ <!-- URL of the ASF SonarQube server -->
+ <sonar.host.url>https://builds.apache.org/analysis</sonar.host.url>
+ <!-- Exclude all generated code -->
+ <sonar.exclusions>file:**/generated-sources/**</sonar.exclusions>
</properties>
<modules>
@@ -337,6 +343,11 @@
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.4</version>
</plugin>
+ <plugin>
+ <groupId>org.sonarsource.scanner.maven</groupId>
+ <artifactId>sonar-maven-plugin</artifactId>
+ <version>3.0.2</version>
+ </plugin>
</plugins>
</build>