You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2021/03/22 12:26:00 UTC

[skywalking] branch master updated: Add go2sky correlation context E2E test (#6590)

This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new fdab7f0  Add go2sky correlation context E2E test (#6590)
fdab7f0 is described below

commit fdab7f06a11b9ce45ac0d9ba31061fc16bda2921
Author: mrproliu <74...@qq.com>
AuthorDate: Mon Mar 22 20:25:37 2021 +0800

    Add go2sky correlation context E2E test (#6590)
---
 test/e2e/e2e-service-consumer/pom.xml                |  8 ++++++++
 .../skywalking/e2e/controller/UserController.java    | 20 ++++++++++++++++----
 .../skywalking/e2e/controller/UserController.java    | 10 ++++++++++
 test/e2e/e2e-test/docker/go/Dockerfile.go            |  2 +-
 test/e2e/e2e-test/docker/go/docker-compose.yml       |  2 +-
 .../test/java/org/apache/skywalking/e2e/GOE2E.java   | 18 ++++++++++++++++--
 .../resources/expected/go/endpoints-consumer.yml     |  4 ++--
 .../test/resources/expected/go/endpoints-go2sky.yml  |  4 ++--
 .../resources/expected/go/endpoints-provider.yml     |  4 ++--
 .../src/test/resources/expected/go/traces.yml        |  2 +-
 10 files changed, 59 insertions(+), 15 deletions(-)

diff --git a/test/e2e/e2e-service-consumer/pom.xml b/test/e2e/e2e-service-consumer/pom.xml
index 7c23b03..fb5f547 100644
--- a/test/e2e/e2e-service-consumer/pom.xml
+++ b/test/e2e/e2e-service-consumer/pom.xml
@@ -33,6 +33,14 @@
 
     <artifactId>e2e-service-consumer</artifactId>
 
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>apm-toolkit-trace</artifactId>
+            <version>${sw.version}</version>
+        </dependency>
+    </dependencies>
+
     <build>
         <plugins>
             <plugin>
diff --git a/test/e2e/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/controller/UserController.java b/test/e2e/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
index 7d94ff7..40cb7c9 100644
--- a/test/e2e/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
+++ b/test/e2e/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
@@ -19,11 +19,8 @@
 package org.apache.skywalking.e2e.controller;
 
 import com.google.common.base.Strings;
-import java.util.Optional;
-import java.util.Random;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 import lombok.RequiredArgsConstructor;
+import org.apache.skywalking.apm.toolkit.trace.TraceContext;
 import org.apache.skywalking.e2e.E2EConfiguration;
 import org.apache.skywalking.e2e.User;
 import org.springframework.http.ResponseEntity;
@@ -32,6 +29,11 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.Optional;
+import java.util.Random;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
 @RestController
 @RequiredArgsConstructor
 public class UserController {
@@ -67,6 +69,16 @@ public class UserController {
                      .collect(Collectors.toList());
     }
 
+    @PostMapping("/correlation")
+    public String correlation() throws InterruptedException {
+        Thread.sleep(randomSleepLong(sleepMin, sleepMax));
+        TraceContext.putCorrelation("CONSUMER_KEY", "consumer");
+
+        String baseUrl = configuration.getProviderBaseUrl();
+        ResponseEntity<String> resp = restTemplate.postForEntity(baseUrl + "/correlation", null, String.class);
+        return resp.getBody();
+    }
+
     private long randomSleepLong(int min, int max) {
         Random rand = new Random();
         int randomNumber = rand.nextInt((max - min) + 1) + min;
diff --git a/test/e2e/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/UserController.java b/test/e2e/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
index b3ed941..c1391c5 100644
--- a/test/e2e/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
+++ b/test/e2e/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
@@ -19,6 +19,7 @@
 package org.apache.skywalking.e2e.controller;
 
 import lombok.RequiredArgsConstructor;
+import org.apache.skywalking.apm.toolkit.trace.TraceContext;
 import org.apache.skywalking.e2e.User;
 import org.apache.skywalking.e2e.UserRepo;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -47,6 +48,15 @@ public class UserController {
         return userRepo.save(user);
     }
 
+    @PostMapping("/correlation")
+    public String correlation() throws InterruptedException {
+        Thread.sleep(randomSleepLong(sleepMin, sleepMax));
+        TraceContext.putCorrelation("PROVIDER_KEY", "provider");
+        return TraceContext.getCorrelation("CONSUMER_KEY").orElse("") + "_"
+            + TraceContext.getCorrelation("MIDDLE_KEY").orElse("") + "_"
+            + TraceContext.getCorrelation("PROVIDER_KEY").orElse("");
+    }
+
     private long randomSleepLong(int min, int max) {
         Random rand = new Random();
         int randomNumber = rand.nextInt((max - min) + 1) + min;
diff --git a/test/e2e/e2e-test/docker/go/Dockerfile.go b/test/e2e/e2e-test/docker/go/Dockerfile.go
index 61338a8..16e650d 100644
--- a/test/e2e/e2e-test/docker/go/Dockerfile.go
+++ b/test/e2e/e2e-test/docker/go/Dockerfile.go
@@ -15,7 +15,7 @@
 
 FROM golang:1.12 AS builder
 
-ARG COMMIT_HASH=38c3b84741dd6c0609965e9df0fcc633915d3ea5
+ARG COMMIT_HASH=9094186ac3782482a85dbca47978651bec268e97
 ARG GO2SKY_CODE=${COMMIT_HASH}.tar.gz
 ARG GO2SKY_CODE_URL=https://github.com/SkyAPM/go2sky/archive/${GO2SKY_CODE}
 
diff --git a/test/e2e/e2e-test/docker/go/docker-compose.yml b/test/e2e/e2e-test/docker/go/docker-compose.yml
index 213c81a..e78608a 100644
--- a/test/e2e/e2e-test/docker/go/docker-compose.yml
+++ b/test/e2e/e2e-test/docker/go/docker-compose.yml
@@ -52,7 +52,7 @@ services:
         condition: service_healthy
       java-provider:
         condition: service_healthy
-    command: ['--grpc', '--oap-server', 'oap:11800', '--upstream-url', 'http://java-provider:9090/info']
+    command: ['--grpc', '--oap-server', 'oap:11800', '--upstream-url', 'http://java-provider:9090/correlation']
     healthcheck:
       test: ["CMD", "sh", "-c", "nc -z 127.0.0.1 8080"]
       interval: 5s
diff --git a/test/e2e/e2e-test/src/test/java/org/apache/skywalking/e2e/GOE2E.java b/test/e2e/e2e-test/src/test/java/org/apache/skywalking/e2e/GOE2E.java
index c488537..6720da6 100644
--- a/test/e2e/e2e-test/src/test/java/org/apache/skywalking/e2e/GOE2E.java
+++ b/test/e2e/e2e-test/src/test/java/org/apache/skywalking/e2e/GOE2E.java
@@ -17,7 +17,6 @@
 
 package org.apache.skywalking.e2e;
 
-import java.util.List;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.skywalking.e2e.annotation.ContainerHostAndPort;
 import org.apache.skywalking.e2e.annotation.DockerCompose;
@@ -50,10 +49,15 @@ import org.apache.skywalking.e2e.topo.Topology;
 import org.apache.skywalking.e2e.trace.Trace;
 import org.apache.skywalking.e2e.trace.TracesMatcher;
 import org.apache.skywalking.e2e.trace.TracesQuery;
+import org.junit.Assert;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
+import org.springframework.http.ResponseEntity;
 import org.testcontainers.containers.DockerComposeContainer;
 
+import java.net.URL;
+import java.util.List;
+
 import static org.apache.skywalking.e2e.metrics.MetricsMatcher.verifyMetrics;
 import static org.apache.skywalking.e2e.metrics.MetricsMatcher.verifyPercentileMetrics;
 import static org.apache.skywalking.e2e.metrics.MetricsQuery.ALL_ENDPOINT_METRICS;
@@ -93,7 +97,7 @@ public class GOE2E extends SkyWalkingTestAdapter {
     @BeforeAll
     public void setUp() throws Exception {
         queryClient(swWebappHostPort);
-        trafficController(javaConsumerHostPort, "/info");
+        trafficController(javaConsumerHostPort, "/correlation");
     }
 
     @AfterAll
@@ -159,6 +163,16 @@ public class GOE2E extends SkyWalkingTestAdapter {
         verifyServiceInstanceRelationMetrics(topology.getCalls());
     }
 
+    @RetryableTest
+    void correlation() throws Exception {
+        final URL url = new URL("http", javaConsumerHostPort.host(), javaConsumerHostPort.port(), "/correlation");
+
+        ResponseEntity<String> resp = restTemplate.postForEntity(url.toURI(), trafficData, String.class);
+        LOGGER.info("verifying correlation: {}", resp);
+
+        Assert.assertEquals("consumer_go2sky_provider", resp.getBody());
+    }
+
     private Instances verifyServiceInstances(final Service service) throws Exception {
         final Instances instances = graphql.instances(
             new InstancesQuery().serviceId(service.getKey()).start(startTime).end(now())
diff --git a/test/e2e/e2e-test/src/test/resources/expected/go/endpoints-consumer.yml b/test/e2e/e2e-test/src/test/resources/expected/go/endpoints-consumer.yml
index 650f2dc..b2011b3 100644
--- a/test/e2e/e2e-test/src/test/resources/expected/go/endpoints-consumer.yml
+++ b/test/e2e/e2e-test/src/test/resources/expected/go/endpoints-consumer.yml
@@ -14,5 +14,5 @@
 # limitations under the License.
 
 endpoints:
-  - key: ZTJlLXNlcnZpY2UtamF2YS1jb25zdW1lcg==.1_L2luZm8=
-    label: /info
\ No newline at end of file
+  - key: ZTJlLXNlcnZpY2UtamF2YS1jb25zdW1lcg==.1_L2NvcnJlbGF0aW9u
+    label: /correlation
\ No newline at end of file
diff --git a/test/e2e/e2e-test/src/test/resources/expected/go/endpoints-go2sky.yml b/test/e2e/e2e-test/src/test/resources/expected/go/endpoints-go2sky.yml
index 038fa5d..18d96d1 100644
--- a/test/e2e/e2e-test/src/test/resources/expected/go/endpoints-go2sky.yml
+++ b/test/e2e/e2e-test/src/test/resources/expected/go/endpoints-go2sky.yml
@@ -14,5 +14,5 @@
 # limitations under the License.
 
 endpoints:
-  - key: Z28yc2t5.1_L1BPU1QvaW5mbw==
-    label: /POST/info
\ No newline at end of file
+  - key: Z28yc2t5.1_L1BPU1QvY29ycmVsYXRpb24=
+    label: /POST/correlation
\ No newline at end of file
diff --git a/test/e2e/e2e-test/src/test/resources/expected/go/endpoints-provider.yml b/test/e2e/e2e-test/src/test/resources/expected/go/endpoints-provider.yml
index 0562bd2..6e5c04f 100644
--- a/test/e2e/e2e-test/src/test/resources/expected/go/endpoints-provider.yml
+++ b/test/e2e/e2e-test/src/test/resources/expected/go/endpoints-provider.yml
@@ -14,5 +14,5 @@
 # limitations under the License.
 
 endpoints:
-  - key: ZTJlLXNlcnZpY2UtamF2YS1wcm92aWRlcg==.1_L2luZm8=
-    label: /info
\ No newline at end of file
+  - key: ZTJlLXNlcnZpY2UtamF2YS1wcm92aWRlcg==.1_L2NvcnJlbGF0aW9u
+    label: /correlation
\ No newline at end of file
diff --git a/test/e2e/e2e-test/src/test/resources/expected/go/traces.yml b/test/e2e/e2e-test/src/test/resources/expected/go/traces.yml
index 9cab9bf..47af5b6 100644
--- a/test/e2e/e2e-test/src/test/resources/expected/go/traces.yml
+++ b/test/e2e/e2e-test/src/test/resources/expected/go/traces.yml
@@ -16,7 +16,7 @@
 traces:
   - key: not null
     endpointNames:
-      - /info
+      - /correlation
     duration: ge 0
     start: gt 0
     isError: false