fix agent auth e2e not activated. (#4428)

* fix e2e miss.
This commit is contained in:
Jared Tan 2020-02-29 22:20:43 +08:00 committed by GitHub
parent 036aee8d2c
commit 85cc9c36ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 44 additions and 75 deletions

View File

@ -56,6 +56,8 @@ jobs:
run: export E2E_VERSION=jdk12-1.5 && bash -x test/e2e/run.sh e2e-single-service
- name: Agent Reboot Tests(JDK8)
run: export E2E_VERSION=jdk8-1.5 && bash -x test/e2e/run.sh e2e-agent-reboot
- name: Agent Auth Tests(JDK8)
run: export E2E_VERSION=jdk8-1.5 && bash -x test/e2e/run.sh e2e-agent-auth
Cluster:
runs-on: ubuntu-latest

View File

@ -83,14 +83,12 @@
<alias>${e2e.container.name.prefix}</alias>
<run>
<env>
<SW_AGENT_AUTHENTICATION>test-token</SW_AGENT_AUTHENTICATION>
<INSTRUMENTED_SERVICE>${project.build.finalName}.jar</INSTRUMENTED_SERVICE>
<INSTRUMENTED_SERVICE_OPTS>-Dskywalking.agent.cool_down_threshold=1
</INSTRUMENTED_SERVICE_OPTS>
</env>
<ports>
<port>+webapp.host:webapp.port:8080</port>
<port>+client.host:client.port:9090</port>
<port>+reboot.host:reboot.port:9091</port>
</ports>
<volumes>
<bind>
@ -100,8 +98,14 @@
</bind>
</volumes>
<wait>
<log>SkyWalking e2e container is ready for tests</log>
<time>2400000</time>
<http>
<url>
http://${docker.host.address}:${client.port}/e2e/health-check
</url>
<method>GET</method>
<status>200</status>
</http>
<time>300000</time>
</wait>
</run>
</image>

View File

@ -1,42 +0,0 @@
#!/usr/bin/env bash
# Licensed to the SkyAPM 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.
# in order to make it easier to restart the OAP (by executing the restart script) from outside (container),
# we'll expose a tcp port and whenever we receive a message on that port, we'll restart the OAP server,
# socat will help on this to execute the script when receiving a message on that port
apt-get update && apt-get -y install socat
# socat will execute the command in a new shell, thus won't catch the original functions' declarations
# so we'll put the restart command in a script file
echo '
ps -ef | grep -v grep | grep oap.logDir | awk '"'"'{print $2}'"'"' | xargs --no-run-if-empty kill -9
rm -rf /tmp/oap/trace_buffer1
rm -rf /tmp/oap/mesh_buffer1
echo "restarting OAP server..." \
&& SW_RECEIVER_BUFFER_PATH=/tmp/oap/trace_buffer1 \
&& SW_SERVICE_MESH_BUFFER_PATH=/tmp/oap/mesh_buffer1 \
&& cd /sw \
&& bash bin/oapService.sh > /dev/null 2>&1 &
' > /usr/bin/restart_oap
sync
chmod +x /usr/bin/restart_oap
sync

View File

@ -15,15 +15,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# set up the tcp server to listen for the restart command
socat -u tcp-l:9091,fork system:'bash restart_oap' &
echo 'starting OAP server...' \
&& SW_STORAGE_ES_BULK_ACTIONS=1 \
&& SW_STORAGE_ES_FLUSH_INTERVAL=1 \
&& SW_RECEIVER_BUFFER_PATH=/tmp/oap/trace_buffer1 \
&& SW_SERVICE_MESH_BUFFER_PATH=/tmp/oap/mesh_buffer1 \
&& SW_AUTHENTICATION="test-token" \
&& start_oap 'init'

View File

@ -101,7 +101,8 @@ public class SampleVerificationITCase {
try {
final Map<String, String> user = new HashMap<>();
user.put("name", "SkyWalking");
final ResponseEntity<String> responseEntity = restTemplate.postForEntity(instrumentedServiceUrl + "/e2e/users", user, String.class);
final ResponseEntity<String> responseEntity = restTemplate.postForEntity(
instrumentedServiceUrl + "/e2e/users", user, String.class);
LOGGER.info("responseEntity: {}", responseEntity);
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
final List<Trace> traces = queryClient.traces(new TracesQuery().start(minutesAgo)
@ -156,7 +157,8 @@ public class SampleVerificationITCase {
.end(now));
LOGGER.info("topoData: {}", topoData);
InputStream expectedInputStream = new ClassPathResource("expected-data/org.apache.skywalking.e2e.SampleVerificationITCase.topo.yml")
InputStream expectedInputStream = new ClassPathResource(
"expected-data/org.apache.skywalking.e2e.SampleVerificationITCase.topo.yml")
.getInputStream();
final TopoMatcher topoMatcher = new Yaml().loadAs(expectedInputStream, TopoMatcher.class);
@ -167,18 +169,21 @@ public class SampleVerificationITCase {
private void verifyServiceInstanceTopo(LocalDateTime minutesAgo) throws Exception {
final LocalDateTime now = LocalDateTime.now(ZoneOffset.UTC);
final ServiceInstanceTopoData topoData = queryClient.serviceInstanceTopo(new ServiceInstanceTopoQuery().stepByMinute()
.start(minutesAgo
.minusDays(1))
.end(now)
.clientServiceId("1")
.serverServiceId("2"));
final ServiceInstanceTopoData topoData = queryClient.serviceInstanceTopo(
new ServiceInstanceTopoQuery().stepByMinute()
.start(minutesAgo
.minusDays(1))
.end(now)
.clientServiceId("1")
.serverServiceId("2"));
LOGGER.info("instanceTopoData: {}", topoData);
InputStream expectedInputStream = new ClassPathResource("expected-data/org.apache.skywalking.e2e.SampleVerificationITCase.serviceInstanceTopo.yml")
InputStream expectedInputStream = new ClassPathResource(
"expected-data/org.apache.skywalking.e2e.SampleVerificationITCase.serviceInstanceTopo.yml")
.getInputStream();
final ServiceInstanceTopoMatcher topoMatcher = new Yaml().loadAs(expectedInputStream, ServiceInstanceTopoMatcher.class);
final ServiceInstanceTopoMatcher topoMatcher = new Yaml().loadAs(
expectedInputStream, ServiceInstanceTopoMatcher.class);
topoMatcher.verify(topoData);
verifyServiceInstanceRelationMetrics(topoData.getCalls(), minutesAgo);
}
@ -189,7 +194,8 @@ public class SampleVerificationITCase {
final List<Service> services = queryClient.services(new ServicesQuery().start(minutesAgo).end(now));
LOGGER.info("services: {}", services);
InputStream expectedInputStream = new ClassPathResource("expected-data/org.apache.skywalking.e2e.SampleVerificationITCase.services.yml")
InputStream expectedInputStream = new ClassPathResource(
"expected-data/org.apache.skywalking.e2e.SampleVerificationITCase.services.yml")
.getInputStream();
final ServicesMatcher servicesMatcher = new Yaml().loadAs(expectedInputStream, ServicesMatcher.class);
@ -211,13 +217,14 @@ public class SampleVerificationITCase {
}
private Instances verifyServiceInstances(LocalDateTime minutesAgo, LocalDateTime now,
Service service) throws Exception {
Service service) throws Exception {
InputStream expectedInputStream;
Instances instances = queryClient.instances(new InstancesQuery().serviceId(service.getKey())
.start(minutesAgo)
.end(now));
LOGGER.info("instances: {}", instances);
expectedInputStream = new ClassPathResource("expected-data/org.apache.skywalking.e2e.SampleVerificationITCase.instances.yml")
expectedInputStream = new ClassPathResource(
"expected-data/org.apache.skywalking.e2e.SampleVerificationITCase.instances.yml")
.getInputStream();
final InstancesMatcher instancesMatcher = new Yaml().loadAs(expectedInputStream, InstancesMatcher.class);
instancesMatcher.verify(instances);
@ -225,10 +232,11 @@ public class SampleVerificationITCase {
}
private Endpoints verifyServiceEndpoints(LocalDateTime minutesAgo, LocalDateTime now,
Service service) throws Exception {
Service service) throws Exception {
Endpoints instances = queryClient.endpoints(new EndpointQuery().serviceId(service.getKey()));
LOGGER.info("instances: {}", instances);
InputStream expectedInputStream = new ClassPathResource("expected-data/org.apache.skywalking.e2e.SampleVerificationITCase.endpoints.yml")
InputStream expectedInputStream = new ClassPathResource(
"expected-data/org.apache.skywalking.e2e.SampleVerificationITCase.endpoints.yml")
.getInputStream();
final EndpointsMatcher endpointsMatcher = new Yaml().loadAs(expectedInputStream, EndpointsMatcher.class);
endpointsMatcher.verify(instances);
@ -296,7 +304,8 @@ public class SampleVerificationITCase {
final List<Trace> traces = queryClient.traces(new TracesQuery().start(minutesAgo).end(now).orderByDuration());
LOGGER.info("traces: {}", traces);
InputStream expectedInputStream = new ClassPathResource("expected-data/org.apache.skywalking.e2e.SampleVerificationITCase.traces.yml")
InputStream expectedInputStream = new ClassPathResource(
"expected-data/org.apache.skywalking.e2e.SampleVerificationITCase.traces.yml")
.getInputStream();
final TracesMatcher tracesMatcher = new Yaml().loadAs(expectedInputStream, TracesMatcher.class);
@ -304,16 +313,20 @@ public class SampleVerificationITCase {
}
private void verifyServiceInstanceRelationMetrics(List<Call> calls,
final LocalDateTime minutesAgo) throws Exception {
verifyRelationMetrics(calls, minutesAgo, ALL_SERVICE_INSTANCE_RELATION_CLIENT_METRICS, ALL_SERVICE_INSTANCE_RELATION_SERVER_METRICS);
final LocalDateTime minutesAgo) throws Exception {
verifyRelationMetrics(
calls, minutesAgo, ALL_SERVICE_INSTANCE_RELATION_CLIENT_METRICS,
ALL_SERVICE_INSTANCE_RELATION_SERVER_METRICS
);
}
private void verifyServiceRelationMetrics(List<Call> calls, final LocalDateTime minutesAgo) throws Exception {
verifyRelationMetrics(calls, minutesAgo, ALL_SERVICE_RELATION_CLIENT_METRICS, ALL_SERVICE_RELATION_SERVER_METRICS);
verifyRelationMetrics(
calls, minutesAgo, ALL_SERVICE_RELATION_CLIENT_METRICS, ALL_SERVICE_RELATION_SERVER_METRICS);
}
private void verifyRelationMetrics(List<Call> calls, final LocalDateTime minutesAgo, String[] relationClientMetrics,
String[] relationServerMetrics) throws Exception {
String[] relationServerMetrics) throws Exception {
for (Call call : calls) {
for (String detectPoint : call.getDetectPoints()) {
switch (detectPoint) {