未验证 提交 103cf006 编写于 作者: wu-sheng's avatar wu-sheng 提交者: GitHub

Support JDK 11 compiling and upgrade dependencies (#5579)

* Upgrade dependencies and make the JDK11 compiling passed.

* Update license and fix license check file.

* Add CI for JDK11 compiling.

* Update doc.
上级 5c171432
...@@ -48,6 +48,19 @@ jobs: ...@@ -48,6 +48,19 @@ jobs:
- name: 'Check Dependencies Licenses' - name: 'Check Dependencies Licenses'
run: tools/dependencies/check-LICENSE.sh run: tools/dependencies/check-LICENSE.sh
CI-on-JDK11:
runs-on: ubuntu-18.04
timeout-minutes: 90
steps:
- uses: actions/checkout@v2
with:
submodules: true
- uses: actions/setup-java@v1
with:
java-version: 11
- name: 'Install & Test'
run: ./mvnw --batch-mode -P"agent,backend,ui,dist" clean verify install
CI-on-Windows: CI-on-Windows:
runs-on: windows-latest runs-on: windows-latest
timeout-minutes: 90 timeout-minutes: 90
......
...@@ -26,10 +26,6 @@ ...@@ -26,10 +26,6 @@
<artifactId>apm-application-toolkit</artifactId> <artifactId>apm-application-toolkit</artifactId>
<packaging>pom</packaging> <packaging>pom</packaging>
<properties>
<compiler.version>1.8</compiler.version>
</properties>
<modules> <modules>
<module>apm-toolkit-log4j-1.x</module> <module>apm-toolkit-log4j-1.x</module>
<module>apm-toolkit-log4j-2.x</module> <module>apm-toolkit-log4j-2.x</module>
......
...@@ -37,6 +37,5 @@ ...@@ -37,6 +37,5 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<compiler.version>1.8</compiler.version>
</properties> </properties>
</project> </project>
...@@ -52,6 +52,12 @@ ...@@ -52,6 +52,12 @@
<artifactId>netty-tcnative-boringssl-static</artifactId> <artifactId>netty-tcnative-boringssl-static</artifactId>
<version>${netty-tcnative-boringssl-static.version}</version> <version>${netty-tcnative-boringssl-static.version}</version>
</dependency> </dependency>
<dependency> <!-- necessary for Java 9+ -->
<groupId>org.apache.tomcat</groupId>
<artifactId>annotations-api</artifactId>
<version>${org.apache.tomcat.annotations-api.version}</version>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<guava.version>20.0</guava.version> <guava.version>20.0</guava.version>
<bytebuddy.version>1.10.14</bytebuddy.version>
<wiremock.version>2.6.0</wiremock.version> <wiremock.version>2.6.0</wiremock.version>
<netty-tcnative-boringssl-static.version>2.0.7.Final</netty-tcnative-boringssl-static.version> <netty-tcnative-boringssl-static.version>2.0.7.Final</netty-tcnative-boringssl-static.version>
<os-maven-plugin.version>1.4.1.Final</os-maven-plugin.version> <os-maven-plugin.version>1.4.1.Final</os-maven-plugin.version>
...@@ -68,6 +67,11 @@ ...@@ -68,6 +67,11 @@
<artifactId>byte-buddy</artifactId> <artifactId>byte-buddy</artifactId>
<version>${bytebuddy.version}</version> <version>${bytebuddy.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
<dependency> <dependency>
<groupId>net.bytebuddy</groupId> <groupId>net.bytebuddy</groupId>
......
...@@ -49,7 +49,6 @@ public class WriterFactoryTest { ...@@ -49,7 +49,6 @@ public class WriterFactoryTest {
assertTrue(AgentPackagePath.isPathFound()); assertTrue(AgentPackagePath.isPathFound());
IWriter logWriter = WriterFactory.getLogWriter(); IWriter logWriter = WriterFactory.getLogWriter();
PowerMockito.verifyStatic();
assertTrue(logWriter instanceof SystemOutWriter); assertTrue(logWriter instanceof SystemOutWriter);
} }
...@@ -65,7 +64,6 @@ public class WriterFactoryTest { ...@@ -65,7 +64,6 @@ public class WriterFactoryTest {
assertTrue(AgentPackagePath.isPathFound()); assertTrue(AgentPackagePath.isPathFound());
IWriter logWriter = WriterFactory.getLogWriter(); IWriter logWriter = WriterFactory.getLogWriter();
PowerMockito.verifyStatic();
assertTrue(logWriter instanceof FileWriter); assertTrue(logWriter instanceof FileWriter);
} }
} }
\ No newline at end of file
...@@ -28,11 +28,11 @@ import org.junit.AfterClass; ...@@ -28,11 +28,11 @@ import org.junit.AfterClass;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.mockito.internal.util.reflection.Whitebox;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import org.powermock.reflect.Whitebox;
public class CounterTest { public class CounterTest {
@Rule @Rule
......
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
package org.apache.skywalking.apm.agent.core.meter; package org.apache.skywalking.apm.agent.core.meter;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.skywalking.apm.agent.core.boot.ServiceManager; import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
import org.apache.skywalking.apm.agent.core.test.tools.AgentServiceRule; import org.apache.skywalking.apm.agent.core.test.tools.AgentServiceRule;
import org.apache.skywalking.apm.network.language.agent.v3.Label; import org.apache.skywalking.apm.network.language.agent.v3.Label;
...@@ -28,11 +31,7 @@ import org.junit.AfterClass; ...@@ -28,11 +31,7 @@ import org.junit.AfterClass;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.mockito.internal.util.reflection.Whitebox; import org.powermock.reflect.Whitebox;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
public class GaugeTest { public class GaugeTest {
@Rule @Rule
......
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
package org.apache.skywalking.apm.agent.core.meter; package org.apache.skywalking.apm.agent.core.meter;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.skywalking.apm.agent.core.boot.ServiceManager; import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
import org.apache.skywalking.apm.agent.core.test.tools.AgentServiceRule; import org.apache.skywalking.apm.agent.core.test.tools.AgentServiceRule;
import org.apache.skywalking.apm.network.language.agent.v3.Label; import org.apache.skywalking.apm.network.language.agent.v3.Label;
...@@ -28,11 +31,7 @@ import org.junit.AfterClass; ...@@ -28,11 +31,7 @@ import org.junit.AfterClass;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.mockito.internal.util.reflection.Whitebox; import org.powermock.reflect.Whitebox;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
public class HistogramTest { public class HistogramTest {
@Rule @Rule
...@@ -66,7 +65,11 @@ public class HistogramTest { ...@@ -66,7 +65,11 @@ public class HistogramTest {
final List<Label> labels = Arrays.asList(Label.newBuilder().setName("k1").setValue("v1").build()); final List<Label> labels = Arrays.asList(Label.newBuilder().setName("k1").setValue("v1").build());
// Check histogram message // Check histogram message
final Histogram histogram = MeterFactory.histogram("test").steps(Arrays.asList(2d, 5d)).minValue(1d).tag("k1", "v1").build(); final Histogram histogram = MeterFactory.histogram("test")
.steps(Arrays.asList(2d, 5d))
.minValue(1d)
.tag("k1", "v1")
.build();
histogram.addValue(1); histogram.addValue(1);
histogram.addValue(3); histogram.addValue(3);
histogram.addValue(3); histogram.addValue(3);
......
...@@ -18,14 +18,13 @@ ...@@ -18,14 +18,13 @@
package org.apache.skywalking.apm.agent.core.meter; package org.apache.skywalking.apm.agent.core.meter;
import org.apache.skywalking.apm.network.language.agent.v3.Label;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.internal.util.reflection.Whitebox;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import org.apache.skywalking.apm.network.language.agent.v3.Label;
import org.junit.Assert;
import org.junit.Test;
import org.powermock.reflect.Whitebox;
public class MeterIdTest { public class MeterIdTest {
......
...@@ -28,9 +28,6 @@ ...@@ -28,9 +28,6 @@
<name>armeria-0.85.x-plugin</name> <name>armeria-0.85.x-plugin</name>
<packaging>jar</packaging> <packaging>jar</packaging>
<description>SkyWalking Agent Plugin for Armeria 0.85.0 ~ 0.98.0</description> <description>SkyWalking Agent Plugin for Armeria 0.85.0 ~ 0.98.0</description>
<properties>
<compiler.version>1.8</compiler.version>
</properties>
<dependencies> <dependencies>
<dependency> <dependency>
......
...@@ -325,10 +325,10 @@ public class SWCallableStatementTest extends AbstractStatementTest { ...@@ -325,10 +325,10 @@ public class SWCallableStatementTest extends AbstractStatementTest {
verify(mysqlCallableStatement).setBlob(anyInt(), any(InputStream.class), anyLong()); verify(mysqlCallableStatement).setBlob(anyInt(), any(InputStream.class), anyLong());
verify(mysqlCallableStatement).setClob(anyInt(), any(Clob.class)); verify(mysqlCallableStatement).setClob(anyInt(), any(Clob.class));
verify(mysqlCallableStatement).setClob(anyInt(), any(Reader.class)); verify(mysqlCallableStatement).setClob(anyInt(), any(Reader.class));
verify(mysqlCallableStatement).setClob(anyInt(), any(Reader.class), anyInt()); verify(mysqlCallableStatement).setClob(anyInt(), any(Reader.class), anyLong());
verify(mysqlCallableStatement).setNString(anyInt(), anyString()); verify(mysqlCallableStatement).setNString(anyInt(), anyString());
verify(mysqlCallableStatement).setNCharacterStream(anyInt(), any(Reader.class)); verify(mysqlCallableStatement).setNCharacterStream(anyInt(), any(Reader.class));
verify(mysqlCallableStatement).setNCharacterStream(anyInt(), any(Reader.class), anyInt()); verify(mysqlCallableStatement).setNCharacterStream(anyInt(), any(Reader.class), anyLong());
verify(mysqlCallableStatement).setNClob(27, nClob); verify(mysqlCallableStatement).setNClob(27, nClob);
verify(mysqlCallableStatement).setNClob(28, reader, 1); verify(mysqlCallableStatement).setNClob(28, reader, 1);
verify(mysqlCallableStatement).setObject(anyInt(), Matchers.anyObject()); verify(mysqlCallableStatement).setObject(anyInt(), Matchers.anyObject());
...@@ -377,10 +377,10 @@ public class SWCallableStatementTest extends AbstractStatementTest { ...@@ -377,10 +377,10 @@ public class SWCallableStatementTest extends AbstractStatementTest {
verify(mysqlCallableStatement).setBlob(anyString(), any(InputStream.class), anyLong()); verify(mysqlCallableStatement).setBlob(anyString(), any(InputStream.class), anyLong());
verify(mysqlCallableStatement).setClob(anyString(), any(Clob.class)); verify(mysqlCallableStatement).setClob(anyString(), any(Clob.class));
verify(mysqlCallableStatement).setClob(anyString(), any(Reader.class)); verify(mysqlCallableStatement).setClob(anyString(), any(Reader.class));
verify(mysqlCallableStatement).setClob(anyString(), any(Reader.class), anyInt()); verify(mysqlCallableStatement).setClob(anyString(), any(Reader.class), anyLong());
verify(mysqlCallableStatement).setNString(anyString(), anyString()); verify(mysqlCallableStatement).setNString(anyString(), anyString());
verify(mysqlCallableStatement).setNCharacterStream(anyString(), any(Reader.class)); verify(mysqlCallableStatement).setNCharacterStream(anyString(), any(Reader.class));
verify(mysqlCallableStatement).setNCharacterStream(anyString(), any(Reader.class), anyInt()); verify(mysqlCallableStatement).setNCharacterStream(anyString(), any(Reader.class), anyLong());
verify(mysqlCallableStatement).setNClob(27, nClob); verify(mysqlCallableStatement).setNClob(27, nClob);
verify(mysqlCallableStatement).setNClob(28, reader, 1); verify(mysqlCallableStatement).setNClob(28, reader, 1);
verify(mysqlCallableStatement).setObject(anyString(), Matchers.anyObject()); verify(mysqlCallableStatement).setObject(anyString(), Matchers.anyObject());
......
...@@ -206,10 +206,10 @@ public class SwPreparedStatementTest extends AbstractStatementTest { ...@@ -206,10 +206,10 @@ public class SwPreparedStatementTest extends AbstractStatementTest {
verify(mysqlPreparedStatement).setBlob(anyInt(), any(InputStream.class), anyLong()); verify(mysqlPreparedStatement).setBlob(anyInt(), any(InputStream.class), anyLong());
verify(mysqlPreparedStatement).setClob(anyInt(), any(Clob.class)); verify(mysqlPreparedStatement).setClob(anyInt(), any(Clob.class));
verify(mysqlPreparedStatement).setClob(anyInt(), any(Reader.class)); verify(mysqlPreparedStatement).setClob(anyInt(), any(Reader.class));
verify(mysqlPreparedStatement).setClob(anyInt(), any(Reader.class), anyInt()); verify(mysqlPreparedStatement).setClob(anyInt(), any(Reader.class), anyLong());
verify(mysqlPreparedStatement).setNString(anyInt(), anyString()); verify(mysqlPreparedStatement).setNString(anyInt(), anyString());
verify(mysqlPreparedStatement).setNCharacterStream(anyInt(), any(Reader.class)); verify(mysqlPreparedStatement).setNCharacterStream(anyInt(), any(Reader.class));
verify(mysqlPreparedStatement).setNCharacterStream(anyInt(), any(Reader.class), anyInt()); verify(mysqlPreparedStatement).setNCharacterStream(anyInt(), any(Reader.class), anyLong());
verify(mysqlPreparedStatement).setNClob(27, nClob); verify(mysqlPreparedStatement).setNClob(27, nClob);
verify(mysqlPreparedStatement).setNClob(28, reader, 1); verify(mysqlPreparedStatement).setNClob(28, reader, 1);
verify(mysqlPreparedStatement).setObject(anyInt(), Matchers.anyObject()); verify(mysqlPreparedStatement).setObject(anyInt(), Matchers.anyObject());
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
<url>http://maven.apache.org</url> <url>http://maven.apache.org</url>
<properties> <properties>
<lettuce-core.version>5.1.3.RELEASE</lettuce-core.version> <lettuce-core.version>5.1.3.RELEASE</lettuce-core.version>
<compiler.version>1.8</compiler.version>
</properties> </properties>
<dependencies> <dependencies>
......
...@@ -127,6 +127,12 @@ ...@@ -127,6 +127,12 @@
<version>${project.version}</version> <version>${project.version}</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>${bytebuddy.version}</version>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>org.apache.skywalking</groupId> <groupId>org.apache.skywalking</groupId>
<artifactId>apm-util</artifactId> <artifactId>apm-util</artifactId>
......
...@@ -41,6 +41,5 @@ ...@@ -41,6 +41,5 @@
<version>${redisson.version}</version> <version>${redisson.version}</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
...@@ -30,7 +30,6 @@ import org.junit.Before; ...@@ -30,7 +30,6 @@ import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.modules.junit4.PowerMockRunnerDelegate; import org.powermock.modules.junit4.PowerMockRunnerDelegate;
import org.redisson.config.Config; import org.redisson.config.Config;
...@@ -45,9 +44,7 @@ public class RedisConnectionMethodInterceptorTest { ...@@ -45,9 +44,7 @@ public class RedisConnectionMethodInterceptorTest {
@Rule @Rule
public AgentServiceRule serviceRule = new AgentServiceRule(); public AgentServiceRule serviceRule = new AgentServiceRule();
@Mock
private MockInstance mockRedisClientInstance; private MockInstance mockRedisClientInstance;
@Mock
private MockInstance mockRedisConnectionInstance; private MockInstance mockRedisConnectionInstance;
private RedisConnectionMethodInterceptor interceptor; private RedisConnectionMethodInterceptor interceptor;
...@@ -67,8 +64,8 @@ public class RedisConnectionMethodInterceptorTest { ...@@ -67,8 +64,8 @@ public class RedisConnectionMethodInterceptorTest {
} }
@SuppressWarnings({ @SuppressWarnings({
"rawtypes", "rawtypes",
"unchecked" "unchecked"
}) })
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
...@@ -80,8 +77,9 @@ public class RedisConnectionMethodInterceptorTest { ...@@ -80,8 +77,9 @@ public class RedisConnectionMethodInterceptorTest {
@Test @Test
public void testIntercept() throws Throwable { public void testIntercept() throws Throwable {
interceptor.onConstruct(mockRedisConnectionInstance, new Object[]{mockRedisClientInstance}); interceptor.onConstruct(mockRedisConnectionInstance, new Object[] {mockRedisClientInstance});
MatcherAssert.assertThat((String) mockRedisConnectionInstance.getSkyWalkingDynamicField(), Is.is("127.0.0.1:6379;127.0.0.1:6378;")); MatcherAssert.assertThat(
(String) mockRedisConnectionInstance.getSkyWalkingDynamicField(), Is.is("127.0.0.1:6379;127.0.0.1:6378;"));
} }
@Test @Test
......
...@@ -91,7 +91,7 @@ public class TransportClientHandlerInterceptorTest { ...@@ -91,7 +91,7 @@ public class TransportClientHandlerInterceptorTest {
nextInterceptor = new TransportClientHandlerInterceptor(); nextInterceptor = new TransportClientHandlerInterceptor();
PowerMockito.mock(Invocation.class); PowerMockito.mock(Invocation.class);
when(operationMeta.getSchemaMeta()).thenReturn(schemaMeta); when(operationMeta.getSchemaMeta()).thenReturn(schemaMeta);
when(endpoint.getAddress()).thenReturn("0.0.0.0:7777"); when(endpoint.toString()).thenReturn("/bmi");
when(invocation.getEndpoint()).thenReturn(endpoint); when(invocation.getEndpoint()).thenReturn(endpoint);
when(invocation.getMicroserviceQualifiedName()).thenReturn("consumerTest"); when(invocation.getMicroserviceQualifiedName()).thenReturn("consumerTest");
when(operationMeta.getOperationPath()).thenReturn("/bmi"); when(operationMeta.getOperationPath()).thenReturn("/bmi");
......
...@@ -91,7 +91,7 @@ public class TransportClientHandlerInterceptorTest { ...@@ -91,7 +91,7 @@ public class TransportClientHandlerInterceptorTest {
nextInterceptor = new TransportClientHandlerInterceptor(); nextInterceptor = new TransportClientHandlerInterceptor();
PowerMockito.mock(Invocation.class); PowerMockito.mock(Invocation.class);
when(operationMeta.getSchemaMeta()).thenReturn(schemaMeta); when(operationMeta.getSchemaMeta()).thenReturn(schemaMeta);
when(endpoint.getAddress()).thenReturn("0.0.0.0:7777"); when(endpoint.toString()).thenReturn("/bmi");
when(invocation.getEndpoint()).thenReturn(endpoint); when(invocation.getEndpoint()).thenReturn(endpoint);
when(invocation.getMicroserviceQualifiedName()).thenReturn("consumerTest"); when(invocation.getMicroserviceQualifiedName()).thenReturn("consumerTest");
when(operationMeta.getOperationPath()).thenReturn("/bmi"); when(operationMeta.getOperationPath()).thenReturn("/bmi");
......
/*
* 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.skywalking.apm.plugin.spring.mvc.v3;
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance;
import org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache;
import org.apache.skywalking.apm.plugin.spring.mvc.commons.interceptor.GetBeanInterceptor;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.web.context.request.NativeWebRequest;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class GetBeanInterceptorTest {
@Mock
private EnhancedInstance enhancedInstance;
@Mock
private NativeWebRequest request;
@Mock
private EnhancedInstance enhanceRet;
private GetBeanInterceptor interceptor;
@Before
public void setUp() {
interceptor = new GetBeanInterceptor();
when(enhanceRet.getSkyWalkingDynamicField()).thenReturn(new EnhanceRequireObjectCache());
when(enhancedInstance.getSkyWalkingDynamicField()).thenReturn(request);
}
@Test
public void testResultIsNotEnhanceInstance() throws Throwable {
interceptor.afterMethod(enhancedInstance, null, null, null, new Object());
verify(enhanceRet, times(0)).setSkyWalkingDynamicField(Matchers.any());
}
}
...@@ -37,8 +37,4 @@ ...@@ -37,8 +37,4 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<properties>
<compiler.version>1.8</compiler.version>
</properties>
</project> </project>
\ No newline at end of file
...@@ -43,6 +43,14 @@ ...@@ -43,6 +43,14 @@
<artifactId>struts2-core</artifactId> <artifactId>struts2-core</artifactId>
<version>${struts2-core.version}</version> <version>${struts2-core.version}</version>
<scope>provided</scope> <scope>provided</scope>
<exclusions>
<!-- The default javassist is not compatible with 3.x power mock. -->
<!-- Manually add the dependency back for test below. -->
<exclusion>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>javax.servlet</groupId> <groupId>javax.servlet</groupId>
...@@ -56,5 +64,11 @@ ...@@ -56,5 +64,11 @@
<version>${jsp-api.version}</version> <version>${jsp-api.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.24.0-GA</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>
...@@ -18,6 +18,8 @@ ...@@ -18,6 +18,8 @@
package org.apache.skywalking.apm.toolkit.activation.meter; package org.apache.skywalking.apm.toolkit.activation.meter;
import java.util.Arrays;
import java.util.Map;
import org.apache.skywalking.apm.agent.core.boot.ServiceManager; import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
import org.apache.skywalking.apm.agent.core.meter.BaseMeter; import org.apache.skywalking.apm.agent.core.meter.BaseMeter;
import org.apache.skywalking.apm.agent.core.meter.MeterService; import org.apache.skywalking.apm.agent.core.meter.MeterService;
...@@ -30,10 +32,7 @@ import org.apache.skywalking.apm.toolkit.meter.MeterId; ...@@ -30,10 +32,7 @@ import org.apache.skywalking.apm.toolkit.meter.MeterId;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.mockito.internal.util.reflection.Whitebox; import org.powermock.reflect.Whitebox;
import java.util.Arrays;
import java.util.Map;
public class CounterConstructInterceptorTest { public class CounterConstructInterceptorTest {
...@@ -47,10 +46,12 @@ public class CounterConstructInterceptorTest { ...@@ -47,10 +46,12 @@ public class CounterConstructInterceptorTest {
public void testConstruct() { public void testConstruct() {
counterConstructInterceptor.onConstruct(enhancedInstance, new Object[] { counterConstructInterceptor.onConstruct(enhancedInstance, new Object[] {
new MeterId("test", MeterId.MeterType.COUNTER, Arrays.asList(new MeterId.Tag("k1", "v1"))), new MeterId("test", MeterId.MeterType.COUNTER, Arrays.asList(new MeterId.Tag("k1", "v1"))),
Counter.Mode.RATE}); Counter.Mode.RATE
});
final MeterService service = ServiceManager.INSTANCE.findService(MeterService.class); final MeterService service = ServiceManager.INSTANCE.findService(MeterService.class);
final Map<MeterId, BaseMeter> meterMap = (Map<MeterId, BaseMeter>) Whitebox.getInternalState(service, "meterMap"); final Map<MeterId, BaseMeter> meterMap = (Map<MeterId, BaseMeter>) Whitebox.getInternalState(
service, "meterMap");
Assert.assertEquals(1, meterMap.size()); Assert.assertEquals(1, meterMap.size());
final BaseMeter meterData = meterMap.values().iterator().next(); final BaseMeter meterData = meterMap.values().iterator().next();
......
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
package org.apache.skywalking.apm.toolkit.activation.meter; package org.apache.skywalking.apm.toolkit.activation.meter;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Supplier;
import org.apache.skywalking.apm.agent.core.boot.ServiceManager; import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
import org.apache.skywalking.apm.agent.core.meter.BaseMeter; import org.apache.skywalking.apm.agent.core.meter.BaseMeter;
import org.apache.skywalking.apm.agent.core.meter.Gauge; import org.apache.skywalking.apm.agent.core.meter.Gauge;
...@@ -30,11 +33,7 @@ import org.apache.skywalking.apm.toolkit.meter.MeterId; ...@@ -30,11 +33,7 @@ import org.apache.skywalking.apm.toolkit.meter.MeterId;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.mockito.internal.util.reflection.Whitebox; import org.powermock.reflect.Whitebox;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Supplier;
public class GaugeConstructInterceptorTest { public class GaugeConstructInterceptorTest {
...@@ -52,7 +51,8 @@ public class GaugeConstructInterceptorTest { ...@@ -52,7 +51,8 @@ public class GaugeConstructInterceptorTest {
}); });
final MeterService service = ServiceManager.INSTANCE.findService(MeterService.class); final MeterService service = ServiceManager.INSTANCE.findService(MeterService.class);
final Map<MeterId, BaseMeter> meterMap = (Map<MeterId, BaseMeter>) Whitebox.getInternalState(service, "meterMap"); final Map<MeterId, BaseMeter> meterMap = (Map<MeterId, BaseMeter>) Whitebox.getInternalState(
service, "meterMap");
Assert.assertEquals(1, meterMap.size()); Assert.assertEquals(1, meterMap.size());
final Object field = meterMap.values().iterator().next(); final Object field = meterMap.values().iterator().next();
......
...@@ -18,6 +18,8 @@ ...@@ -18,6 +18,8 @@
package org.apache.skywalking.apm.toolkit.activation.meter; package org.apache.skywalking.apm.toolkit.activation.meter;
import java.util.Arrays;
import java.util.Map;
import org.apache.skywalking.apm.agent.core.boot.ServiceManager; import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
import org.apache.skywalking.apm.agent.core.meter.BaseMeter; import org.apache.skywalking.apm.agent.core.meter.BaseMeter;
import org.apache.skywalking.apm.agent.core.meter.Histogram; import org.apache.skywalking.apm.agent.core.meter.Histogram;
...@@ -30,10 +32,7 @@ import org.apache.skywalking.apm.toolkit.meter.MeterId; ...@@ -30,10 +32,7 @@ import org.apache.skywalking.apm.toolkit.meter.MeterId;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.mockito.internal.util.reflection.Whitebox; import org.powermock.reflect.Whitebox;
import java.util.Arrays;
import java.util.Map;
public class HistogramConstructInterceptorTest { public class HistogramConstructInterceptorTest {
...@@ -47,10 +46,12 @@ public class HistogramConstructInterceptorTest { ...@@ -47,10 +46,12 @@ public class HistogramConstructInterceptorTest {
public void testConstruct() { public void testConstruct() {
histogramConstructInterceptor.onConstruct(enhancedInstance, new Object[] { histogramConstructInterceptor.onConstruct(enhancedInstance, new Object[] {
new MeterId("test", MeterId.MeterType.HISTOGRAM, Arrays.asList(new MeterId.Tag("k1", "v1"))), new MeterId("test", MeterId.MeterType.HISTOGRAM, Arrays.asList(new MeterId.Tag("k1", "v1"))),
Arrays.asList(1d, 5d, 10d)}); Arrays.asList(1d, 5d, 10d)
});
final MeterService service = ServiceManager.INSTANCE.findService(MeterService.class); final MeterService service = ServiceManager.INSTANCE.findService(MeterService.class);
final Map<MeterId, BaseMeter> meterMap = (Map<MeterId, BaseMeter>) Whitebox.getInternalState(service, "meterMap"); final Map<MeterId, BaseMeter> meterMap = (Map<MeterId, BaseMeter>) Whitebox.getInternalState(
service, "meterMap");
Assert.assertEquals(1, meterMap.size()); Assert.assertEquals(1, meterMap.size());
final Object field = meterMap.values().iterator().next(); final Object field = meterMap.values().iterator().next();
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
<properties> <properties>
<spring-cloud-starter-gateway.version>2.1.1.RELEASE</spring-cloud-starter-gateway.version> <spring-cloud-starter-gateway.version>2.1.1.RELEASE</spring-cloud-starter-gateway.version>
<compiler.version>1.8</compiler.version>
</properties> </properties>
<dependencies> <dependencies>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
<properties> <properties>
<spring-cloud-starter-gateway.version>2.1.1.RELEASE</spring-cloud-starter-gateway.version> <spring-cloud-starter-gateway.version>2.1.1.RELEASE</spring-cloud-starter-gateway.version>
<compiler.version>1.8</compiler.version>
</properties> </properties>
<dependencies> <dependencies>
......
...@@ -37,8 +37,4 @@ ...@@ -37,8 +37,4 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<properties>
<compiler.version>1.8</compiler.version>
</properties>
</project> </project>
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
<packaging>jar</packaging> <packaging>jar</packaging>
<properties> <properties>
<compiler.version>1.8</compiler.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.boot.version>1.5.11.RELEASE</spring.boot.version> <spring.boot.version>1.5.11.RELEASE</spring.boot.version>
<log4j.version>2.6.2</log4j.version> <log4j.version>2.6.2</log4j.version>
...@@ -97,17 +96,23 @@ ...@@ -97,17 +96,23 @@
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency> </dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback-classic.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId> <artifactId>spring-boot-starter-test</artifactId>
<version>${spring.boot.version}</version> <version>${spring.boot.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- Add for JDK9+ -->
<dependency> <dependency>
<groupId>ch.qos.logback</groupId> <groupId>com.sun.activation</groupId>
<artifactId>logback-classic</artifactId> <artifactId>javax.activation</artifactId>
<version>${logback-classic.version}</version> <version>1.2.0</version>
<scope>provided</scope>
</dependency> </dependency>
</dependencies> </dependencies>
......
...@@ -226,12 +226,11 @@ The following components are provided under the Apache License. See project link ...@@ -226,12 +226,11 @@ The following components are provided under the Apache License. See project link
The text of each license is the standard Apache 2.0 license. The text of each license is the standard Apache 2.0 license.
raphw (byte-buddy) 1.10.14: http://bytebuddy.net/ , Apache 2.0 raphw (byte-buddy) 1.10.14: http://bytebuddy.net/ , Apache 2.0
Google: gprc-java 1.26.0: https://github.com/grpc/grpc-java, Apache 2.0 Google: gprc-java 1.32.1: https://github.com/grpc/grpc-java, Apache 2.0
Google: guava 28.1: https://github.com/google/guava , Apache 2.0 Google: guava 28.1: https://github.com/google/guava , Apache 2.0
Google: guice 4.1.0: https://github.com/google/guice , Apache 2.0 Google: guice 4.1.0: https://github.com/google/guice , Apache 2.0
Google: gson 2.8.6: https://github.com/google/gson , Apache 2.0 Google: gson 2.8.6: https://github.com/google/gson , Apache 2.0
Google: opencensus-java 0.24.0: https://github.com/census-instrumentation/opencensus-java , Apache 2.0 Google: proto-google-common-protos 1.17.0: https://github.com/googleapis/googleapis , Apache 2.0
Google: proto-google-common-protos 1.12.0: https://github.com/googleapis/googleapis , Apache 2.0
Google: jsr305 3.0.2: http://central.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.0/jsr305-3.0.0.pom , Apache 2.0 Google: jsr305 3.0.2: http://central.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.0/jsr305-3.0.0.pom , Apache 2.0
Elasticsearch BV (Elasticsearch) 6.3.2: https://www.elastic.co/products/elasticsearch , Apache 2.0 Elasticsearch BV (Elasticsearch) 6.3.2: https://www.elastic.co/products/elasticsearch , Apache 2.0
Elasticsearch BV (Elasticsearch) 7.0.0: https://www.elastic.co/products/elasticsearch , Apache 2.0 Elasticsearch BV (Elasticsearch) 7.0.0: https://www.elastic.co/products/elasticsearch , Apache 2.0
...@@ -241,8 +240,6 @@ The text of each license is the standard Apache 2.0 license. ...@@ -241,8 +240,6 @@ The text of each license is the standard Apache 2.0 license.
percolator-client 5.5.0: https://github.com/elastic/elasticsearch/tree/master/modules/percolator , Apache 2.0 percolator-client 5.5.0: https://github.com/elastic/elasticsearch/tree/master/modules/percolator , Apache 2.0
rest 5.5.0: https://github.com/elastic/elasticsearch/tree/master/client/rest , Apache 2.0 rest 5.5.0: https://github.com/elastic/elasticsearch/tree/master/client/rest , Apache 2.0
transport 5.5.0: https://github.com/elastic/elasticsearch/tree/master/client/transport , Apache 2.0 transport 5.5.0: https://github.com/elastic/elasticsearch/tree/master/client/transport , Apache 2.0
transport-netty3-client 5.5.0: http://central.maven.org/maven2/org/elasticsearch/plugin/transport-netty3-client/5.5.0/transport-netty3-client-5.5.0.pom , Apache 2.0
transport-netty4-client 5.5.0: http://central.maven.org/maven2/org/elasticsearch/plugin/transport-netty4-client/5.5.0/transport-netty4-client-5.5.0.pom , Apache 2.0
securesm 1.1: https://github.com/elastic/securesm/blob/master/pom.xml , Apache 2.0 securesm 1.1: https://github.com/elastic/securesm/blob/master/pom.xml , Apache 2.0
LMAX Ltd.(disruptor) 3.3.6: https://github.com/LMAX-Exchange/disruptor , Apache 2.0 LMAX Ltd.(disruptor) 3.3.6: https://github.com/LMAX-Exchange/disruptor , Apache 2.0
Eclipse (Jetty) 9.4.28.v20200408: https://www.eclipse.org/jetty/ , Apache 2.0 and Eclipse Public License 1.0 Eclipse (Jetty) 9.4.28.v20200408: https://www.eclipse.org/jetty/ , Apache 2.0 and Eclipse Public License 1.0
...@@ -271,7 +268,7 @@ The text of each license is the standard Apache 2.0 license. ...@@ -271,7 +268,7 @@ The text of each license is the standard Apache 2.0 license.
Apache: commons-collections4 4.1: https://mvnrepository.com/artifact/org.apache.commons/commons-collections4, Apache 2.0 Apache: commons-collections4 4.1: https://mvnrepository.com/artifact/org.apache.commons/commons-collections4, Apache 2.0
Apache: tomcat 8.5.27: https://github.com/apache/tomcat/tree/trunk, Apache 2.0 Apache: tomcat 8.5.27: https://github.com/apache/tomcat/tree/trunk, Apache 2.0
Apache: freemarker 2.3.28: https://github.com/apache/freemarker, Apache 2.0 Apache: freemarker 2.3.28: https://github.com/apache/freemarker, Apache 2.0
netty 5.5.0: https://github.com/netty/netty/blob/4.1/LICENSE.txt, Apache 2.0 netty 4.1.12: https://github.com/netty/netty/blob/4.1/LICENSE.txt, Apache 2.0
annotations 13.0: http://www.jetbrains.org, Apache 2.0 annotations 13.0: http://www.jetbrains.org, Apache 2.0
compiler 0.9.3: https://github.com/spullara/mustache.java, Apache 2.0 compiler 0.9.3: https://github.com/spullara/mustache.java, Apache 2.0
error_prone_annotations 2.3.2: https://github.com/google/error-prone, Apache 2.0 error_prone_annotations 2.3.2: https://github.com/google/error-prone, Apache 2.0
...@@ -378,8 +375,8 @@ The text of each license is also included at licenses/LICENSE-[project].txt. ...@@ -378,8 +375,8 @@ The text of each license is also included at licenses/LICENSE-[project].txt.
asm 8.0.1:https://gitlab.ow2.org , BSD-3-Clause asm 8.0.1:https://gitlab.ow2.org , BSD-3-Clause
antlr4-runtime 4.5.1: http://www.antlr.org/license.html, BSD-3-Clause antlr4-runtime 4.5.1: http://www.antlr.org/license.html, BSD-3-Clause
jline 0.9.94: http://mvnrepository.com/artifact/jline/jline/0.9.94, BSD jline 0.9.94: http://mvnrepository.com/artifact/jline/jline/0.9.94, BSD
Google: protobuf-java 3.4.0: https://github.com/google/protobuf/blob/master/java/pom.xml , BSD-3-Clause Google: protobuf-java 3.13.0: https://github.com/google/protobuf/blob/master/java/pom.xml , BSD-3-Clause
Google: protobuf-java-util 3.4.0: https://github.com/google/protobuf/blob/master/java/pom.xml , BSD-3-Clause Google: protobuf-java-util 3.12.4: https://github.com/google/protobuf/blob/master/java/pom.xml , BSD-3-Clause
reflectasm 1.11.3: https://github.com/EsotericSoftware/reflectasm , BSD-3-Clause reflectasm 1.11.3: https://github.com/EsotericSoftware/reflectasm , BSD-3-Clause
proto files from gogo: https://github.com/gogo/protobuf BSD-2 proto files from gogo: https://github.com/gogo/protobuf BSD-2
......
...@@ -16,7 +16,7 @@ If you need to execute build behind the proxy, edit the *.mvn/jvm.config* and pu ...@@ -16,7 +16,7 @@ If you need to execute build behind the proxy, edit the *.mvn/jvm.config* and pu
``` ```
### Build from GitHub ### Build from GitHub
1. Prepare git, JDK8 and Maven 3.6+ 1. Prepare git, JDK8+ and Maven 3.6+
1. Clone project 1. Clone project
If you want to build a release from source codes, provide a `tag name` by using `git clone -b [tag_name] ...` while cloning. If you want to build a release from source codes, provide a `tag name` by using `git clone -b [tag_name] ...` while cloning.
...@@ -41,7 +41,7 @@ If you need to execute build behind the proxy, edit the *.mvn/jvm.config* and pu ...@@ -41,7 +41,7 @@ If you need to execute build behind the proxy, edit the *.mvn/jvm.config* and pu
For each official Apache release, there is a complete and independent source code tar, which is including all source codes. You could download it from [SkyWalking Apache download page](http://skywalking.apache.org/downloads/). No git related stuff required when compiling this. Just follow these steps. For each official Apache release, there is a complete and independent source code tar, which is including all source codes. You could download it from [SkyWalking Apache download page](http://skywalking.apache.org/downloads/). No git related stuff required when compiling this. Just follow these steps.
1. Prepare JDK8 and Maven 3.6+ 1. Prepare JDK8+ and Maven 3.6+
1. Run `./mvnw clean package -DskipTests` 1. Run `./mvnw clean package -DskipTests`
1. All packages are in `/dist`.(.tar.gz for Linux and .zip for Windows). 1. All packages are in `/dist`.(.tar.gz for Linux and .zip for Windows).
......
...@@ -39,7 +39,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleManager; ...@@ -39,7 +39,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleManager;
import org.junit.Before; import org.junit.Before;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.internal.util.reflection.Whitebox; import org.powermock.reflect.Whitebox;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
...@@ -90,19 +90,32 @@ public abstract class MeterBaseTest { ...@@ -90,19 +90,32 @@ public abstract class MeterBaseTest {
timestamp = System.currentTimeMillis(); timestamp = System.currentTimeMillis();
// single value // single value
processor.read(MeterData.newBuilder() processor.read(MeterData.newBuilder()
.setService("service").setServiceInstance("instance").setTimestamp(timestamp) .setService("service").setServiceInstance("instance").setTimestamp(timestamp)
.setSingleValue(MeterSingleValue.newBuilder().setName("test_count1") .setSingleValue(MeterSingleValue.newBuilder().setName("test_count1")
.addLabels(Label.newBuilder().setName("k1").setValue("v1").build()).setValue(1).build()) .addLabels(Label.newBuilder()
.build()); .setName("k1")
.setValue("v1")
.build()).setValue(1).build())
.build());
// histogram // histogram
processor.read(MeterData.newBuilder() processor.read(MeterData.newBuilder()
.setHistogram(MeterHistogram.newBuilder().setName("test_histogram") .setHistogram(MeterHistogram.newBuilder().setName("test_histogram")
.addLabels(Label.newBuilder().setName("k2").setValue("v2").build()) .addLabels(
.addValues(MeterBucketValue.newBuilder().setBucket(1).setCount(10).build()) Label.newBuilder().setName("k2").setValue("v2").build())
.addValues(MeterBucketValue.newBuilder().setBucket(5).setCount(15).build()) .addValues(MeterBucketValue.newBuilder()
.addValues(MeterBucketValue.newBuilder().setBucket(10).setCount(3).build()) .setBucket(1)
.build()) .setCount(10)
.build()); .build())
.addValues(MeterBucketValue.newBuilder()
.setBucket(5)
.setCount(15)
.build())
.addValues(MeterBucketValue.newBuilder()
.setBucket(10)
.setCount(3)
.build())
.build())
.build());
} }
} }
...@@ -31,27 +31,28 @@ import org.apache.skywalking.oap.server.library.module.ModuleStartException; ...@@ -31,27 +31,28 @@ import org.apache.skywalking.oap.server.library.module.ModuleStartException;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.internal.util.reflection.Whitebox;
import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doCallRealMethod; import static org.mockito.Mockito.doCallRealMethod;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.management.*") @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
public class MeterBuilderTest extends MeterBaseTest { public class MeterBuilderTest extends MeterBaseTest {
@Test @Test
public void testBuildAndSend() throws ModuleStartException { public void testBuildAndSend() throws ModuleStartException {
List<AcceptableValue> values = new ArrayList<>(); List<AcceptableValue> values = new ArrayList<>();
doAnswer(invocationOnMock -> { doAnswer(invocationOnMock -> {
values.add(invocationOnMock.getArgumentAt(0, AcceptableValue.class)); values.add(invocationOnMock.getArgument(0, AcceptableValue.class));
return null; return null;
}).when(meterSystem).doStreamingCalculation(any()); }).when(meterSystem).doStreamingCalculation(any());
final MeterProcessService context = (MeterProcessService) Whitebox.getInternalState(processor, "processService"); final MeterProcessService context = (MeterProcessService) Whitebox.getInternalState(
processor, "processService");
context.enabledBuilders().stream().peek(b -> doCallRealMethod().when(b).buildAndSend(any(), any())); context.enabledBuilders().stream().peek(b -> doCallRealMethod().when(b).buildAndSend(any(), any()));
context.initMeters(); context.initMeters();
...@@ -91,7 +92,8 @@ public class MeterBuilderTest extends MeterBaseTest { ...@@ -91,7 +92,8 @@ public class MeterBuilderTest extends MeterBaseTest {
private void verifyDataTable(DataTable table, Object... data) { private void verifyDataTable(DataTable table, Object... data) {
Assert.assertEquals(data.length / 2, table.size()); Assert.assertEquals(data.length / 2, table.size());
for (int i = 0; i < data.length; i += 2) { for (int i = 0; i < data.length; i += 2) {
Assert.assertEquals(Long.parseLong(String.valueOf(data[i + 1])), table.get(String.valueOf(data[i])).longValue()); Assert.assertEquals(
Long.parseLong(String.valueOf(data[i + 1])), table.get(String.valueOf(data[i])).longValue());
} }
} }
} }
...@@ -25,16 +25,16 @@ import org.apache.skywalking.oap.server.library.module.ModuleStartException; ...@@ -25,16 +25,16 @@ import org.apache.skywalking.oap.server.library.module.ModuleStartException;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.internal.util.reflection.Whitebox;
import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.management.*") @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
public class MeterProcessContextTest extends MeterBaseTest { public class MeterProcessContextTest extends MeterBaseTest {
private static final String CONFIG_PATH = "meter-receive-config"; private static final String CONFIG_PATH = "meter-receive-config";
......
...@@ -18,18 +18,17 @@ ...@@ -18,18 +18,17 @@
package org.apache.skywalking.oap.server.analyzer.provider.meter.process; package org.apache.skywalking.oap.server.analyzer.provider.meter.process;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.internal.util.reflection.Whitebox;
import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doNothing;
...@@ -38,7 +37,7 @@ import static org.mockito.Mockito.verify; ...@@ -38,7 +37,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.management.*") @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
public class MeterProcessorTest extends MeterBaseTest { public class MeterProcessorTest extends MeterBaseTest {
@Test @Test
...@@ -49,15 +48,18 @@ public class MeterProcessorTest extends MeterBaseTest { ...@@ -49,15 +48,18 @@ public class MeterProcessorTest extends MeterBaseTest {
Assert.assertEquals(timestamp, processor.timestamp().longValue()); Assert.assertEquals(timestamp, processor.timestamp().longValue());
// meters check // meters check
final Map<String, EvalMultipleData> meters = (Map<String, EvalMultipleData>) Whitebox.getInternalState(processor, "meters"); final Map<String, EvalMultipleData> meters = (Map<String, EvalMultipleData>) Whitebox.getInternalState(
processor, "meters");
Assert.assertEquals(2, meters.size()); Assert.assertEquals(2, meters.size());
// single value // single value
EvalSingleData singleData = verifyBaseData(meters.get("test_count1"), "test_count1", Collections.singletonMap("k1", "v1")); EvalSingleData singleData = verifyBaseData(
meters.get("test_count1"), "test_count1", Collections.singletonMap("k1", "v1"));
Assert.assertEquals(1, singleData.getValue(), 0.0); Assert.assertEquals(1, singleData.getValue(), 0.0);
// histogram // histogram
EvalHistogramData histogramData = verifyBaseData(meters.get("test_histogram"), "test_histogram", Collections.singletonMap("k2", "v2")); EvalHistogramData histogramData = verifyBaseData(
meters.get("test_histogram"), "test_histogram", Collections.singletonMap("k2", "v2"));
Assert.assertEquals(3, histogramData.getBuckets().size()); Assert.assertEquals(3, histogramData.getBuckets().size());
Assert.assertEquals(10, histogramData.getBuckets().get(1d).longValue()); Assert.assertEquals(10, histogramData.getBuckets().get(1d).longValue());
Assert.assertEquals(15, histogramData.getBuckets().get(5d).longValue()); Assert.assertEquals(15, histogramData.getBuckets().get(5d).longValue());
...@@ -68,8 +70,11 @@ public class MeterProcessorTest extends MeterBaseTest { ...@@ -68,8 +70,11 @@ public class MeterProcessorTest extends MeterBaseTest {
public void testProcess() { public void testProcess() {
// each builder has build and send // each builder has build and send
MeterProcessService context = (MeterProcessService) Whitebox.getInternalState(processor, "processService"); MeterProcessService context = (MeterProcessService) Whitebox.getInternalState(processor, "processService");
List<MeterBuilder> builders = context.enabledBuilders().stream().map(Mockito::spy) List<MeterBuilder> builders = context.enabledBuilders()
.peek(builder -> doNothing().when(builder).buildAndSend(any(), any())).collect(Collectors.toList()); .stream()
.map(Mockito::spy)
.peek(builder -> doNothing().when(builder).buildAndSend(any(), any()))
.collect(Collectors.toList());
Whitebox.setInternalState(context, "meterBuilders", builders); Whitebox.setInternalState(context, "meterBuilders", builders);
processor.process(); processor.process();
builders.stream().forEach(b -> verify(b, times(1)).buildAndSend(any(), any())); builders.stream().forEach(b -> verify(b, times(1)).buildAndSend(any(), any()));
......
...@@ -52,11 +52,12 @@ ...@@ -52,11 +52,12 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<protobuf-java.version>3.13.0</protobuf-java.version>
<protobuf-java-util.version>3.12.4</protobuf-java-util.version>
<slf4j.version>1.7.25</slf4j.version> <slf4j.version>1.7.25</slf4j.version>
<log4j.version>2.9.0</log4j.version> <log4j.version>2.9.0</log4j.version>
<guava.version>28.1-jre</guava.version> <guava.version>28.1-jre</guava.version>
<snakeyaml.version>1.18</snakeyaml.version> <snakeyaml.version>1.18</snakeyaml.version>
<gson.version>2.8.6</gson.version>
<graphql-java-tools.version>5.2.3</graphql-java-tools.version> <graphql-java-tools.version>5.2.3</graphql-java-tools.version>
<graphql-java.version>8.0</graphql-java.version> <graphql-java.version>8.0</graphql-java.version>
<zookeeper.version>3.4.10</zookeeper.version> <zookeeper.version>3.4.10</zookeeper.version>
...@@ -95,7 +96,6 @@ ...@@ -95,7 +96,6 @@
<groovy.version>3.0.3</groovy.version> <groovy.version>3.0.3</groovy.version>
<zookeeper.image.version>3.5</zookeeper.image.version> <zookeeper.image.version>3.5</zookeeper.image.version>
<protobuf-java-util.version>3.11.4</protobuf-java-util.version>
<kafka-clients.version>2.4.1</kafka-clients.version> <kafka-clients.version>2.4.1</kafka-clients.version>
<spring-kafka-test.version>2.4.6.RELEASE</spring-kafka-test.version> <spring-kafka-test.version>2.4.6.RELEASE</spring-kafka-test.version>
</properties> </properties>
...@@ -127,6 +127,13 @@ ...@@ -127,6 +127,13 @@
<groupId>com.google.guava</groupId> <groupId>com.google.guava</groupId>
<artifactId>guava</artifactId> <artifactId>guava</artifactId>
</dependency> </dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>${bytebuddy.version}</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
<dependencyManagement> <dependencyManagement>
...@@ -271,6 +278,11 @@ ...@@ -271,6 +278,11 @@
<version>${grpc.version}</version> <version>${grpc.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>${protobuf-java.version}</version>
</dependency>
<dependency> <dependency>
<groupId>com.google.protobuf</groupId> <groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId> <artifactId>protobuf-java-util</artifactId>
......
...@@ -59,7 +59,7 @@ import static org.mockito.Mockito.verify; ...@@ -59,7 +59,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.management.*") @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
@PrepareForTest(DefaultScopeDefine.class) @PrepareForTest(DefaultScopeDefine.class)
public class NotifyHandlerTest { public class NotifyHandlerTest {
......
...@@ -48,7 +48,7 @@ import static org.mockito.Mockito.when; ...@@ -48,7 +48,7 @@ import static org.mockito.Mockito.when;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PrepareForTest(Consul.class) @PrepareForTest(Consul.class)
@PowerMockIgnore("javax.management.*") @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
public class ClusterModuleConsulProviderTest { public class ClusterModuleConsulProviderTest {
private ClusterModuleConsulProvider provider = new ClusterModuleConsulProvider(); private ClusterModuleConsulProvider provider = new ClusterModuleConsulProvider();
......
/*
* 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.skywalking.oap.server.cluster.plugin.etcd;
import java.net.URI;
import java.util.List;
import org.apache.skywalking.oap.server.core.CoreModule;
import org.apache.skywalking.oap.server.core.cluster.ClusterModule;
import org.apache.skywalking.oap.server.library.module.ModuleConfig;
import org.apache.skywalking.oap.server.library.module.ModuleStartException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
@RunWith(PowerMockRunner.class)
@PrepareForTest(EtcdUtils.class)
@PowerMockIgnore("javax.management.*")
public class ClusterModuleEtcdProviderTest {
private ClusterModuleEtcdProvider provider = new ClusterModuleEtcdProvider();
@Test
public void name() {
assertEquals("etcd", provider.name());
}
@Test
public void module() {
assertEquals(ClusterModule.class, provider.module());
}
@Test
public void createConfigBeanIfAbsent() {
ModuleConfig moduleConfig = provider.createConfigBeanIfAbsent();
assertTrue(moduleConfig instanceof ClusterModuleEtcdConfig);
}
@Test(expected = ModuleStartException.class)
public void prepareWithNonHost() throws Exception {
provider.prepare();
}
@Test
@SuppressWarnings("unchecked")
public void prepare() throws Exception {
PowerMockito.mockStatic(EtcdUtils.class);
ClusterModuleEtcdConfig etcdConfig = new ClusterModuleEtcdConfig();
etcdConfig.setHostPort("10.0.0.1:1000,10.0.0.2:1001");
Whitebox.setInternalState(provider, "config", etcdConfig);
provider.prepare();
List<URI> uris = mock(List.class);
PowerMockito.when(EtcdUtils.parse(etcdConfig)).thenReturn(uris);
ArgumentCaptor<ClusterModuleEtcdConfig> addressCaptor = ArgumentCaptor.forClass(ClusterModuleEtcdConfig.class);
PowerMockito.verifyStatic();
EtcdUtils.parse(addressCaptor.capture());
ClusterModuleEtcdConfig cfg = addressCaptor.getValue();
assertEquals(etcdConfig.getHostPort(), cfg.getHostPort());
}
@Test
public void prepareSingle() throws Exception {
PowerMockito.mockStatic(EtcdUtils.class);
ClusterModuleEtcdConfig etcdConfig = new ClusterModuleEtcdConfig();
etcdConfig.setHostPort("10.0.0.1:1000");
Whitebox.setInternalState(provider, "config", etcdConfig);
provider.prepare();
List<URI> uris = mock(List.class);
PowerMockito.when(EtcdUtils.parse(etcdConfig)).thenReturn(uris);
ArgumentCaptor<ClusterModuleEtcdConfig> addressCaptor = ArgumentCaptor.forClass(ClusterModuleEtcdConfig.class);
PowerMockito.verifyStatic();
EtcdUtils.parse(addressCaptor.capture());
ClusterModuleEtcdConfig cfg = addressCaptor.getValue();
assertEquals(etcdConfig.getHostPort(), cfg.getHostPort());
}
@Test
public void start() {
provider.start();
}
@Test
public void notifyAfterCompleted() {
provider.notifyAfterCompleted();
}
@Test
public void requiredModules() {
String[] modules = provider.requiredModules();
assertArrayEquals(new String[] {CoreModule.NAME}, modules);
}
}
/*
* 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.skywalking.oap.server.cluster.plugin.etcd;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
import mousio.etcd4j.EtcdClient;
import mousio.etcd4j.promises.EtcdResponsePromise;
import mousio.etcd4j.requests.EtcdKeyGetRequest;
import mousio.etcd4j.requests.EtcdKeyPutRequest;
import mousio.etcd4j.responses.EtcdKeysResponse;
import org.apache.skywalking.oap.server.core.cluster.RemoteInstance;
import org.apache.skywalking.oap.server.core.remote.client.Address;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(PowerMockRunner.class)
@PrepareForTest(EtcdKeysResponse.class)
@PowerMockIgnore("javax.management.*")
public class EtcdCoordinatorTest {
private ClusterModuleEtcdConfig etcdConfig = new ClusterModuleEtcdConfig();
private EtcdClient client;
private EtcdCoordinator coordinator;
private Gson gson = new Gson();
private Address remoteAddress = new Address("10.0.0.1", 1000, false);
private Address selfRemoteAddress = new Address("10.0.0.2", 1001, true);
private Address internalAddress = new Address("10.0.0.3", 1002, false);
private static final String SERVICE_NAME = "my-service";
private EtcdResponsePromise<EtcdKeysResponse> getPromise;
private EtcdResponsePromise<EtcdKeysResponse> putPromise;
private EtcdKeysResponse response;
private EtcdKeyPutRequest putRequest = mock(EtcdKeyPutRequest.class);
private EtcdKeyGetRequest getRequest = mock(EtcdKeyGetRequest.class);
private EtcdKeyPutRequest putDirRequest = mock(EtcdKeyPutRequest.class);
private EtcdResponsePromise<EtcdKeysResponse> putDirPromise;
@Mock
private List<EtcdKeysResponse.EtcdNode> list = mock(List.class);
@Before
public void setUp() throws Exception {
etcdConfig.setServiceName(SERVICE_NAME);
client = mock(EtcdClient.class);
PowerMockito.whenNew(EtcdClient.class).withAnyArguments().thenReturn(client);
client = new EtcdClient("http://10.0.0.1:1000", "http://10.0.0.2:2000");
coordinator = new EtcdCoordinator(etcdConfig, client);
putPromise = (EtcdResponsePromise<EtcdKeysResponse>) mock(EtcdResponsePromise.class);
getPromise = (EtcdResponsePromise<EtcdKeysResponse>) mock(EtcdResponsePromise.class);
putDirPromise = (EtcdResponsePromise<EtcdKeysResponse>) mock(EtcdResponsePromise.class);
PowerMockito.when(client.putDir(anyString())).thenReturn(putDirRequest);
PowerMockito.when(putDirRequest.ttl(anyInt())).thenReturn(putDirRequest);
PowerMockito.when(putDirRequest.send()).thenReturn(putDirPromise);
PowerMockito.when(client.put(anyString(), anyString())).thenReturn(putRequest);
PowerMockito.when(putRequest.ttl(anyInt())).thenReturn(putRequest);
PowerMockito.when(putRequest.send()).thenReturn(putPromise);
PowerMockito.when(client.get(anyString())).thenReturn(getRequest);
PowerMockito.when(getRequest.send()).thenReturn(getPromise);
response = PowerMockito.mock(EtcdKeysResponse.class);
response = PowerMockito.mock(EtcdKeysResponse.class);
when(putPromise.get()).thenReturn(response);
when(getPromise.get()).thenReturn(response);
when(putDirPromise.get()).thenReturn(response);
}
@Test
@SuppressWarnings("unchecked")
public void queryRemoteNodesWithNonOrEmpty() {
EtcdKeysResponse.EtcdNode node = PowerMockito.mock(EtcdKeysResponse.EtcdNode.class);
when(response.getNode()).thenReturn(node);
when(node.getValue()).thenReturn("{}");
assertEquals(0, coordinator.queryRemoteNodes().size());
assertEquals(0, coordinator.queryRemoteNodes().size());
}
@Test
public void queryRemoteNodes() {
registerSelfRemote();
EtcdKeysResponse.EtcdNode node = PowerMockito.mock(EtcdKeysResponse.EtcdNode.class);
EtcdKeysResponse.EtcdNode node1 = PowerMockito.mock(EtcdKeysResponse.EtcdNode.class);
when(response.getNode()).thenReturn(node);
list = new ArrayList<>();
List list1 = Mockito.spy(list);
list1.add(node1);
when(node.getNodes()).thenReturn(list1);
when(node1.getValue()).thenReturn("{\"serviceId\":\"my-service\",\"host\":\"10.0.0.2\",\"port\":1001}");
List<RemoteInstance> remoteInstances = coordinator.queryRemoteNodes();
assertEquals(1, remoteInstances.size());
RemoteInstance selfInstance = remoteInstances.get(0);
velidate(selfRemoteAddress, selfInstance);
}
@Test
public void registerRemote() {
registerRemote(remoteAddress);
}
@Test
public void registerSelfRemote() {
registerRemote(selfRemoteAddress);
}
@Test
public void registerRemoteUsingInternal() {
etcdConfig.setInternalComHost(internalAddress.getHost());
etcdConfig.setInternalComPort(internalAddress.getPort());
registerRemote(internalAddress);
}
private void velidate(Address originArress, RemoteInstance instance) {
Address instanceAddress = instance.getAddress();
assertEquals(originArress.getHost(), instanceAddress.getHost());
assertEquals(originArress.getPort(), instanceAddress.getPort());
}
private void registerRemote(Address address) {
coordinator.registerRemote(new RemoteInstance(address));
EtcdEndpoint endpoint = afterRegister().get(0);
verifyRegistration(address, endpoint);
}
private List<EtcdEndpoint> afterRegister() {
ArgumentCaptor<String> argumentCaptor = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<String> nameCaptor = ArgumentCaptor.forClass(String.class);
verify(client).put(nameCaptor.capture(), argumentCaptor.capture());
EtcdEndpoint endpoint = gson.fromJson(argumentCaptor.getValue(), EtcdEndpoint.class);
List<EtcdEndpoint> list = new ArrayList<>();
list.add(endpoint);
return list;
}
private void verifyRegistration(Address remoteAddress, EtcdEndpoint endpoint) {
assertNotNull(endpoint);
assertEquals(SERVICE_NAME, endpoint.getServiceName());
assertEquals(remoteAddress.getHost(), endpoint.getHost());
assertEquals(remoteAddress.getPort(), endpoint.getPort());
}
}
...@@ -31,7 +31,7 @@ import static org.junit.Assert.assertEquals; ...@@ -31,7 +31,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.management.*") @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
public class ClusterModuleKubernetesProviderTest { public class ClusterModuleKubernetesProviderTest {
private ClusterModuleKubernetesProvider provider = new ClusterModuleKubernetesProvider(); private ClusterModuleKubernetesProvider provider = new ClusterModuleKubernetesProvider();
......
...@@ -46,7 +46,7 @@ import org.powermock.reflect.Whitebox; ...@@ -46,7 +46,7 @@ import org.powermock.reflect.Whitebox;
import static org.powermock.api.mockito.PowerMockito.when; import static org.powermock.api.mockito.PowerMockito.when;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.management.*") @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
@PrepareForTest({NamespacedPodListInformer.class}) @PrepareForTest({NamespacedPodListInformer.class})
public class KubernetesCoordinatorTest { public class KubernetesCoordinatorTest {
......
/*
* 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.skywalking.oap.server.cluster.plugin.nacos;
import com.alibaba.nacos.api.PropertyKeyConst;
import com.alibaba.nacos.api.naming.NamingFactory;
import com.alibaba.nacos.api.naming.NamingService;
import java.util.Properties;
import org.apache.skywalking.oap.server.core.CoreModule;
import org.apache.skywalking.oap.server.core.cluster.ClusterModule;
import org.apache.skywalking.oap.server.library.module.ModuleConfig;
import org.apache.skywalking.oap.server.library.module.ModuleStartException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
@RunWith(PowerMockRunner.class)
@PrepareForTest(NamingFactory.class)
@PowerMockIgnore("javax.management.*")
public class ClusterModuleNacosProviderTest {
private static final String SERVICE_NAME = "test-service_name";
private ClusterModuleNacosProvider provider = new ClusterModuleNacosProvider();
@Test
public void name() {
assertEquals("nacos", provider.name());
}
@Test
public void module() {
assertEquals(ClusterModule.class, provider.module());
}
@Test
public void createConfigBeanIfAbsent() {
ModuleConfig moduleConfig = provider.createConfigBeanIfAbsent();
assertTrue(moduleConfig instanceof ClusterModuleNacosConfig);
}
@Test(expected = ModuleStartException.class)
public void prepareWithNonHost() throws Exception {
provider.prepare();
}
@Test
public void prepare() throws Exception {
PowerMockito.mockStatic(NamingFactory.class);
ClusterModuleNacosConfig nacosConfig = new ClusterModuleNacosConfig();
nacosConfig.setHostPort("10.0.0.1:1000,10.0.0.2:1001");
nacosConfig.setServiceName(SERVICE_NAME);
Whitebox.setInternalState(provider, "config", nacosConfig);
NamingService namingService = mock(NamingService.class);
Properties properties = new Properties();
properties.put(PropertyKeyConst.SERVER_ADDR, "10.0.0.1:1000,10.0.0.2:1001");
PowerMockito.when(NamingFactory.createNamingService(properties)).thenReturn(namingService);
provider.prepare();
ArgumentCaptor<Properties> addressCaptor = ArgumentCaptor.forClass(Properties.class);
PowerMockito.verifyStatic();
NamingFactory.createNamingService(addressCaptor.capture());
Properties data = addressCaptor.getValue();
assertEquals("10.0.0.1:1000,10.0.0.2:1001", data.getProperty(PropertyKeyConst.SERVER_ADDR));
}
@Test
public void start() {
provider.start();
}
@Test
public void notifyAfterCompleted() {
provider.notifyAfterCompleted();
}
@Test
public void requiredModules() {
String[] modules = provider.requiredModules();
assertArrayEquals(new String[] {CoreModule.NAME}, modules);
}
}
...@@ -21,7 +21,6 @@ package org.apache.skywalking.oap.server.configuration.consul; ...@@ -21,7 +21,6 @@ package org.apache.skywalking.oap.server.configuration.consul;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.google.common.io.BaseEncoding; import com.google.common.io.BaseEncoding;
import com.orbitz.consul.KeyValueClient;
import com.orbitz.consul.cache.ConsulCache; import com.orbitz.consul.cache.ConsulCache;
import com.orbitz.consul.cache.KVCache; import com.orbitz.consul.cache.KVCache;
import com.orbitz.consul.model.kv.ImmutableValue; import com.orbitz.consul.model.kv.ImmutableValue;
...@@ -35,6 +34,7 @@ import org.mockito.ArgumentCaptor; ...@@ -35,6 +34,7 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.powermock.api.mockito.PowerMockito; import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox; import org.powermock.reflect.Whitebox;
...@@ -48,6 +48,13 @@ import static org.mockito.Mockito.when; ...@@ -48,6 +48,13 @@ import static org.mockito.Mockito.when;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PrepareForTest(KVCache.class) @PrepareForTest(KVCache.class)
@PowerMockIgnore({
"com.sun.org.apache.xerces.*",
"javax.xml.*",
"org.xml.*",
"javax.management.*",
"org.w3c.*"
})
@SuppressWarnings({ @SuppressWarnings({
"unchecked", "unchecked",
"OptionalGetWithoutIsPresent" "OptionalGetWithoutIsPresent"
...@@ -77,8 +84,8 @@ public class ConsulConfigurationWatcherRegisterTest { ...@@ -77,8 +84,8 @@ public class ConsulConfigurationWatcherRegisterTest {
ArgumentCaptor<ConsulCache.Listener> listener2 = ArgumentCaptor.forClass(ConsulCache.Listener.class); ArgumentCaptor<ConsulCache.Listener> listener2 = ArgumentCaptor.forClass(ConsulCache.Listener.class);
PowerMockito.mockStatic(KVCache.class); PowerMockito.mockStatic(KVCache.class);
PowerMockito.when(KVCache.newCache(any(KeyValueClient.class), eq("key1"))).thenReturn(cache1); PowerMockito.when(KVCache.newCache(any(), eq("key1"))).thenReturn(cache1);
PowerMockito.when(KVCache.newCache(any(KeyValueClient.class), eq("key2"))).thenReturn(cache2); PowerMockito.when(KVCache.newCache(any(), eq("key2"))).thenReturn(cache2);
when(register.readConfig(any(Set.class))).thenCallRealMethod(); when(register.readConfig(any(Set.class))).thenCallRealMethod();
...@@ -128,8 +135,8 @@ public class ConsulConfigurationWatcherRegisterTest { ...@@ -128,8 +135,8 @@ public class ConsulConfigurationWatcherRegisterTest {
ArgumentCaptor<ConsulCache.Listener> listener2 = ArgumentCaptor.forClass(ConsulCache.Listener.class); ArgumentCaptor<ConsulCache.Listener> listener2 = ArgumentCaptor.forClass(ConsulCache.Listener.class);
PowerMockito.mockStatic(KVCache.class); PowerMockito.mockStatic(KVCache.class);
PowerMockito.when(KVCache.newCache(any(KeyValueClient.class), eq("key1"))).thenReturn(cache1); PowerMockito.when(KVCache.newCache(any(), eq("key1"))).thenReturn(cache1);
PowerMockito.when(KVCache.newCache(any(KeyValueClient.class), eq("key2"))).thenReturn(cache2); PowerMockito.when(KVCache.newCache(any(), eq("key2"))).thenReturn(cache2);
when(register.readConfig(any(Set.class))).thenCallRealMethod(); when(register.readConfig(any(Set.class))).thenCallRealMethod();
......
...@@ -69,6 +69,19 @@ ...@@ -69,6 +69,19 @@
</dependency> </dependency>
</dependencies> </dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${compiler.version}</source>
<target>${compiler.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
<profiles> <profiles>
<profile> <profile>
<id>CI-with-IT</id> <id>CI-with-IT</id>
......
/*
* 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.skywalking.oap.server.configuration.etcd;
import com.google.common.collect.Sets;
import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import mousio.client.promises.ResponsePromise;
import mousio.etcd4j.EtcdClient;
import mousio.etcd4j.promises.EtcdResponsePromise;
import mousio.etcd4j.requests.EtcdKeyGetRequest;
import mousio.etcd4j.responses.EtcdKeysResponse;
import org.apache.skywalking.oap.server.configuration.api.ConfigTable;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import static junit.framework.TestCase.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.spy;
import static org.powermock.api.mockito.PowerMockito.mock;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.when;
import static org.powermock.api.mockito.PowerMockito.whenNew;
@RunWith(PowerMockRunner.class)
@PrepareForTest({
EtcdKeysResponse.class,
EtcdUtils.class,
EtcdClient.class,
URI.class
})
@PowerMockIgnore({"javax.management.*"})
public class EtcdConfigWatcherRegisterTest {
@Before
@Test
public void shouldReadConfigs() throws Exception {
final String group = "skywalking";
final String testKey1 = "receiver-trace.default.slowDBAccessThreshold";
final String testVal1 = "test";
final String testKey2 = "testKey";
final String testVal2 = "testVal";
final EtcdServerSettings mockSettings = mock(EtcdServerSettings.class);
when(mockSettings.getGroup()).thenReturn(group);
mockStatic(EtcdUtils.class);
List<URI> uris = mock(List.class);
when(EtcdUtils.parse(any())).thenReturn(uris);
final EtcdClient client = PowerMockito.mock(EtcdClient.class);
whenNew(EtcdClient.class).withAnyArguments().thenReturn(client);
String port = System.getProperty("etcd.port");
URI uri = new URI("http://localhost:" + port);
List<URI> urisArray = spy(ArrayList.class);
urisArray.add(uri);
URI[] array = urisArray.toArray(new URI[] {});
when(uris.toArray(new URI[] {})).thenReturn(array);
final EtcdConfigWatcherRegister mockRegister = spy(new EtcdConfigWatcherRegister(mockSettings));
Whitebox.setInternalState(mockRegister, "client", client);
Whitebox.setInternalState(mockRegister, "settings", mockSettings);
final EtcdKeysResponse response = PowerMockito.mock(EtcdKeysResponse.class);
final EtcdKeysResponse response1 = PowerMockito.mock(EtcdKeysResponse.class);
final EtcdKeyGetRequest request = PowerMockito.mock(EtcdKeyGetRequest.class);
when(client.get("/skywalking/receiver-trace.default.slowDBAccessThreshold")).thenReturn(request);
when(request.waitForChange()).thenReturn(request);
final EtcdResponsePromise<EtcdKeysResponse> promise = mock(EtcdResponsePromise.class);
final ResponsePromise<EtcdKeysResponse> responseResponsePromise = mock(ResponsePromise.class);
when(request.send()).thenReturn(promise);
when(promise.get()).thenReturn(response);
when(responseResponsePromise.get()).thenReturn(response);
final EtcdKeysResponse.EtcdNode node = mock(EtcdKeysResponse.EtcdNode.class);
when(response.getNode()).thenReturn(node);
when(node.getKey()).thenReturn("/skywalking/receiver-trace.default.slowDBAccessThreshold");
when(node.getValue()).thenReturn("test");
final EtcdKeyGetRequest request1 = mock(EtcdKeyGetRequest.class);
when(client.get("/skywalking/testKey")).thenReturn(request1);
when(request1.waitForChange()).thenReturn(request1);
final EtcdResponsePromise<EtcdKeysResponse> promise1 = mock(EtcdResponsePromise.class);
final ResponsePromise<EtcdKeysResponse> responseResponsePromise1 = mock(ResponsePromise.class);
when(request1.send()).thenReturn(promise1);
when(promise1.get()).thenReturn(response1);
when(responseResponsePromise1.get()).thenReturn(response1);
final EtcdKeysResponse.EtcdNode node1 = mock(EtcdKeysResponse.EtcdNode.class);
when(response1.getNode()).thenReturn(node1);
when(node1.getKey()).thenReturn("/skywalking/testKey");
when(node1.getValue()).thenReturn("testVal");
final ConfigTable configTable = mockRegister.readConfig(Sets.newHashSet(testKey1, testKey2)).get();
assertEquals(2, configTable.getItems().size());
Map<String, String> kvs = new HashMap<>();
for (ConfigTable.ConfigItem item : configTable.getItems()) {
kvs.put(item.getName(), item.getValue());
}
assertEquals(testVal1, kvs.get(testKey1));
assertEquals(testVal2, kvs.get(testKey2));
}
}
...@@ -39,7 +39,7 @@ import org.powermock.modules.junit4.PowerMockRunner; ...@@ -39,7 +39,7 @@ import org.powermock.modules.junit4.PowerMockRunner;
import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.Yaml;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.management.*") @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
@PrepareForTest({ConfigurationConfigmapInformer.class}) @PrepareForTest({ConfigurationConfigmapInformer.class})
public class ConfigmapConfigWatcherRegisterTest { public class ConfigmapConfigWatcherRegisterTest {
......
...@@ -28,7 +28,7 @@ import static org.junit.Assert.assertEquals; ...@@ -28,7 +28,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.management.*") @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
public class ConfigmapConfigurationProviderTest { public class ConfigmapConfigurationProviderTest {
private final ConfigmapConfigurationProvider provider = new ConfigmapConfigurationProvider(); private final ConfigmapConfigurationProvider provider = new ConfigmapConfigurationProvider();
......
...@@ -56,8 +56,8 @@ public class TimeBucketTest { ...@@ -56,8 +56,8 @@ public class TimeBucketTest {
DownSampling.Day, DownSampling.Day,
DAYS, DAYS,
MILLISECONDS.toDays(NOW) MILLISECONDS.toDays(NOW)
}, }
}; };
} }
private DownSampling downSampling; private DownSampling downSampling;
......
...@@ -35,11 +35,13 @@ import org.junit.BeforeClass; ...@@ -35,11 +35,13 @@ import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito; import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PrepareForTest({DefaultScopeDefine.class}) @PrepareForTest({DefaultScopeDefine.class})
@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
public class StorageModelsTest { public class StorageModelsTest {
@BeforeClass @BeforeClass
public static void setup() { public static void setup() {
......
...@@ -17,7 +17,8 @@ ...@@ -17,7 +17,8 @@
~ ~
--> -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<artifactId>server-library</artifactId> <artifactId>server-library</artifactId>
<groupId>org.apache.skywalking</groupId> <groupId>org.apache.skywalking</groupId>
...@@ -30,7 +31,6 @@ ...@@ -30,7 +31,6 @@
<properties> <properties>
<ststem-rules.version>1.18.0</ststem-rules.version> <ststem-rules.version>1.18.0</ststem-rules.version>
<protobuf-java.version>3.11.4</protobuf-java.version>
</properties> </properties>
<dependencies> <dependencies>
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<dependency> <dependency>
<groupId>com.google.protobuf</groupId> <groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId> <artifactId>protobuf-java</artifactId>
<version>${protobuf-java.version}</version>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -46,10 +46,14 @@ ...@@ -46,10 +46,14 @@
<dependency> <dependency>
<groupId>com.google.protobuf</groupId> <groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId> <artifactId>protobuf-java-util</artifactId>
<version>3.5.1</version> <version>${protobuf-java-util.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <!-- necessary for Java 9+ -->
<groupId>org.apache.tomcat</groupId>
<artifactId>annotations-api</artifactId>
<version>${org.apache.tomcat.annotations-api.version}</version>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
...@@ -36,14 +36,14 @@ import org.junit.Test; ...@@ -36,14 +36,14 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.internal.util.reflection.Whitebox;
import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PowerMockIgnore({"javax.management.*"}) @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
public class BrowserReportServletHandlerTest { public class BrowserReportServletHandlerTest {
@Mock @Mock
private HttpServletRequest request; private HttpServletRequest request;
......
...@@ -40,14 +40,14 @@ import org.junit.Test; ...@@ -40,14 +40,14 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.internal.util.reflection.Whitebox;
import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PowerMockIgnore({"javax.management.*"}) @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
public class TraceSegmentReportServletHandlerTest { public class TraceSegmentReportServletHandlerTest {
@Mock @Mock
...@@ -71,7 +71,7 @@ public class TraceSegmentReportServletHandlerTest { ...@@ -71,7 +71,7 @@ public class TraceSegmentReportServletHandlerTest {
Mockito.when(moduleManager.find(AnalyzerModule.NAME)).thenReturn(analyzerModule); Mockito.when(moduleManager.find(AnalyzerModule.NAME)).thenReturn(analyzerModule);
Mockito.when(telemetryProvider.getService(MetricsCreator.class)) Mockito.when(telemetryProvider.getService(MetricsCreator.class))
.thenReturn(new MetricsCreatorNoop()); .thenReturn(new MetricsCreatorNoop());
when(analyzerModuleProvider.getService(ISegmentParserService.class)) when(analyzerModuleProvider.getService(ISegmentParserService.class))
.thenReturn(new SegmentParserServiceImpl(moduleManager, new AnalyzerModuleConfig())); .thenReturn(new SegmentParserServiceImpl(moduleManager, new AnalyzerModuleConfig()));
......
...@@ -46,8 +46,8 @@ import org.junit.Test; ...@@ -46,8 +46,8 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.internal.util.reflection.Whitebox;
import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.Yaml;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
......
...@@ -182,19 +182,25 @@ ...@@ -182,19 +182,25 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<compiler.version>1.8</compiler.version> <compiler.version>1.8</compiler.version>
<powermock.version>1.6.4</powermock.version> <powermock.version>2.0.7</powermock.version>
<checkstyle.version>6.18</checkstyle.version> <checkstyle.version>6.18</checkstyle.version>
<junit.version>4.12</junit.version> <junit.version>4.12</junit.version>
<mockito-all.version>1.10.19</mockito-all.version> <mockito-core.version>3.5.13</mockito-core.version>
<lombok.version>1.18.10</lombok.version> <lombok.version>1.18.10</lombok.version>
<!-- core lib dependency --> <!-- core lib dependency -->
<grpc.version>1.26.0</grpc.version> <bytebuddy.version>1.10.16</bytebuddy.version>
<grpc.version>1.32.1</grpc.version>
<gson.version>2.8.6</gson.version>
<os-maven-plugin.version>1.6.2</os-maven-plugin.version> <os-maven-plugin.version>1.6.2</os-maven-plugin.version>
<protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version> <protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version>
<com.google.protobuf.protoc.version>3.3.0</com.google.protobuf.protoc.version> <com.google.protobuf.protoc.version>3.12.0</com.google.protobuf.protoc.version>
<protoc-gen-grpc-java.plugin.version>1.8.0</protoc-gen-grpc-java.plugin.version> <protoc-gen-grpc-java.plugin.version>1.32.1</protoc-gen-grpc-java.plugin.version>
<netty-tcnative-boringssl-static.version>2.0.26.Final</netty-tcnative-boringssl-static.version> <netty-tcnative-boringssl-static.version>2.0.26.Final</netty-tcnative-boringssl-static.version>
<javax.annotation-api.version>1.3.2</javax.annotation-api.version>
<objenesis.version>3.1</objenesis.version>
<!-- necessary for Java 9+ -->
<org.apache.tomcat.annotations-api.version>6.0.53</org.apache.tomcat.annotations-api.version>
<!-- Plugin versions --> <!-- Plugin versions -->
<docker.plugin.version>0.4.13</docker.plugin.version> <docker.plugin.version>0.4.13</docker.plugin.version>
...@@ -219,7 +225,6 @@ ...@@ -219,7 +225,6 @@
<gmaven-plugin.version>1.5</gmaven-plugin.version> <gmaven-plugin.version>1.5</gmaven-plugin.version>
<cobertura-maven-plugin.version>2.7</cobertura-maven-plugin.version> <cobertura-maven-plugin.version>2.7</cobertura-maven-plugin.version>
<checkstyle.fails.on.error>true</checkstyle.fails.on.error> <checkstyle.fails.on.error>true</checkstyle.fails.on.error>
<javax.annotation-api.version>1.3.2</javax.annotation-api.version>
</properties> </properties>
<dependencies> <dependencies>
...@@ -229,18 +234,23 @@ ...@@ -229,18 +234,23 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.mockito</groupId> <groupId>org.powermock</groupId>
<artifactId>mockito-all</artifactId> <artifactId>powermock-module-junit4</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.powermock</groupId> <groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId> <artifactId>powermock-api-mockito2</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.powermock</groupId> <groupId>net.bytebuddy</groupId>
<artifactId>powermock-api-mockito</artifactId> <artifactId>byte-buddy-agent</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
...@@ -275,8 +285,8 @@ ...@@ -275,8 +285,8 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.mockito</groupId> <groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId> <artifactId>mockito-core</artifactId>
<version>${mockito-all.version}</version> <version>${mockito-core.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
...@@ -287,10 +297,22 @@ ...@@ -287,10 +297,22 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.powermock</groupId> <groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId> <artifactId>powermock-api-mockito2</artifactId>
<version>${powermock.version}</version> <version>${powermock.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
<version>${bytebuddy.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
<version>${objenesis.version}</version>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.openjdk.jmh</groupId> <groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId> <artifactId>jmh-generator-annprocess</artifactId>
......
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<compiler.version>1.8</compiler.version>
<spring-boot-version>2.1.6.RELEASE</spring-boot-version> <spring-boot-version>2.1.6.RELEASE</spring-boot-version>
<test.framework.version>2.8.5</test.framework.version> <test.framework.version>2.8.5</test.framework.version>
<docker.image.version>${test.framework.version}</docker.image.version> <docker.image.version>${test.framework.version}</docker.image.version>
......
...@@ -29,8 +29,6 @@ ...@@ -29,8 +29,6 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<compiler.version>1.8</compiler.version>
<test.framework.version>1.4.20</test.framework.version> <test.framework.version>1.4.20</test.framework.version>
<spring-boot-version>2.1.6.RELEASE</spring-boot-version> <spring-boot-version>2.1.6.RELEASE</spring-boot-version>
</properties> </properties>
......
...@@ -44,13 +44,13 @@ freemarker-2.3.28.jar ...@@ -44,13 +44,13 @@ freemarker-2.3.28.jar
graphql-java-8.0.jar graphql-java-8.0.jar
graphql-java-tools-5.2.3.jar graphql-java-tools-5.2.3.jar
groovy-3.0.3.jar groovy-3.0.3.jar
grpc-api-1.26.0.jar grpc-api-1.32.1.jar
grpc-context-1.26.0.jar grpc-context-1.32.1.jar
grpc-core-1.26.0.jar grpc-core-1.32.1.jar
grpc-netty-1.26.0.jar grpc-netty-1.32.1.jar
grpc-protobuf-1.26.0.jar grpc-protobuf-1.32.1.jar
grpc-protobuf-lite-1.26.0.jar grpc-protobuf-lite-1.32.1.jar
grpc-stub-1.26.0.jar grpc-stub-1.32.1.jar
gson-2.8.6.jar gson-2.8.6.jar
gson-fire-1.8.3.jar gson-fire-1.8.3.jar
guava-28.1-jre.jar guava-28.1-jre.jar
...@@ -131,24 +131,22 @@ netty-buffer-4.1.42.Final.jar ...@@ -131,24 +131,22 @@ netty-buffer-4.1.42.Final.jar
netty-codec-4.1.42.Final.jar netty-codec-4.1.42.Final.jar
netty-codec-dns-4.1.42.Final.jar netty-codec-dns-4.1.42.Final.jar
netty-codec-http-4.1.42.Final.jar netty-codec-http-4.1.42.Final.jar
netty-codec-http2-4.1.42.Final.jar netty-codec-http2-4.1.51.Final.jar
netty-codec-socks-4.1.42.Final.jar netty-codec-socks-4.1.51.Final.jar
netty-common-4.1.42.Final.jar netty-common-4.1.42.Final.jar
netty-handler-4.1.42.Final.jar netty-handler-4.1.42.Final.jar
netty-handler-proxy-4.1.42.Final.jar netty-handler-proxy-4.1.51.Final.jar
netty-resolver-4.1.42.Final.jar netty-resolver-4.1.42.Final.jar
netty-resolver-dns-4.1.42.Final.jar netty-resolver-dns-4.1.42.Final.jar
netty-tcnative-boringssl-static-2.0.26.Final.jar netty-tcnative-boringssl-static-2.0.26.Final.jar
netty-transport-4.1.42.Final.jar netty-transport-4.1.42.Final.jar
okhttp-3.9.0.jar okhttp-3.9.0.jar
okio-1.13.0.jar okio-1.13.0.jar
opencensus-api-0.24.0.jar
opencensus-contrib-grpc-metrics-0.24.0.jar
parent-join-client-7.0.0.jar parent-join-client-7.0.0.jar
perfmark-api-0.19.0.jar perfmark-api-0.19.0.jar
proto-google-common-protos-1.12.0.jar proto-google-common-protos-1.17.0.jar
protobuf-java-3.11.4.jar protobuf-java-3.13.0.jar
protobuf-java-util-3.11.4.jar protobuf-java-util-3.12.4.jar
rank-eval-client-7.0.0.jar rank-eval-client-7.0.0.jar
reactive-streams-1.0.2.jar reactive-streams-1.0.2.jar
reflectasm-1.11.7.jar reflectasm-1.11.7.jar
......
...@@ -45,13 +45,13 @@ freemarker-2.3.28.jar ...@@ -45,13 +45,13 @@ freemarker-2.3.28.jar
graphql-java-8.0.jar graphql-java-8.0.jar
graphql-java-tools-5.2.3.jar graphql-java-tools-5.2.3.jar
groovy-3.0.3.jar groovy-3.0.3.jar
grpc-api-1.26.0.jar grpc-api-1.32.1.jar
grpc-context-1.26.0.jar grpc-context-1.32.1.jar
grpc-core-1.26.0.jar grpc-core-1.32.1.jar
grpc-netty-1.26.0.jar grpc-netty-1.32.1.jar
grpc-protobuf-1.26.0.jar grpc-protobuf-1.32.1.jar
grpc-protobuf-lite-1.26.0.jar grpc-protobuf-lite-1.32.1.jar
grpc-stub-1.26.0.jar grpc-stub-1.32.1.jar
gson-2.8.6.jar gson-2.8.6.jar
gson-fire-1.8.3.jar gson-fire-1.8.3.jar
guava-28.1-jre.jar guava-28.1-jre.jar
...@@ -129,24 +129,22 @@ netty-buffer-4.1.42.Final.jar ...@@ -129,24 +129,22 @@ netty-buffer-4.1.42.Final.jar
netty-codec-4.1.42.Final.jar netty-codec-4.1.42.Final.jar
netty-codec-dns-4.1.42.Final.jar netty-codec-dns-4.1.42.Final.jar
netty-codec-http-4.1.42.Final.jar netty-codec-http-4.1.42.Final.jar
netty-codec-http2-4.1.42.Final.jar netty-codec-http2-4.1.51.Final.jar
netty-codec-socks-4.1.42.Final.jar netty-codec-socks-4.1.51.Final.jar
netty-common-4.1.42.Final.jar netty-common-4.1.42.Final.jar
netty-handler-4.1.42.Final.jar netty-handler-4.1.42.Final.jar
netty-handler-proxy-4.1.42.Final.jar netty-handler-proxy-4.1.51.Final.jar
netty-resolver-4.1.42.Final.jar netty-resolver-4.1.42.Final.jar
netty-resolver-dns-4.1.42.Final.jar netty-resolver-dns-4.1.42.Final.jar
netty-tcnative-boringssl-static-2.0.26.Final.jar netty-tcnative-boringssl-static-2.0.26.Final.jar
netty-transport-4.1.42.Final.jar netty-transport-4.1.42.Final.jar
okhttp-3.9.0.jar okhttp-3.9.0.jar
okio-1.13.0.jar okio-1.13.0.jar
opencensus-api-0.24.0.jar
opencensus-contrib-grpc-metrics-0.24.0.jar
parent-join-client-6.3.2.jar parent-join-client-6.3.2.jar
perfmark-api-0.19.0.jar perfmark-api-0.19.0.jar
proto-google-common-protos-1.12.0.jar proto-google-common-protos-1.17.0.jar
protobuf-java-3.11.4.jar protobuf-java-3.13.0.jar
protobuf-java-util-3.11.4.jar protobuf-java-util-3.12.4.jar
rank-eval-client-6.3.2.jar rank-eval-client-6.3.2.jar
reactive-streams-1.0.2.jar reactive-streams-1.0.2.jar
reflectasm-1.11.7.jar reflectasm-1.11.7.jar
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册