From 1a6ec531ce0c61010538d7a26b75c7ba736801e6 Mon Sep 17 00:00:00 2001 From: ascrutae Date: Mon, 13 Jun 2016 22:17:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B8=85=E7=90=86ContextPool?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E6=B3=95=EF=BC=8C=E6=96=B9=E4=BE=BF=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redis-test/doc/HOW_TO_RUN_REDIS_TEST.md | 7 ++----- .../agent/test/RedisClusterPluginTest.java | 11 +++++++++-- .../agent/test/RedisPluginTest.java | 7 ++++++- ...Acquirer.java => ContextPoolOperator.java} | 19 +++++++++++++++---- .../testframework/api/TraceTreeAssert.java | 6 +++++- 5 files changed, 37 insertions(+), 13 deletions(-) rename test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/{TraceTreeDataAcquirer.java => ContextPoolOperator.java} (81%) diff --git a/test/skywalking-agent-test/redis-test/doc/HOW_TO_RUN_REDIS_TEST.md b/test/skywalking-agent-test/redis-test/doc/HOW_TO_RUN_REDIS_TEST.md index a9c0ef581..28e70a741 100644 --- a/test/skywalking-agent-test/redis-test/doc/HOW_TO_RUN_REDIS_TEST.md +++ b/test/skywalking-agent-test/redis-test/doc/HOW_TO_RUN_REDIS_TEST.md @@ -45,11 +45,8 @@ redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 1 ``` ## 启动测试 Run test case -启动测试用例时,VM参数中需要添加以下的vm参数。**注意**:由于buffer在JVM是独一份,为了避免测试结果不一致,测试类不能一起测试, -只能单独运行测试方法,测试中的环境参数可能跟随机器变化,所以可能需要进行修改。 -When you start the test case, VM parameters need to add the following parameters vm. **Notice** -Because the buffer is the only one in JVM , in order to avoid inconsistent results, test class can not be tested together, -Can only run a single test method, the test environment parameters may change following the machine, it may need to be modified. +启动测试用例时,VM参数中需要添加以下的vm参数。**注意**:测试中的环境参数可能跟随机器变化,所以可能需要进行修改。 +When you start the test case, VM parameters need to add the following parameters vm. **Notice** :The test environment parameters may change following the machine, it may need to be modified. ``` -javaagent:${SKYWALKING_AGENT_TEST_PROJECT_PATH}/lib/skywalking-agent-1.0-Final.jar ``` \ No newline at end of file diff --git a/test/skywalking-agent-test/redis-test/src/main/java/com/ai/cloud/skywalking/agent/test/RedisClusterPluginTest.java b/test/skywalking-agent-test/redis-test/src/main/java/com/ai/cloud/skywalking/agent/test/RedisClusterPluginTest.java index d54f17277..dd12db848 100644 --- a/test/skywalking-agent-test/redis-test/src/main/java/com/ai/cloud/skywalking/agent/test/RedisClusterPluginTest.java +++ b/test/skywalking-agent-test/redis-test/src/main/java/com/ai/cloud/skywalking/agent/test/RedisClusterPluginTest.java @@ -1,17 +1,24 @@ package com.ai.cloud.skywalking.agent.test; import com.ai.skywalking.testframework.api.TraceTreeAssert; +import org.junit.After; import org.junit.Test; public class RedisClusterPluginTest { + @After + public void clearData(){ + TraceTreeAssert.clearTraceData(); + } + + @Test public void testSetData() { RedisClusterOperator.setData("key1", "value1"); TraceTreeAssert.assertEquals(new String[][]{ // 根据实际情况进行修改 {"0.0", "127.0.0.1:7001 set", "key=key1"}, - {"0", "127.0.0.1:7002;127.0.0.1:7001;127.0.0.1:7000;127.0.0.1:7005;127.0.0.1:7004;127.0.0.1:7003; set", "key=key1"}, + {"0", "127.0.0.1:7001;127.0.0.1:7000; set", "key=key1"}, }); } @@ -22,7 +29,7 @@ public class RedisClusterPluginTest { TraceTreeAssert.assertEquals(new String[][]{ // 根据实际情况进行修改 {"0.0", "127.0.0.1:7001 get", "key=key1"}, - {"0", "127.0.0.1:7002;127.0.0.1:7001;127.0.0.1:7000;127.0.0.1:7005;127.0.0.1:7004;127.0.0.1:7003; get", "key=key1"}, + {"0", "127.0.0.1:7001;127.0.0.1:7000; get", "key=key1"}, }); } diff --git a/test/skywalking-agent-test/redis-test/src/main/java/com/ai/cloud/skywalking/agent/test/RedisPluginTest.java b/test/skywalking-agent-test/redis-test/src/main/java/com/ai/cloud/skywalking/agent/test/RedisPluginTest.java index 67e090779..485872734 100644 --- a/test/skywalking-agent-test/redis-test/src/main/java/com/ai/cloud/skywalking/agent/test/RedisPluginTest.java +++ b/test/skywalking-agent-test/redis-test/src/main/java/com/ai/cloud/skywalking/agent/test/RedisPluginTest.java @@ -1,17 +1,22 @@ package com.ai.cloud.skywalking.agent.test; import com.ai.skywalking.testframework.api.TraceTreeAssert; +import org.junit.After; import org.junit.Test; public class RedisPluginTest { + @After + public void clearData(){ + TraceTreeAssert.clearTraceData(); + } + @Test public void testSetData() { RedisOperator.setData("key1", "value1"); TraceTreeAssert.assertEquals(new String[][]{ {"0", "127.0.0.1:6379 set", "key=key1"}, }); - } @Test diff --git a/test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/TraceTreeDataAcquirer.java b/test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/ContextPoolOperator.java similarity index 81% rename from test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/TraceTreeDataAcquirer.java rename to test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/ContextPoolOperator.java index df57c1d64..09ef12f49 100644 --- a/test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/TraceTreeDataAcquirer.java +++ b/test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/ContextPoolOperator.java @@ -7,8 +7,8 @@ import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; -public class TraceTreeDataAcquirer { - public static List acquireCurrentTraceSpanData() { +public class ContextPoolOperator { + public static List acquireSpanData() { List resultSpan = new ArrayList(); Object[] bufferGroupObjectArray = acquireBufferGroupObjectArrayByClassLoader(); @@ -24,6 +24,17 @@ public class TraceTreeDataAcquirer { return resultSpan; } + public static void clearSpanData() { + Object[] bufferGroupObjectArray = acquireBufferGroupObjectArrayByClassLoader(); + + for (Object bufferGroup : bufferGroupObjectArray) { + Span[] spanList = acquireSpanData(bufferGroup); + for (int i = 0; i < spanList.length; i++) { + spanList[i] = null; + } + } + } + private static Span[] acquireSpanData(Object bufferGroup) { try { Class bufferGroupClass = Thread.currentThread().getContextClassLoader() @@ -32,7 +43,7 @@ public class TraceTreeDataAcquirer { spanArrayField.setAccessible(true); return (Span[]) spanArrayField.get(bufferGroup); } catch (Exception e) { - throw new RuntimeException("Failed to acquire span array",e); + throw new RuntimeException("Failed to acquire span array", e); } } @@ -43,7 +54,7 @@ public class TraceTreeDataAcquirer { Field field = fetchBufferPoolObject(bufferPoolClass); return (Object[]) field.get(bufferPoolClass); } catch (Exception e) { - throw new RuntimeException("Failed to acquire buffer group object array",e); + throw new RuntimeException("Failed to acquire buffer group object array", e); } } diff --git a/test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/TraceTreeAssert.java b/test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/TraceTreeAssert.java index 7965c9d5f..f294982b2 100644 --- a/test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/TraceTreeAssert.java +++ b/test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/TraceTreeAssert.java @@ -12,7 +12,7 @@ import java.util.List; public class TraceTreeAssert { public static void assertEquals(String[][] expectedTraceTree) { - List spanDataInBuffer = TraceTreeDataAcquirer.acquireCurrentTraceSpanData(); + List spanDataInBuffer = ContextPoolOperator.acquireSpanData(); validateTraceId(spanDataInBuffer); @@ -25,6 +25,10 @@ public class TraceTreeAssert { validateSpanData(expectedSpanData, assertSpanData); } + public static void clearTraceData() { + ContextPoolOperator.clearSpanData(); + } + private static List convertSpanDataToCompareStr(List assertSpanData) { List resultSpanData = new ArrayList(); for (Span span : assertSpanData) {