diff --git a/broker/src/test/java/org/apache/rocketmq/broker/subscription/SubscriptionGroupManagerTest.java b/broker/src/test/java/org/apache/rocketmq/broker/subscription/SubscriptionGroupManagerTest.java index 3384d479c6e..e6d63726908 100644 --- a/broker/src/test/java/org/apache/rocketmq/broker/subscription/SubscriptionGroupManagerTest.java +++ b/broker/src/test/java/org/apache/rocketmq/broker/subscription/SubscriptionGroupManagerTest.java @@ -116,7 +116,7 @@ public void updateSubscriptionGroupConfig() { } private boolean notToBeExecuted() { - return MixAll.isMac(); + return MixAll.isMac() || !MixAll.isJdk8(); } @Test public void testUpdateSubscriptionGroupConfigList_NullConfigList() { diff --git a/client/src/test/java/org/apache/rocketmq/client/impl/admin/MqClientAdminImplTest.java b/client/src/test/java/org/apache/rocketmq/client/impl/admin/MqClientAdminImplTest.java index 71682fb52c0..31daf3125a8 100644 --- a/client/src/test/java/org/apache/rocketmq/client/impl/admin/MqClientAdminImplTest.java +++ b/client/src/test/java/org/apache/rocketmq/client/impl/admin/MqClientAdminImplTest.java @@ -17,6 +17,7 @@ package org.apache.rocketmq.client.impl.admin; import org.apache.rocketmq.client.exception.MQClientException; +import org.apache.rocketmq.common.MixAll; import org.apache.rocketmq.common.message.MessageConst; import org.apache.rocketmq.common.message.MessageDecoder; import org.apache.rocketmq.common.message.MessageExt; @@ -205,6 +206,9 @@ public void assertUpdateOrCreateTopicWithError() { @Test public void assertUpdateOrCreateSubscriptionGroupWithSuccess() throws Exception { + if (!MixAll.isJdk8()) { + return; + } setResponseSuccess(null); SubscriptionGroupConfig config = mock(SubscriptionGroupConfig.class); CompletableFuture actual = mqClientAdminImpl.updateOrCreateSubscriptionGroup(defaultBrokerAddr, config, defaultTimeout); @@ -213,6 +217,9 @@ public void assertUpdateOrCreateSubscriptionGroupWithSuccess() throws Exception @Test public void assertUpdateOrCreateSubscriptionGroupWithError() { + if (!MixAll.isJdk8()) { + return; + } setResponseError(); SubscriptionGroupConfig config = mock(SubscriptionGroupConfig.class); CompletableFuture actual = mqClientAdminImpl.updateOrCreateSubscriptionGroup(defaultBrokerAddr, config, defaultTimeout); 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 d71bc25b9b3..b12662c93f7 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 @@ -290,6 +290,9 @@ public void testSendHeartbeatToBrokerV1() { @Test public void testSendHeartbeatToBrokerV2() throws MQBrokerException, RemotingException, InterruptedException { + if (!MixAll.isJdk8()) { + return; + } consumerTable.put(group, createMQConsumerInner()); when(clientConfig.isUseHeartbeatV2()).thenReturn(true); HeartbeatV2Result heartbeatV2Result = mock(HeartbeatV2Result.class); @@ -307,6 +310,9 @@ public void testSendHeartbeatToAllBrokerWithLockV1() { @Test public void testSendHeartbeatToAllBrokerWithLockV2() { + if (!MixAll.isJdk8()) { + return; + } brokerAddrTable.put(defaultBroker, createBrokerAddrMap()); consumerTable.put(group, createMQConsumerInner()); when(clientConfig.isUseHeartbeatV2()).thenReturn(true); diff --git a/common/src/main/java/org/apache/rocketmq/common/MixAll.java b/common/src/main/java/org/apache/rocketmq/common/MixAll.java index 39933038bac..50d26d65d5c 100644 --- a/common/src/main/java/org/apache/rocketmq/common/MixAll.java +++ b/common/src/main/java/org/apache/rocketmq/common/MixAll.java @@ -128,6 +128,10 @@ public static boolean isMac() { return OS.contains("mac"); } + public static boolean isJdk8() { + return System.getProperty("java.version").startsWith("1.8."); + } + public static boolean isUnix() { return OS.contains("nix") || OS.contains("nux") diff --git a/controller/src/test/java/org/apache/rocketmq/controller/impl/manager/ReplicasInfoManagerTest.java b/controller/src/test/java/org/apache/rocketmq/controller/impl/manager/ReplicasInfoManagerTest.java index bc9c50cecb8..42617000aaf 100644 --- a/controller/src/test/java/org/apache/rocketmq/controller/impl/manager/ReplicasInfoManagerTest.java +++ b/controller/src/test/java/org/apache/rocketmq/controller/impl/manager/ReplicasInfoManagerTest.java @@ -17,6 +17,7 @@ package org.apache.rocketmq.controller.impl.manager; import org.apache.rocketmq.common.ControllerConfig; +import org.apache.rocketmq.common.MixAll; import org.apache.rocketmq.controller.elect.ElectPolicy; import org.apache.rocketmq.controller.elect.impl.DefaultElectPolicy; import org.apache.rocketmq.controller.helper.BrokerValidPredicate; @@ -471,6 +472,9 @@ public void testCleanBrokerData() { @Test public void testSerialize() { + if (!MixAll.isJdk8()) { + return; + } mockMetaData(); byte[] data; try { diff --git a/namesrv/src/test/java/org/apache/rocketmq/namesrv/processor/RequestProcessorTest.java b/namesrv/src/test/java/org/apache/rocketmq/namesrv/processor/RequestProcessorTest.java index 831558a0f68..9abf5d784f4 100644 --- a/namesrv/src/test/java/org/apache/rocketmq/namesrv/processor/RequestProcessorTest.java +++ b/namesrv/src/test/java/org/apache/rocketmq/namesrv/processor/RequestProcessorTest.java @@ -19,7 +19,6 @@ import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import java.lang.reflect.Field; -import java.lang.reflect.Modifier; import java.net.InetSocketAddress; import java.nio.charset.StandardCharsets; import java.util.ArrayList; @@ -27,6 +26,8 @@ import java.util.Map; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; + +import org.apache.commons.lang3.reflect.FieldUtils; import org.apache.rocketmq.common.MixAll; import org.apache.rocketmq.common.TopicConfig; import org.apache.rocketmq.common.UtilAll; @@ -91,7 +92,7 @@ public void init() throws Exception { registerRouteInfoManager(); logger = mock(Logger.class); - setFinalStatic(DefaultRequestProcessor.class.getDeclaredField("log"), logger); + FieldUtils.writeStaticField(DefaultRequestProcessor.class.getDeclaredField("log"), logger, true); } @Test @@ -636,14 +637,6 @@ private static RemotingCommand genSampleRegisterCmd(boolean reg) { return request; } - private static void setFinalStatic(Field field, Object newValue) throws Exception { - field.setAccessible(true); - Field modifiersField = Field.class.getDeclaredField("modifiers"); - modifiersField.setAccessible(true); - modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(null, newValue); - } - private void registerRouteInfoManager() { TopicConfigSerializeWrapper topicConfigSerializeWrapper = new TopicConfigSerializeWrapper(); ConcurrentHashMap topicConfigConcurrentHashMap = new ConcurrentHashMap<>(); diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/ProxyAndTlsProtocolNegotiatorTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/ProxyAndTlsProtocolNegotiatorTest.java index 699491f03d1..1ba09794902 100644 --- a/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/ProxyAndTlsProtocolNegotiatorTest.java +++ b/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/ProxyAndTlsProtocolNegotiatorTest.java @@ -21,6 +21,8 @@ import io.grpc.netty.shaded.io.netty.buffer.Unpooled; import io.grpc.netty.shaded.io.netty.handler.codec.haproxy.HAProxyTLV; import java.nio.charset.StandardCharsets; + +import org.apache.rocketmq.common.MixAll; import org.apache.rocketmq.proxy.config.ConfigurationManager; import org.junit.Before; import org.junit.Test; @@ -34,6 +36,9 @@ public class ProxyAndTlsProtocolNegotiatorTest { @Before public void setUp() throws Exception { + if (!MixAll.isJdk8()) { + return; + } ConfigurationManager.intConfig(); ConfigurationManager.getProxyConfig().setTlsTestModeEnable(true); negotiator = new ProxyAndTlsProtocolNegotiator(); @@ -41,9 +46,12 @@ public void setUp() throws Exception { @Test public void handleHAProxyTLV() { + if (!MixAll.isJdk8()) { + return; + } ByteBuf content = Unpooled.buffer(); content.writeBytes("xxxx".getBytes(StandardCharsets.UTF_8)); HAProxyTLV haProxyTLV = new HAProxyTLV((byte) 0xE1, content); negotiator.handleHAProxyTLV(haProxyTLV, Attributes.newBuilder()); } -} \ No newline at end of file +} diff --git a/remoting/src/test/java/org/apache/rocketmq/remoting/TlsTest.java b/remoting/src/test/java/org/apache/rocketmq/remoting/TlsTest.java index a4890d73d5a..fbdd94d19e9 100644 --- a/remoting/src/test/java/org/apache/rocketmq/remoting/TlsTest.java +++ b/remoting/src/test/java/org/apache/rocketmq/remoting/TlsTest.java @@ -17,6 +17,7 @@ package org.apache.rocketmq.remoting; +import org.apache.rocketmq.common.MixAll; import org.apache.rocketmq.common.utils.NetworkUtil; import org.apache.rocketmq.remoting.common.TlsMode; import org.apache.rocketmq.remoting.exception.RemotingSendRequestException; @@ -281,6 +282,10 @@ public void clientAcceptsUntrustedServerCert() throws Exception { @Test public void testTlsConfigThroughFile() throws Exception { + if (!MixAll.isJdk8()) { + return; + } + File file = tempFolder.newFile("tls.config"); tlsTestModeEnable = true; diff --git a/tools/src/test/java/org/apache/rocketmq/tools/command/connection/ConsumerConnectionSubCommandTest.java b/tools/src/test/java/org/apache/rocketmq/tools/command/connection/ConsumerConnectionSubCommandTest.java index f5967f5a303..37ec758f47d 100644 --- a/tools/src/test/java/org/apache/rocketmq/tools/command/connection/ConsumerConnectionSubCommandTest.java +++ b/tools/src/test/java/org/apache/rocketmq/tools/command/connection/ConsumerConnectionSubCommandTest.java @@ -16,10 +16,10 @@ */ package org.apache.rocketmq.tools.command.connection; -import java.util.HashSet; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.Options; +import org.apache.rocketmq.common.MixAll; import org.apache.rocketmq.remoting.protocol.body.Connection; import org.apache.rocketmq.remoting.protocol.body.ConsumerConnection; import org.apache.rocketmq.srvutil.ServerUtil; @@ -30,6 +30,8 @@ import org.junit.Before; import org.junit.Test; +import java.util.HashSet; + import static org.mockito.Mockito.mock; public class ConsumerConnectionSubCommandTest { @@ -39,18 +41,28 @@ public class ConsumerConnectionSubCommandTest { @Before public void before() { + if (!MixAll.isJdk8()) { + return; + } brokerMocker = startOneBroker(); nameServerMocker = NameServerMocker.startByDefaultConf(brokerMocker.listenPort()); } @After public void after() { - brokerMocker.shutdown(); - nameServerMocker.shutdown(); + if (null != brokerMocker) { + brokerMocker.shutdown(); + } + if (null != nameServerMocker) { + nameServerMocker.shutdown(); + } } @Test public void testExecute() throws SubCommandException { + if (!MixAll.isJdk8()) { + return; + } ConsumerConnectionSubCommand cmd = new ConsumerConnectionSubCommand(); Options options = ServerUtil.buildCommandlineOptions(new Options()); String[] subargs = new String[] {"-g default-consumer-group", "-b localhost:" + brokerMocker.listenPort()}; diff --git a/tools/src/test/java/org/apache/rocketmq/tools/command/connection/ProducerConnectionSubCommandTest.java b/tools/src/test/java/org/apache/rocketmq/tools/command/connection/ProducerConnectionSubCommandTest.java index 672e4113d6c..872ccc3072c 100644 --- a/tools/src/test/java/org/apache/rocketmq/tools/command/connection/ProducerConnectionSubCommandTest.java +++ b/tools/src/test/java/org/apache/rocketmq/tools/command/connection/ProducerConnectionSubCommandTest.java @@ -20,6 +20,7 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.Options; +import org.apache.rocketmq.common.MixAll; import org.apache.rocketmq.remoting.protocol.body.Connection; import org.apache.rocketmq.remoting.protocol.body.ProducerConnection; import org.apache.rocketmq.srvutil.ServerUtil; @@ -40,18 +41,28 @@ public class ProducerConnectionSubCommandTest { @Before public void before() { + if (!MixAll.isJdk8()) { + return; + } brokerMocker = startOneBroker(); nameServerMocker = NameServerMocker.startByDefaultConf(brokerMocker.listenPort()); } @After public void after() { - brokerMocker.shutdown(); - nameServerMocker.shutdown(); + if (null != brokerMocker) { + brokerMocker.shutdown(); + } + if (null != nameServerMocker) { + nameServerMocker.shutdown(); + } } @Test public void testExecute() throws SubCommandException { + if (!MixAll.isJdk8()) { + return; + } ProducerConnectionSubCommand cmd = new ProducerConnectionSubCommand(); Options options = ServerUtil.buildCommandlineOptions(new Options()); String[] subargs = new String[] {"-g default-producer-group", "-t unit-test", String.format("-n localhost:%d", nameServerMocker.listenPort())}; diff --git a/tools/src/test/java/org/apache/rocketmq/tools/command/consumer/ConsumerProgressSubCommandTest.java b/tools/src/test/java/org/apache/rocketmq/tools/command/consumer/ConsumerProgressSubCommandTest.java index 15c3fa777a3..fd6782aacb4 100644 --- a/tools/src/test/java/org/apache/rocketmq/tools/command/consumer/ConsumerProgressSubCommandTest.java +++ b/tools/src/test/java/org/apache/rocketmq/tools/command/consumer/ConsumerProgressSubCommandTest.java @@ -20,6 +20,7 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.Options; +import org.apache.rocketmq.common.MixAll; import org.apache.rocketmq.common.message.MessageQueue; import org.apache.rocketmq.remoting.protocol.admin.ConsumeStats; import org.apache.rocketmq.remoting.protocol.admin.OffsetWrapper; @@ -40,19 +41,29 @@ public class ConsumerProgressSubCommandTest { @Before public void before() { + if (!MixAll.isJdk8()) { + return; + } brokerMocker = startOneBroker(); nameServerMocker = NameServerMocker.startByDefaultConf(brokerMocker.listenPort()); } @After public void after() { - brokerMocker.shutdown(); - nameServerMocker.shutdown(); + if (null != brokerMocker) { + brokerMocker.shutdown(); + } + if (null != nameServerMocker) { + nameServerMocker.shutdown(); + } } @Ignore @Test public void testExecute() throws SubCommandException { + if (!MixAll.isJdk8()) { + return; + } ConsumerProgressSubCommand cmd = new ConsumerProgressSubCommand(); Options options = ServerUtil.buildCommandlineOptions(new Options()); String[] subargs = new String[] {"-g default-group", diff --git a/tools/src/test/java/org/apache/rocketmq/tools/command/consumer/ConsumerStatusSubCommandTest.java b/tools/src/test/java/org/apache/rocketmq/tools/command/consumer/ConsumerStatusSubCommandTest.java index 4651113c689..95fe9a8aaf1 100644 --- a/tools/src/test/java/org/apache/rocketmq/tools/command/consumer/ConsumerStatusSubCommandTest.java +++ b/tools/src/test/java/org/apache/rocketmq/tools/command/consumer/ConsumerStatusSubCommandTest.java @@ -20,6 +20,7 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.Options; +import org.apache.rocketmq.common.MixAll; import org.apache.rocketmq.remoting.protocol.body.Connection; import org.apache.rocketmq.remoting.protocol.body.ConsumerConnection; import org.apache.rocketmq.srvutil.ServerUtil; @@ -40,18 +41,28 @@ public class ConsumerStatusSubCommandTest { @Before public void before() { + if (!MixAll.isJdk8()) { + return; + } brokerMocker = startOneBroker(); nameServerMocker = NameServerMocker.startByDefaultConf(brokerMocker.listenPort()); } @After public void after() { - brokerMocker.shutdown(); - nameServerMocker.shutdown(); + if (null != brokerMocker) { + brokerMocker.shutdown(); + } + if (null != nameServerMocker) { + nameServerMocker.shutdown(); + } } @Test public void testExecute() throws SubCommandException { + if (!MixAll.isJdk8()) { + return; + } ConsumerStatusSubCommand cmd = new ConsumerStatusSubCommand(); Options options = ServerUtil.buildCommandlineOptions(new Options()); String[] subargs = new String[] {"-g default-group", "-i cid_one", diff --git a/tools/src/test/java/org/apache/rocketmq/tools/command/consumer/GetConsumerConfigSubCommandTest.java b/tools/src/test/java/org/apache/rocketmq/tools/command/consumer/GetConsumerConfigSubCommandTest.java index e4e5e970c6e..aefd878b355 100644 --- a/tools/src/test/java/org/apache/rocketmq/tools/command/consumer/GetConsumerConfigSubCommandTest.java +++ b/tools/src/test/java/org/apache/rocketmq/tools/command/consumer/GetConsumerConfigSubCommandTest.java @@ -22,6 +22,7 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.Options; +import org.apache.rocketmq.common.MixAll; import org.apache.rocketmq.remoting.protocol.body.ClusterInfo; import org.apache.rocketmq.remoting.protocol.body.Connection; import org.apache.rocketmq.remoting.protocol.body.ConsumerConnection; @@ -43,18 +44,28 @@ public class GetConsumerConfigSubCommandTest { @Before public void before() { + if (!MixAll.isJdk8()) { + return; + } brokerMocker = startOneBroker(); nameServerMocker = startNameServer(); } @After public void after() { - brokerMocker.shutdown(); - nameServerMocker.shutdown(); + if (null != brokerMocker) { + brokerMocker.shutdown(); + } + if (null != nameServerMocker) { + nameServerMocker.shutdown(); + } } @Test public void testExecute() throws SubCommandException { + if (!MixAll.isJdk8()) { + return; + } GetConsumerConfigSubCommand cmd = new GetConsumerConfigSubCommand(); Options options = ServerUtil.buildCommandlineOptions(new Options()); String[] subargs = new String[] {"-g group_test", String.format("-n localhost:%d", nameServerMocker.listenPort())};