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/10/29 06:32:30 UTC

[skywalking] branch master updated: E2e immigrate to e2e-v2 finished, remove old e2e. (#8037)

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 32f9ab0  E2e immigrate to e2e-v2 finished,  remove old e2e. (#8037)
32f9ab0 is described below

commit 32f9ab01f22e5b786710109c48c018c85397af61
Author: wankai123 <wa...@foxmail.com>
AuthorDate: Fri Oct 29 14:32:16 2021 +0800

    E2e immigrate to e2e-v2 finished,  remove old e2e. (#8037)
---
 .github/workflows/ci-it.yaml                       |   2 +-
 .gitmodules                                        |   3 -
 CHANGES.md                                         |  22 +-
 docs/en/guides/README.md                           |  29 +-
 docs/en/setup/backend/backend-vm-monitoring.md     |   2 +-
 docs/en/setup/backend/backend-zabbix.md            |   2 +-
 docs/en/setup/backend/log-analyzer.md              |  12 +-
 test/e2e-v2/cases/alarm/es/e2e.yaml                |   2 -
 test/e2e-v2/cases/alarm/h2/e2e.yaml                |   2 -
 test/e2e-v2/cases/alarm/influxdb/e2e.yaml          |   2 -
 test/e2e-v2/cases/alarm/mysql/e2e.yaml             |   2 -
 test/e2e-v2/cases/alarm/postgres/e2e.yaml          |   2 -
 test/e2e-v2/cases/cluster/zk/es/e2e.yaml           |   2 -
 test/e2e-v2/cases/cluster/zk/influxdb/e2e.yaml     |   2 -
 test/e2e-v2/cases/cluster/zk/mysql/e2e.yaml        |   2 -
 test/e2e-v2/cases/event/es/e2e.yaml                |   2 -
 test/e2e-v2/cases/event/h2/e2e.yaml                |   2 -
 test/e2e-v2/cases/event/influxdb/e2e.yaml          |   2 -
 test/e2e-v2/cases/event/mysql/e2e.yaml             |   2 -
 test/e2e-v2/cases/gateway/e2e.yaml                 |   2 -
 test/e2e-v2/cases/go/e2e.yaml                      |   2 -
 test/e2e-v2/cases/kafka/log/e2e.yaml               |   2 -
 test/e2e-v2/cases/kafka/meter/e2e.yaml             |   2 -
 test/e2e-v2/cases/kafka/profile/e2e.yaml           |   2 -
 test/e2e-v2/cases/kafka/simple-so11y/e2e.yaml      |   2 -
 test/e2e-v2/cases/log/es/e2e.yaml                  |   2 -
 test/e2e-v2/cases/log/fluent-bit/e2e.yaml          |   2 -
 test/e2e-v2/cases/log/h2/e2e.yaml                  |   2 -
 test/e2e-v2/cases/log/influxdb/e2e.yaml            |   2 -
 test/e2e-v2/cases/log/mysql/e2e.yaml               |   2 -
 test/e2e-v2/cases/log/postgres/e2e.yaml            |   2 -
 test/e2e-v2/cases/lua/e2e.yaml                     |   2 -
 test/e2e-v2/cases/meter/e2e.yaml                   |   2 -
 test/e2e-v2/cases/nodejs/e2e.yaml                  |   2 -
 test/e2e-v2/cases/php/e2e.yaml                     |   2 -
 test/e2e-v2/cases/profile/es/e2e.yaml              |   2 -
 test/e2e-v2/cases/profile/h2/e2e.yaml              |   2 -
 test/e2e-v2/cases/profile/influxdb/e2e.yaml        |   2 -
 test/e2e-v2/cases/profile/mysql/e2e.yaml           |   2 -
 test/e2e-v2/cases/python/e2e.yaml                  |   2 -
 test/e2e-v2/cases/simple/auth/e2e.yaml             |   2 -
 test/e2e-v2/cases/simple/jdk/e2e.yaml              |   2 -
 test/e2e-v2/cases/simple/mtls/e2e.yaml             |   2 -
 test/e2e-v2/cases/simple/ssl/e2e.yaml              |   2 -
 test/e2e-v2/cases/so11y/e2e.yaml                   |   2 -
 test/e2e-v2/cases/storage/es/e2e.yaml              |   4 +-
 test/e2e-v2/cases/storage/h2/e2e.yaml              |   4 +-
 test/e2e-v2/cases/storage/influxdb/e2e.yaml        |   4 +-
 test/e2e-v2/cases/storage/mysql/e2e.yaml           |   4 +-
 test/e2e-v2/cases/storage/opensearch/e2e.yaml      |   4 +-
 test/e2e-v2/cases/storage/postgres/e2e.yaml        |   4 +-
 test/e2e-v2/cases/storage/tidb/e2e.yaml            |   4 +-
 test/e2e-v2/cases/ttl/es/e2e.yaml                  |   2 -
 test/e2e-v2/cases/ttl/influxdb/e2e.yaml            |   2 -
 test/e2e-v2/cases/ttl/postgresql/e2e.yaml          |   2 -
 test/e2e-v2/cases/ttl/tidb/e2e.yaml                |   2 -
 .../cases/vm/prometheus-node-exporter/e2e.yaml     |   2 -
 test/e2e-v2/cases/vm/zabbix/e2e.yaml               |   2 -
 test/e2e/e2e-common/pom.xml                        |  52 ---
 .../skywalking/e2e/SkyWalkingAnnotations.java      | 323 --------------
 .../apache/skywalking/e2e/SkyWalkingExtension.java |  60 ---
 .../skywalking/e2e/annotation/ContainerHost.java   |  48 ---
 .../e2e/annotation/ContainerHostAndPort.java       |  49 ---
 .../skywalking/e2e/annotation/ContainerPort.java   |  48 ---
 .../skywalking/e2e/annotation/DockerCompose.java   |  43 --
 .../skywalking/e2e/annotation/DockerContainer.java |  40 --
 .../apache/skywalking/e2e/common/HostAndPort.java  |  39 --
 .../skywalking/e2e/docker/DockerComposeFile.java   |  71 ----
 .../skywalking/e2e/logging/ContainerLogger.java    |  57 ---
 .../e2e/naming/CamelCaseNameGenerator.java         |  29 --
 .../skywalking/e2e/retryable/OneShotExtension.java |  86 ----
 .../skywalking/e2e/retryable/RetryableTest.java    |  58 ---
 .../e2e/retryable/RetryableTestContext.java        |  42 --
 .../e2e/retryable/RetryableTestExtension.java      |  78 ----
 .../apache/skywalking/e2e/retryable/Stores.java    |  39 --
 .../java/org/apache/skywalking/e2e/utils/Envs.java |  44 --
 .../org/apache/skywalking/e2e/utils/Yamls.java     |  75 ----
 .../e2e/docker/DockerComposeFileTest.java          |  78 ----
 .../e2e/retryable/RetryableTestTest.java           |  63 ---
 .../src/test/resources/docker-compose.one.yml      |  30 --
 .../src/test/resources/docker-compose.two.yml      |  41 --
 test/e2e/e2e-data/pom.xml                          |  32 --
 .../org/apache/skywalking/e2e/AbstractQuery.java   | 153 -------
 .../org/apache/skywalking/e2e/GQLResponse.java     |  29 --
 .../org/apache/skywalking/e2e/ProfileClient.java   | 159 -------
 .../apache/skywalking/e2e/SimpleQueryClient.java   | 473 ---------------------
 .../e2e/UIConfigurationManagementClient.java       | 144 -------
 .../org/apache/skywalking/e2e/alarm/Alarm.java     |  36 --
 .../apache/skywalking/e2e/alarm/AlarmMatcher.java  |  83 ----
 .../apache/skywalking/e2e/alarm/AlarmQuery.java    |  71 ----
 .../apache/skywalking/e2e/alarm/AlarmsMatcher.java |  63 ---
 .../org/apache/skywalking/e2e/alarm/GetAlarm.java  |  28 --
 .../apache/skywalking/e2e/alarm/GetAlarmData.java  |  25 --
 .../org/apache/skywalking/e2e/alarm/HookAlarm.java |  36 --
 .../skywalking/e2e/alarm/HookAlarmMatcher.java     |  69 ---
 .../apache/skywalking/e2e/alarm/HookAlarms.java    |  31 --
 .../skywalking/e2e/alarm/HookAlarmsMatcher.java    |  54 ---
 .../e2e/assertor/VariableExpressParser.java        |  58 ---
 .../exception/VariableNotFoundException.java       |  36 --
 .../skywalking/e2e/browser/BrowserErrorLog.java    |  38 --
 .../e2e/browser/BrowserErrorLogMatcher.java        |  94 ----
 .../e2e/browser/BrowserErrorLogQuery.java          |  44 --
 .../skywalking/e2e/browser/BrowserErrorLogs.java   |  26 --
 .../e2e/browser/BrowserErrorLogsData.java          |  25 --
 .../e2e/browser/BrowserErrorLogsMatcher.java       |  50 ---
 .../org/apache/skywalking/e2e/common/KeyValue.java |  29 --
 .../skywalking/e2e/common/KeyValueMatcher.java     |  46 --
 .../e2e/dashboard/DashboardConfiguration.java      |  30 --
 .../DashboardConfigurationListWrapper.java         |  28 --
 .../dashboard/DashboardConfigurationMatcher.java   |  40 --
 .../e2e/dashboard/DashboardConfigurations.java     |  31 --
 .../dashboard/DashboardConfigurationsMatcher.java  |  47 --
 .../skywalking/e2e/dashboard/DashboardSetting.java |  32 --
 .../e2e/dashboard/TemplateChangeStatus.java        |  27 --
 .../e2e/dashboard/TemplateChangeStatusWrapper.java |  26 --
 .../skywalking/e2e/dashboard/TemplateType.java     |  33 --
 .../org/apache/skywalking/e2e/event/Event.java     |  53 ---
 .../org/apache/skywalking/e2e/event/EventData.java |  33 --
 .../apache/skywalking/e2e/event/EventMatcher.java  | 112 -----
 .../apache/skywalking/e2e/event/EventsMatcher.java |  51 ---
 .../apache/skywalking/e2e/event/EventsQuery.java   |  33 --
 .../e2e/exception/AssertFailedException.java       |  32 --
 .../java/org/apache/skywalking/e2e/log/Log.java    |  40 --
 .../org/apache/skywalking/e2e/log/LogData.java     |  33 --
 .../org/apache/skywalking/e2e/log/LogMatcher.java  |  98 -----
 .../org/apache/skywalking/e2e/log/LogsMatcher.java |  51 ---
 .../org/apache/skywalking/e2e/log/LogsQuery.java   | 129 ------
 .../e2e/log/SupportQueryLogsByKeywords.java        |  26 --
 .../e2e/metrics/AllOfMetricsMatcher.java           |  45 --
 .../e2e/metrics/AtLeastOneOfMetricsMatcher.java    |  50 ---
 .../e2e/metrics/BrowserMetricsQuery.java           | 112 -----
 .../org/apache/skywalking/e2e/metrics/Metrics.java |  28 --
 .../apache/skywalking/e2e/metrics/MetricsData.java |  26 --
 .../skywalking/e2e/metrics/MetricsMatcher.java     | 109 -----
 .../skywalking/e2e/metrics/MetricsQuery.java       | 233 ----------
 .../skywalking/e2e/metrics/MetricsValue.java       |  28 --
 .../e2e/metrics/MetricsValueMatcher.java           |  39 --
 .../skywalking/e2e/metrics/MultiMetricsData.java   |  27 --
 .../e2e/metrics/ReadLabeledMetricsData.java        |  28 --
 .../e2e/metrics/ReadLabeledMetricsQuery.java       |  41 --
 .../apache/skywalking/e2e/metrics/ReadMetrics.java |  27 --
 .../skywalking/e2e/metrics/ReadMetricsData.java    |  26 --
 .../skywalking/e2e/metrics/ReadMetricsQuery.java   |  45 --
 .../creation/ProfileTaskCreationRequest.java       |  41 --
 .../creation/ProfileTaskCreationResult.java        |  34 --
 .../creation/ProfileTaskCreationResultMatcher.java |  37 --
 .../creation/ProfileTaskCreationResultWrapper.java |  31 --
 .../e2e/profile/query/ProfileAnalyzation.java      |  47 --
 .../profile/query/ProfileStackElementMatcher.java  |  46 --
 .../e2e/profile/query/ProfileStackTreeMatcher.java |  54 ---
 .../skywalking/e2e/profile/query/ProfileTask.java  |  40 --
 .../e2e/profile/query/ProfileTaskLog.java          |  29 --
 .../e2e/profile/query/ProfileTaskLogMatcher.java   |  43 --
 .../e2e/profile/query/ProfileTaskMatcher.java      |  62 ---
 .../e2e/profile/query/ProfileTaskQuery.java        |  32 --
 .../skywalking/e2e/profile/query/ProfileTasks.java |  28 --
 .../e2e/profile/query/ProfiledSegment.java         |  34 --
 .../e2e/profile/query/ProfiledSegmentMatcher.java  |  46 --
 .../skywalking/e2e/profile/query/ProfiledSpan.java |  42 --
 .../e2e/profile/query/ProfiledSpanMatcher.java     |  61 ---
 .../e2e/profile/query/ProfiledSpanTag.java         |  29 --
 .../e2e/profile/query/ProfiledSpanTagMatcher.java  |  42 --
 .../e2e/profile/query/ProfilesTasksMatcher.java    |  45 --
 .../skywalking/e2e/profile/query/Traces.java       |  28 --
 .../org/apache/skywalking/e2e/service/Service.java |  27 --
 .../skywalking/e2e/service/ServiceMatcher.java     |  59 ---
 .../skywalking/e2e/service/ServicesData.java       |  27 --
 .../skywalking/e2e/service/ServicesMatcher.java    |  58 ---
 .../skywalking/e2e/service/ServicesQuery.java      |  24 --
 .../skywalking/e2e/service/endpoint/Endpoint.java  |  27 --
 .../e2e/service/endpoint/EndpointMatcher.java      |  46 --
 .../e2e/service/endpoint/EndpointQuery.java        |  29 --
 .../skywalking/e2e/service/endpoint/Endpoints.java |  27 --
 .../e2e/service/endpoint/EndpointsMatcher.java     |  54 ---
 .../skywalking/e2e/service/instance/Attribute.java |  27 --
 .../e2e/service/instance/AttributeMatcher.java     |  41 --
 .../skywalking/e2e/service/instance/Instance.java  |  68 ---
 .../e2e/service/instance/InstanceMatcher.java      |  95 -----
 .../skywalking/e2e/service/instance/Instances.java |  28 --
 .../e2e/service/instance/InstancesMatcher.java     |  49 ---
 .../e2e/service/instance/InstancesQuery.java       |  78 ----
 .../java/org/apache/skywalking/e2e/topo/Call.java  |  32 --
 .../apache/skywalking/e2e/topo/CallMatcher.java    |  72 ----
 .../java/org/apache/skywalking/e2e/topo/Node.java  |  31 --
 .../apache/skywalking/e2e/topo/NodeMatcher.java    |  66 ---
 .../skywalking/e2e/topo/ServiceInstanceNode.java   |  33 --
 .../e2e/topo/ServiceInstanceNodeMatcher.java       |  84 ----
 .../e2e/topo/ServiceInstanceTopology.java          |  37 --
 .../e2e/topo/ServiceInstanceTopologyMatcher.java   | 105 -----
 .../e2e/topo/ServiceInstanceTopologyQuery.java     |  32 --
 .../e2e/topo/ServiceInstanceTopologyResponse.java  |  26 --
 .../apache/skywalking/e2e/topo/TopoMatcher.java    | 103 -----
 .../org/apache/skywalking/e2e/topo/TopoQuery.java  |  24 --
 .../org/apache/skywalking/e2e/topo/Topology.java   |  36 --
 .../skywalking/e2e/topo/TopologyResponse.java      |  26 --
 .../java/org/apache/skywalking/e2e/trace/Span.java |  40 --
 .../apache/skywalking/e2e/trace/SpanMatcher.java   | 118 -----
 .../java/org/apache/skywalking/e2e/trace/Tag.java  |  27 --
 .../org/apache/skywalking/e2e/trace/Trace.java     |  42 --
 .../apache/skywalking/e2e/trace/TraceMatcher.java  | 137 ------
 .../apache/skywalking/e2e/trace/TracesData.java    |  34 --
 .../apache/skywalking/e2e/trace/TracesMatcher.java |  55 ---
 .../apache/skywalking/e2e/trace/TracesQuery.java   | 121 ------
 .../org/apache/skywalking/e2e/utils/Times.java     |  27 --
 .../e2e/verification/AbstractMatcher.java          | 100 -----
 .../src/main/resources/browser-error-logs.gql      |  39 --
 .../src/main/resources/browser-services.gql        |  31 --
 test/e2e/e2e-data/src/main/resources/endpoints.gql |  27 --
 test/e2e/e2e-data/src/main/resources/events.gql    |  44 --
 .../e2e-data/src/main/resources/instanceTopo.gql   |  44 --
 test/e2e/e2e-data/src/main/resources/instances.gql |  36 --
 test/e2e/e2e-data/src/main/resources/logs.gql      |  59 ---
 .../src/main/resources/metrics-multiLines.gql      |  36 --
 test/e2e/e2e-data/src/main/resources/metrics.gql   |  35 --
 .../src/main/resources/profileAnalyzation.gql      |  35 --
 .../src/main/resources/profileTaskCreation.gql     |  35 --
 .../src/main/resources/profileTaskList.gql         |  39 --
 .../src/main/resources/profileTaskSegmentList.gql  |  25 --
 .../src/main/resources/profiledSegment.gql         |  30 --
 .../e2e-data/src/main/resources/read-alarms.gql    |  59 ---
 .../src/main/resources/read-labeled-metrics.gql    |  37 --
 .../e2e-data/src/main/resources/read-metrics.gql   |  34 --
 test/e2e/e2e-data/src/main/resources/services.gql  |  30 --
 .../resources/support-query-logs-by-keywords.gql   |  20 -
 test/e2e/e2e-data/src/main/resources/topo.gql      |  40 --
 test/e2e/e2e-data/src/main/resources/traces.gql    |  42 --
 .../e2e-data/src/main/resources/ui-addTemplate.gql |  32 --
 .../src/main/resources/ui-changeTemplate.gql       |  32 --
 .../src/main/resources/ui-disableTemplate.gql      |  26 --
 .../src/main/resources/ui-getTemplates.gql         |  29 --
 .../org/apache/skywalking/e2e/TestLogsMatcher.java |  75 ----
 .../org/apache/skywalking/e2e/TestMatcher.java     |  82 ----
 .../apache/skywalking/e2e/TestMetricsMatcher.java  |  53 ---
 .../e2e/TestServiceInstanceTopologyMatcher.java    | 108 -----
 .../org/apache/skywalking/e2e/TestTopoMatcher.java |  92 ----
 test/e2e/e2e-data/src/test/resources/log.yml       |  29 --
 .../src/test/resources/serviceInstanceTopo.yml     |  40 --
 test/e2e/e2e-data/src/test/resources/test.yml      |  24 --
 test/e2e/e2e-data/src/test/resources/topo.yml      |  32 --
 test/e2e/e2e-protocol/pom.xml                      |  98 -----
 test/e2e/e2e-protocol/src/main/proto               |   1 -
 test/e2e/e2e-service-consumer/pom.xml              |  66 ---
 .../apache/skywalking/e2e/E2EConfiguration.java    |  30 --
 .../apache/skywalking/e2e/Service1Application.java |  29 --
 .../main/java/org/apache/skywalking/e2e/User.java  |  27 --
 .../e2e/controller/HealthController.java           |  36 --
 .../skywalking/e2e/controller/UserController.java  |  87 ----
 .../src/main/resources/application.yml             |  24 --
 test/e2e/e2e-service-provider/pom.xml              | 131 ------
 .../java/org/apache/skywalking/e2e/KeyValue.java   |  29 --
 .../apache/skywalking/e2e/Service0Application.java |  41 --
 .../main/java/org/apache/skywalking/e2e/User.java  |  42 --
 .../java/org/apache/skywalking/e2e/UserRepo.java   |  24 --
 .../skywalking/e2e/controller/AlarmController.java |  82 ----
 .../e2e/controller/FileLogController.java          |  41 --
 .../e2e/controller/HealthController.java           |  31 --
 .../skywalking/e2e/controller/LogController.java   |  42 --
 .../skywalking/e2e/controller/UserController.java  |  65 ---
 .../apache/skywalking/e2e/lua/LuaController.java   |  54 ---
 .../apache/skywalking/e2e/profile/CreateUser.java  |  32 --
 .../skywalking/e2e/profile/ProfileController.java  |  42 --
 .../src/main/resources/application.yml             |  43 --
 .../src/main/resources/log4j.properties            |  26 --
 .../src/main/resources/log4j2.xml                  |  44 --
 .../src/main/resources/logback.xml                 |  52 ---
 test/e2e/e2e-test/docker/Dockerfile.consumer       |  26 --
 test/e2e/e2e-test/docker/Dockerfile.h2             |  24 --
 test/e2e/e2e-test/docker/Dockerfile.provider       |  26 --
 test/e2e/e2e-test/docker/Dockerfile.satellite      |  36 --
 test/e2e/e2e-test/docker/alarm/alarm-settings.yml  |  49 ---
 .../e2e-test/docker/alarm/docker-compose.es6.yml   |  65 ---
 .../e2e-test/docker/alarm/docker-compose.es7.yml   |  65 ---
 .../e2e-test/docker/alarm/docker-compose.h2.yml    |  66 ---
 .../docker/alarm/docker-compose.influxdb.yml       |  63 ---
 .../e2e-test/docker/alarm/docker-compose.mysql.yml |  68 ---
 .../docker/alarm/docker-compose.postgres.yml       |  67 ---
 test/e2e/e2e-test/docker/base-compose.yml          |  92 ----
 .../e2e-test/docker/browser/docker-compose.es6.yml |  44 --
 .../e2e-test/docker/browser/docker-compose.es7.yml |  44 --
 .../docker/browser/docker-compose.h2.client-js.yml | 108 -----
 .../e2e-test/docker/browser/docker-compose.h2.yml  |  45 --
 .../docker/browser/docker-compose.influxdb.yml     |  42 --
 .../docker/browser/docker-compose.mysql.yml        |  47 --
 .../Dockerfile.generate-traffic                    |  22 -
 .../with-skywalking-client-js/Dockerfile.test-ui   |  50 ---
 .../browser/with-skywalking-client-js/index.js     |  50 ---
 .../browser/with-skywalking-client-js/nginx.conf   |  39 --
 .../browser/with-skywalking-client-js/test.py      |  42 --
 .../e2e/e2e-test/docker/cluster/docker-compose.yml |  73 ----
 .../docker/cluster/docker-compose.zk.es6.yml       |  63 ---
 .../docker/cluster/docker-compose.zk.es7.yml       |  63 ---
 .../docker/cluster/docker-compose.zk.influxdb.yml  |  60 ---
 .../docker/cluster/docker-compose.zk.mysql.yml     |  66 ---
 .../e2e-test/docker/cluster/docker-compose.zk.yml  |  32 --
 test/e2e/e2e-test/docker/download-mysql.sh         |  27 --
 .../e2e-test/docker/event/docker-compose.es6.yml   |  47 --
 .../e2e-test/docker/event/docker-compose.es7.0.yml |  47 --
 .../e2e-test/docker/event/docker-compose.h2.yml    |  45 --
 .../docker/event/docker-compose.influxdb.yml       |  44 --
 .../e2e-test/docker/event/docker-compose.mysql.yml |  49 ---
 test/e2e/e2e-test/docker/event/docker-compose.yml  |  54 ---
 .../e2e/e2e-test/docker/gateway/docker-compose.yml | 140 ------
 test/e2e/e2e-test/docker/gateway/gateway.conf      |  25 --
 test/e2e/e2e-test/docker/gateway/gateways.yml      |  20 -
 test/e2e/e2e-test/docker/go/Dockerfile.go          |  37 --
 test/e2e/e2e-test/docker/go/docker-compose.yml     |  76 ----
 test/e2e/e2e-test/docker/kafka/Dockerfile.fluentd  |  19 -
 test/e2e/e2e-test/docker/kafka/Dockerfile.provider |  32 --
 .../e2e-test/docker/kafka/docker-compose.base.yml  |  65 ---
 .../e2e-test/docker/kafka/docker-compose.log.yml   | 119 ------
 .../e2e-test/docker/kafka/docker-compose.meter.yml |  64 ---
 .../docker/kafka/docker-compose.profiling.yml      |  78 ----
 test/e2e/e2e-test/docker/kafka/docker-compose.yml  |  75 ----
 test/e2e/e2e-test/docker/kafka/filebeat.yml        |  91 ----
 test/e2e/e2e-test/docker/kafka/fluentd.conf        |  66 ---
 .../e2e-test/docker/kafka/satellite_config.yaml    |  61 ---
 .../e2e/e2e-test/docker/log/docker-compose.es6.yml |  56 ---
 .../e2e-test/docker/log/docker-compose.es7.14.yml  |  56 ---
 .../e2e/e2e-test/docker/log/docker-compose.es7.yml |  56 ---
 .../docker/log/docker-compose.fluentbit.yml        |  71 ----
 test/e2e/e2e-test/docker/log/docker-compose.h2.yml |  58 ---
 .../docker/log/docker-compose.influxdb.yml         |  55 ---
 .../e2e-test/docker/log/docker-compose.mysql.yml   |  60 ---
 .../docker/log/fluent-bit/fluent-bit-parser.conf   |  21 -
 .../docker/log/fluent-bit/fluent-bit-script.lua    |  23 -
 .../e2e-test/docker/log/fluent-bit/fluent-bit.conf |  40 --
 test/e2e/e2e-test/docker/log/lal.yaml              |  34 --
 test/e2e/e2e-test/docker/log/log-mal.yaml          |  36 --
 test/e2e/e2e-test/docker/log4j2.xml                |  41 --
 test/e2e/e2e-test/docker/lua/Dockerfile.nginx      |  29 --
 test/e2e/e2e-test/docker/lua/docker-compose.yml    |  72 ----
 test/e2e/e2e-test/docker/lua/nginx.conf            |  64 ---
 test/e2e/e2e-test/docker/meter/docker-compose.yml  |  43 --
 test/e2e/e2e-test/docker/nodejs/Dockerfile.nodejs  |  30 --
 test/e2e/e2e-test/docker/nodejs/consumer.ts        |  40 --
 test/e2e/e2e-test/docker/nodejs/docker-compose.yml |  94 ----
 test/e2e/e2e-test/docker/nodejs/provider.ts        |  35 --
 test/e2e/e2e-test/docker/php/docker-compose.yml    |  69 ---
 test/e2e/e2e-test/docker/php/index.php             |  26 --
 test/e2e/e2e-test/docker/php/php-shadow.ini        |  21 -
 test/e2e/e2e-test/docker/php/php.ini               |  21 -
 .../e2e-test/docker/profile/docker-compose.es.yml  |  45 --
 .../e2e-test/docker/profile/docker-compose.h2.yml  |  45 --
 .../docker/profile/docker-compose.influxdb.yml     |  42 --
 .../docker/profile/docker-compose.mysql.yml        |  47 --
 .../e2e/e2e-test/docker/profile/docker-compose.yml |  38 --
 .../docker/promOtelVM/Dockerfile.nodeExporter      |  21 -
 .../e2e-test/docker/promOtelVM/docker-compose.yml  |  56 ---
 .../docker/promOtelVM/otel-collector-config.yaml   |  41 --
 test/e2e/e2e-test/docker/python/Dockerfile.python  |  31 --
 test/e2e/e2e-test/docker/python/consumer.py        |  57 ---
 test/e2e/e2e-test/docker/python/docker-compose.yml | 182 --------
 test/e2e/e2e-test/docker/python/provider-kafka.py  |  47 --
 test/e2e/e2e-test/docker/python/provider.py        |  46 --
 .../e2e-test/docker/simple/auth/docker-compose.yml |  47 --
 .../e2e-test/docker/simple/jdk/docker-compose.yml  |  44 --
 test/e2e/e2e-test/docker/simple/mtls/client/ca.crt |  27 --
 .../e2e-test/docker/simple/mtls/client/client.crt  |  27 --
 .../e2e-test/docker/simple/mtls/client/client.pem  |  52 ---
 .../e2e-test/docker/simple/mtls/docker-compose.yml |  60 ---
 test/e2e/e2e-test/docker/simple/mtls/server/ca.crt |  27 --
 .../e2e-test/docker/simple/mtls/server/server.crt  |  27 --
 .../e2e-test/docker/simple/mtls/server/server.pem  |  52 ---
 .../docker/simple/so11y/docker-compose.yml         |  36 --
 test/e2e/e2e-test/docker/simple/ssl/ca/ca.crt      |  27 --
 test/e2e/e2e-test/docker/simple/ssl/certs/ca.crt   |  27 --
 .../docker/simple/ssl/certs/server-key.pem         |  52 ---
 .../e2e-test/docker/simple/ssl/certs/server.crt    |  27 --
 .../e2e-test/docker/simple/ssl/docker-compose.yml  |  52 ---
 .../e2e-test/docker/storage/docker-compose.es.yml  |  47 --
 .../docker/storage/docker-compose.influxdb.yml     |  44 --
 .../docker/storage/docker-compose.mysql.yml        |  49 ---
 .../docker/storage/docker-compose.opensearch.yml   |  50 ---
 .../docker/storage/docker-compose.postgresql.yml   |  48 ---
 .../docker/storage/docker-compose.tidb.yml         |  50 ---
 .../e2e/e2e-test/docker/storage/docker-compose.yml |  36 --
 .../e2e-test/docker/storage/tidbconfig/tidb.toml   | 254 -----------
 .../e2e/e2e-test/docker/ttl/docker-compose.es6.yml |  56 ---
 .../e2e/e2e-test/docker/ttl/docker-compose.es7.yml |  56 ---
 .../docker/ttl/docker-compose.influxdb.yml         |  45 --
 .../docker/ttl/docker-compose.postgresql.yml       |  48 ---
 .../e2e-test/docker/ttl/docker-compose.tidb.yml    |  51 ---
 test/e2e/e2e-test/docker/ttl/docker-compose.yml    |  28 --
 test/e2e/e2e-test/docker/zabbix/agent.yaml         |  55 ---
 test/e2e/e2e-test/docker/zabbix/docker-compose.yml |  47 --
 test/e2e/e2e-test/docker/zabbix/zabbix_agentd.conf |  22 -
 test/e2e/e2e-test/pom.xml                          |  76 ----
 .../java/org/apache/skywalking/e2e/ClusterE2E.java | 277 ------------
 .../test/java/org/apache/skywalking/e2e/GOE2E.java | 315 --------------
 .../java/org/apache/skywalking/e2e/GatewayE2E.java | 268 ------------
 .../java/org/apache/skywalking/e2e/LuaE2E.java     | 303 -------------
 .../java/org/apache/skywalking/e2e/NodeJSE2E.java  | 288 -------------
 .../java/org/apache/skywalking/e2e/PHPE2E.java     | 295 -------------
 .../java/org/apache/skywalking/e2e/PythonE2E.java  | 289 -------------
 .../java/org/apache/skywalking/e2e/SO11yE2E.java   | 130 ------
 .../org/apache/skywalking/e2e/alarm/AlarmE2E.java  | 114 -----
 .../apache/skywalking/e2e/base/SkyWalkingE2E.java  |  42 --
 .../skywalking/e2e/base/SkyWalkingTestAdapter.java |  54 ---
 .../skywalking/e2e/base/TrafficController.java     |  74 ----
 .../apache/skywalking/e2e/browser/BrowserE2E.java  | 290 -------------
 .../e2e/browser/BrowserWithClientJSE2E.java        | 233 ----------
 .../apache/skywalking/e2e/compat/CompatE2E.java    | 141 ------
 .../org/apache/skywalking/e2e/event/EventE2E.java  |  66 ---
 .../org/apache/skywalking/e2e/kafka/KafkaE2E.java  | 207 ---------
 .../apache/skywalking/e2e/kafka/KafkaLogE2E.java   | 155 -------
 .../apache/skywalking/e2e/kafka/KafkaMeterE2E.java | 118 -----
 .../skywalking/e2e/kafka/KafkaProfileE2E.java      | 275 ------------
 .../apache/skywalking/e2e/log/FluentBitE2E.java    |  75 ----
 .../java/org/apache/skywalking/e2e/log/LogE2E.java | 150 -------
 .../org/apache/skywalking/e2e/mesh/ALSE2E.java     | 267 ------------
 .../skywalking/e2e/mesh/MetricsServiceE2E.java     | 197 ---------
 .../org/apache/skywalking/e2e/meter/MeterE2E.java  | 115 -----
 .../apache/skywalking/e2e/profile/ProfileE2E.java  | 273 ------------
 .../skywalking/e2e/promOtelVM/PromOtelVME2E.java   | 115 -----
 .../apache/skywalking/e2e/simple/SimpleE2E.java    | 172 --------
 .../skywalking/e2e/simple/SimpleE2EBase.java       | 202 ---------
 .../apache/skywalking/e2e/storage/StorageE2E.java  | 431 -------------------
 .../apache/skywalking/e2e/ttl/StorageTTLE2E.java   | 238 -----------
 .../apache/skywalking/e2e/zabbix/ZabbixE2E.java    | 102 -----
 .../src/test/resources/expected/alarm/services.yml |  18 -
 .../alarm/silence-after-graphql-critical.yml       |  41 --
 .../expected/alarm/silence-after-graphql-warn.yml  |  41 --
 .../expected/alarm/silence-after-webhook.yml       |  69 ---
 .../alarm/silence-before-graphql-critical.yml      |  29 --
 .../expected/alarm/silence-before-graphql-warn.yml |  29 --
 .../expected/alarm/silence-before-webhook.yml      |  42 --
 .../resources/expected/als/endpoints-details.yml   |  18 -
 .../expected/als/endpoints-productpage.yml         |  18 -
 .../resources/expected/als/endpoints-ratings.yml   |  18 -
 .../resources/expected/als/endpoints-reviews.yml   |  18 -
 .../src/test/resources/expected/als/instances.yml  |  18 -
 .../src/test/resources/expected/als/services.yml   |  28 --
 .../src/test/resources/expected/als/topo.yml       |  68 ---
 .../expected/browser-with-client-js/error-log.yml  |  23 -
 .../expected/browser-with-client-js/page-path.yml  |  18 -
 .../expected/browser-with-client-js/services.yml   |  18 -
 .../expected/browser-with-client-js/topo.yml       |  39 --
 .../expected/browser-with-client-js/traces.yml     |  32 --
 .../expected/browser-with-client-js/version.yml    |  18 -
 .../test/resources/expected/browser/error-log.yml  |  28 --
 .../test/resources/expected/browser/page-path.yml  |  18 -
 .../test/resources/expected/browser/services.yml   |  18 -
 .../test/resources/expected/browser/version.yml    |  18 -
 .../test/resources/expected/cluster/endpoints.yml  |  18 -
 .../test/resources/expected/cluster/instances.yml  |  33 --
 .../expected/cluster/providerInstances.yml         |  50 ---
 .../expected/cluster/serviceInstanceTopo.yml       |  41 --
 .../test/resources/expected/cluster/services.yml   |  21 -
 .../src/test/resources/expected/cluster/topo.yml   |  38 --
 .../src/test/resources/expected/cluster/traces.yml |  24 --
 .../src/test/resources/expected/event/events.yml   |  30 --
 .../test/resources/expected/gateway/endpoints.yml  |  18 -
 .../test/resources/expected/gateway/instances.yml  |  33 --
 .../expected/gateway/providerInstances.yml         |  50 ---
 .../expected/gateway/serviceInstanceTopo.yml       |  41 --
 .../test/resources/expected/gateway/services.yml   |  21 -
 .../src/test/resources/expected/gateway/topo.yml   |  44 --
 .../src/test/resources/expected/gateway/traces.yml |  24 --
 .../resources/expected/go/endpoints-consumer.yml   |  18 -
 .../resources/expected/go/endpoints-go2sky.yml     |  18 -
 .../resources/expected/go/endpoints-provider.yml   |  18 -
 .../test/resources/expected/go/instances-go.yml    |  27 --
 .../test/resources/expected/go/instances-java.yml  |  33 --
 .../resources/expected/go/serviceInstanceTopo.yml  |  35 --
 .../src/test/resources/expected/go/services.yml    |  22 -
 .../src/test/resources/expected/go/topo.yml        |  59 ---
 .../src/test/resources/expected/go/traces.yml      |  24 --
 .../src/test/resources/expected/log/endpoints.yml  |  18 -
 .../src/test/resources/expected/log/instances.yml  |  18 -
 .../src/test/resources/expected/log/logs.yml       |  27 --
 .../src/test/resources/expected/log/services.yml   |  18 -
 .../test/resources/expected/lua/endpoints-end.yml  |  19 -
 .../resources/expected/lua/endpoints-entry.yml     |  18 -
 .../src/test/resources/expected/lua/instances.yml  |  33 --
 .../test/resources/expected/lua/nginxEndpoints.yml |  21 -
 .../test/resources/expected/lua/nginxInstances.yml |  18 -
 .../resources/expected/lua/serviceInstanceTopo.yml |  35 --
 .../src/test/resources/expected/lua/services.yml   |  22 -
 .../src/test/resources/expected/lua/topo.yml       |  59 ---
 .../src/test/resources/expected/lua/traces.yml     |  42 --
 .../test/resources/expected/meter/instances.yml    |  18 -
 .../src/test/resources/expected/meter/services.yml |  18 -
 .../instances-istio-dp-e2e-reviews.yml             |  22 -
 .../expected/metricsservice/instances.yml          |  18 -
 .../resources/expected/metricsservice/services.yml |  28 --
 .../resources/expected/metricsservice/topo.yml     |  39 --
 .../expected/nodejs/consumer-endpoints.yml         |  18 -
 .../expected/nodejs/consumer-instance-topo.yml     |  33 --
 .../expected/nodejs/consumer-instances.yml         |  18 -
 .../expected/nodejs/provider-endpoints.yml         |  18 -
 .../expected/nodejs/provider-instances.yml         |  18 -
 .../test/resources/expected/nodejs/services.yml    |  22 -
 .../src/test/resources/expected/nodejs/topo.yml    |  50 ---
 .../src/test/resources/expected/nodejs/traces.yml  |  24 --
 .../src/test/resources/expected/php/endpoints.yml  |  21 -
 .../src/test/resources/expected/php/instances.yml  |  27 --
 .../resources/expected/php/serviceInstanceTopo.yml |  35 --
 .../src/test/resources/expected/php/services.yml   |  20 -
 .../resources/expected/php/shadowEndpoints.yml     |  21 -
 .../resources/expected/php/shadowInstances.yml     |  27 --
 .../src/test/resources/expected/php/topo.yml       |  44 --
 .../src/test/resources/expected/php/traces.yml     |  32 --
 .../test/resources/expected/profile/endpoints.yml  |  18 -
 .../test/resources/expected/profile/finished.yml   |  34 --
 .../test/resources/expected/profile/instances.yml  |  33 --
 .../test/resources/expected/profile/notified.yml   |  29 --
 .../expected/profile/profileAnayzation.yml         |  28 --
 .../resources/expected/profile/profileSegment.yml  |  81 ----
 .../resources/expected/profile/profileSegments.yml |  24 --
 .../test/resources/expected/profile/services.yml   |  18 -
 .../resources/expected/promOtelVM/services.yml     |  18 -
 .../expected/python/consumer-endpoints.yml         |  21 -
 .../expected/python/consumer-instance-topo.yml     |  33 --
 .../expected/python/consumer-instances.yml         |  18 -
 .../expected/python/provider-endpoints.yml         |  18 -
 .../expected/python/provider-instances.yml         |  18 -
 .../expected/python/provider-kafka-endpoints.yml   |  18 -
 .../expected/python/provider-kafka-instances.yml   |  18 -
 .../test/resources/expected/python/services.yml    |  24 --
 .../src/test/resources/expected/python/topo.yml    |  60 ---
 .../src/test/resources/expected/python/traces.yml  |  40 --
 .../test/resources/expected/simple/endpoints.yml   |  18 -
 .../test/resources/expected/simple/instances.yml   |  18 -
 .../expected/simple/serviceInstanceTopo.yml        |  34 --
 .../test/resources/expected/simple/services.yml    |  18 -
 .../resources/expected/simple/so11y-instances.yml  |  18 -
 .../resources/expected/simple/so11y-services.yml   |  18 -
 .../src/test/resources/expected/simple/topo.yml    |  39 --
 .../src/test/resources/expected/simple/traces.yml  |  24 --
 .../storage/dashboardConfiguration-change.yml      |  21 -
 .../storage/dashboardConfiguration-disable.yml     |  21 -
 .../expected/storage/dashboardConfiguration.yml    |  21 -
 .../test/resources/expected/storage/endpoints.yml  |  18 -
 .../test/resources/expected/storage/instances.yml  |  33 --
 .../expected/storage/serviceInstanceTopo.yml       |  34 --
 .../test/resources/expected/storage/services.yml   |  18 -
 .../src/test/resources/expected/storage/topo.yml   |  39 --
 .../src/test/resources/expected/storage/traces.yml |  24 --
 .../test/resources/expected/zabbix/services.yml    |  18 -
 .../src/test/resources/junit-platform.properties   |  17 -
 test/e2e/e2e-test/src/test/resources/logback.xml   |  33 --
 .../test/resources/metadata-service-mapping.yaml   |  17 -
 test/e2e/lombok.config                             |  16 -
 test/e2e/pom.xml                                   | 203 ---------
 544 files changed, 30 insertions(+), 27304 deletions(-)

diff --git a/.github/workflows/ci-it.yaml b/.github/workflows/ci-it.yaml
index 35c0f01..036b4dc 100644
--- a/.github/workflows/ci-it.yaml
+++ b/.github/workflows/ci-it.yaml
@@ -48,7 +48,7 @@ jobs:
     name: Build and Test / Java ${{ matrix.java-version }} / ${{ matrix.os }}
     needs: [ check-license-header ]
     runs-on: ${{ matrix.os }}-latest
-    timeout-minutes: 60
+    timeout-minutes: 90
     strategy:
       matrix:
         os: [ ubuntu, macos, windows ]
diff --git a/.gitmodules b/.gitmodules
index 45446cd..7031995 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,9 +7,6 @@
 [submodule "skywalking-ui"]
 	path = skywalking-ui
 	url = https://github.com/apache/skywalking-rocketbot-ui.git
-[submodule "test/e2e/e2e-protocol/src/main/proto"]
-	path = test/e2e/e2e-protocol/src/main/proto
-	url = https://github.com/apache/skywalking-data-collect-protocol.git
 [submodule "test/e2e-v2/java-test-service/e2e-protocol/src/main/proto"]
 	path = test/e2e-v2/java-test-service/e2e-protocol/src/main/proto
 	url = git@github.com:apache/skywalking-data-collect-protocol.git
diff --git a/CHANGES.md b/CHANGES.md
index 5c57ebd..27c28a7 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -7,27 +7,7 @@ Release Notes.
 
 #### Project
 
-* Replace e2e cases to e2e-v2:
-  - Simple: JDK, Auth, SSL, mTLS
-  - Lua Nginx
-  - SelfObservability
-  - Gateway
-  - Meter
-  - Nodejs
-  - PHP
-  - VM: Prometheus Node Exporter, Zabbix
-  - go2sky
-  - log
-  - Python
-  - Storage
-  - Cluster
-  - Event
-  - Profile
-  - Kafka: Base, Meter, Log, Profile
-  - Client-JS
-  - Istio: ALS, Metrics
-  - TTL
-  - Alarm
+* E2E tests immigrate to e2e-v2.
 * Support JDK 16 and 17.
 
 #### OAP Server
diff --git a/docs/en/guides/README.md b/docs/en/guides/README.md
index 285b1ce..29cd48a 100755
--- a/docs/en/guides/README.md
+++ b/docs/en/guides/README.md
@@ -50,16 +50,15 @@ Since version 6.3.0, we have introduced more automatic tests to perform software
 > End-to-end testing is a methodology used to test whether the flow of an application is performing as designed from start to finish.
  The purpose of carrying out end-to-end tests is to identify system dependencies and to ensure that the right information is passed between various system components and systems.
 
-The E2E test involves some/all of the OAP server, storage, coordinator, webapp, and the instrumented services, all of which are orchestrated by `docker-compose`. Besides, there is a test controller (JUnit test) running outside of the container that sends traffic to the instrumented service,
-and then verifies the corresponding results after those requests have been made through GraphQL API of the SkyWalking Web App.
+The E2E test involves some/all of the OAP server, storage, coordinator, webapp, and the instrumented services, all of which are orchestrated by `docker-compose` or `KinD`. 
+Since version 8.9.0, we immigrate to e2e-v2 which leverage [skywalking-infra-e2e](https://github.com/apache/skywalking-infra-e2e) and [skywalking-cli](https://github.com/apache/skywalking-cli) to do the whole e2e process.
+`skywalking-infra-e2e` is used to control the e2e process and `skywalking-cli` is used to interact with the OAP such as request and get response metris from OAP.
 
 #### Writing E2E Cases
 
-- Set up the environment in IntelliJ IDEA
-
-The E2E test is a separate project under the SkyWalking root directory and the IDEA cannot recognize it by default. Right click
-on the file `test/e2e/pom.xml` and click `Add as Maven Project`. We recommend opening the directory `skywalking/test/e2e`
-in a separate IDE window for better experience, since there may be shaded classes issues.
+- Set up the environment
+1. Set up `skywalking-infra-e2e`
+1. Set up `skywalking-cli`, `yq` (generally these 2 are enough) and others tools if your cases need. Can reference the script under `skywalking/test/e2e-v2/script/prepare/setup-e2e-shell`.
 
 - Orchestrate the components
 
@@ -71,17 +70,15 @@ To make the orchestration process easier, we're using a [docker-compose](https:/
 Follow these steps:
 1. Decide what (and how many) containers will be needed. For example, for cluster testing, you'll need > 2 OAP nodes, coordinators (e.g. zookeeper), storage (e.g. ElasticSearch), and instrumented services;
 1. Define the containers in `docker-compose.yml`, and carefully specify the dependencies, starting orders, and most importantly, link them together, e.g. set the correct OAP address on the agent end, and set the correct coordinator address in OAP, etc.
-1. Write (or hopefully reuse) the test codes to verify that the results are correct.
-
-As for the final step, we have a user-friendly framework to help you get started more quickly. This framework provides the annotation `@DockerCompose("docker-compose.yml")` to load/parse and start up all the containers in the proper order.
-`@ContainerHost`/`@ContainerPort` obtains the real host/port of the container. `@ContainerHostAndPort` obtains both. `@DockerContainer` obtains the running container.
-
-- Write test controller
+1. Define the e2e case [config](https://skywalking.apache.org/docs/skywalking-infra-e2e/latest/en/setup/configuration-file/) in `e2e.yaml`.
+1. Write the expected data(yml) for verify.
 
-Put it simply, test controllers are tests that can be bound to the maven `integration-test/verify` phase.
-They send **design** requests to the instrumented services, and anticipate corresponding traces/metrics/metadata from the SkyWalking webapp GraphQL API.
+- [Run e2e test](https://skywalking.apache.org/docs/skywalking-infra-e2e/latest/en/setup/run-e2e-tests/)
 
-In the test framework, we provide a `TrafficController` that periodically sends traffic data to the instrumented services. You can simply enable it by providing a url and traffic data. Refer to [this](../../../test/e2e/e2e-test/src/test/java/org/apache/skywalking/e2e/base/TrafficController.java).
+All e2e cases should under `skywalking/test/e2e-v2/cases`. You could execute e2e run command in `skywalking/` e.g.
+```
+e2e run -c test/e2e-v2/cases/alarm/h2/e2e.yaml
+```
 
 - Troubleshooting
 
diff --git a/docs/en/setup/backend/backend-vm-monitoring.md b/docs/en/setup/backend/backend-vm-monitoring.md
index 57e19e7..8ce6d32 100644
--- a/docs/en/setup/backend/backend-vm-monitoring.md
+++ b/docs/en/setup/backend/backend-vm-monitoring.md
@@ -12,7 +12,7 @@ We define the VM entity as a `Service` in OAP, and use `vm::` as a prefix to ide
 ## Setup
 
 1. Setup [Prometheus node-exporter](https://prometheus.io/docs/guides/node-exporter/).
-2. Setup [OpenTelemetry Collector ](https://opentelemetry.io/docs/collector/). This is an example for OpenTelemetry Collector configuration [otel-collector-config.yaml](../../../../test/e2e/e2e-test/docker/promOtelVM/otel-collector-config.yaml).
+2. Setup [OpenTelemetry Collector ](https://opentelemetry.io/docs/collector/). This is an example for OpenTelemetry Collector configuration [otel-collector-config.yaml](../../../../test/e2e-v2/cases/vm/prometheus-node-exporter/otel-collector-config.yaml).
 3. Config SkyWalking [OpenTelemetry receiver](backend-receivers.md#opentelemetry-receiver).
    
 ## Supported Metrics
diff --git a/docs/en/setup/backend/backend-zabbix.md b/docs/en/setup/backend/backend-zabbix.md
index 97d0b19..a2b2c34 100644
--- a/docs/en/setup/backend/backend-zabbix.md
+++ b/docs/en/setup/backend/backend-zabbix.md
@@ -24,7 +24,7 @@ are located at `$CLASSPATH/zabbix-rules`.
 
 The file is written in YAML format, defined by the scheme described below. Square brackets indicate that a parameter is optional.
 
-An example for Zabbix agent configuration could be found [here](../../../../test/e2e/e2e-test/docker/zabbix/zabbix_agentd.conf).
+An example for Zabbix agent configuration could be found [here](../../../../test/e2e-v2/cases/vm/zabbix/zabbix_agentd.conf).
 You could find details on Zabbix agent items from [Zabbix Agent documentation](https://www.zabbix.com/documentation/current/manual/config/items/itemtypes/zabbix_agent).
 
 ### Configuration file
diff --git a/docs/en/setup/backend/log-analyzer.md b/docs/en/setup/backend/log-analyzer.md
index 71aaeb6..9c86e82 100644
--- a/docs/en/setup/backend/log-analyzer.md
+++ b/docs/en/setup/backend/log-analyzer.md
@@ -14,20 +14,20 @@ or [HTTP JSON array](../../protocols/Log-Data-Protocol.md#http-api).
 Filebeat supports using Kafka to transport logs. Open [kafka-fetcher](backend-fetcher.md#kafka-fetcher) and enable configs `enableNativeJsonLog`.
 
 Take the following filebeat config yaml as an example to set up Filebeat:
-- [filebeat.yml](../../../../test/e2e/e2e-test/docker/kafka/filebeat.yml)
+- [filebeat.yml](../../../../test/e2e-v2/cases/kafka/log/filebeat.yml)
 
 #### Fluentd
 Fluentd supports using Kafka to transport logs. Open [kafka-fetcher](backend-fetcher.md#kafka-fetcher) and enable configs `enableNativeJsonLog`.
 
 Take the following fluentd config file as an example to set up Fluentd:
-- [fluentd.conf](../../../../test/e2e/e2e-test/docker/kafka/fluentd.conf)
+- [fluentd.conf](../../../../test/e2e-v2/cases/kafka/log/fluentd.conf)
 
 #### Fluent-bit
 Fluent-bit sends logs to OAP directly through HTTP(rest port). 
 Point the output address to `restHost`:`restPort` of `receiver-sharing-server` or `core`(if `receiver-sharing-server` is inactivated)
 
 Take the following fluent-bit config files as an example to set up Fluent-bit:
-- [fluent-bit.conf](../../../../test/e2e/e2e-test/docker/log/fluent-bit)
+- [fluent-bit.conf](../../../../test/e2e-v2/cases/log/fluent-bit/fluent-bit.conf)
 
 ### Java agent's toolkits
 Java agent provides toolkits for 
@@ -47,9 +47,9 @@ Java agent provides toolkits for
 to report logs through files with automatically injected trace context.
 
 Log framework config examples:
-- [log4j1.x fileAppender](../../../../test/e2e/e2e-service-provider/src/main/resources/log4j.properties)
-- [log4j2.x fileAppender](../../../../test/e2e/e2e-service-provider/src/main/resources/log4j2.xml)
-- [logback fileAppender](../../../../test/e2e/e2e-service-provider/src/main/resources/logback.xml)
+- [log4j1.x fileAppender](../../../../test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/log4j.properties)
+- [log4j2.x fileAppender](../../../../test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/log4j2.xml)
+- [logback fileAppender](../../../../test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/logback.xml)
 
 ### Python agent log reporter
 
diff --git a/test/e2e-v2/cases/alarm/es/e2e.yaml b/test/e2e-v2/cases/alarm/es/e2e.yaml
index 47c55f2..843d217 100644
--- a/test/e2e-v2/cases/alarm/es/e2e.yaml
+++ b/test/e2e-v2/cases/alarm/es/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/alarm/h2/e2e.yaml b/test/e2e-v2/cases/alarm/h2/e2e.yaml
index 47c55f2..843d217 100644
--- a/test/e2e-v2/cases/alarm/h2/e2e.yaml
+++ b/test/e2e-v2/cases/alarm/h2/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/alarm/influxdb/e2e.yaml b/test/e2e-v2/cases/alarm/influxdb/e2e.yaml
index 47c55f2..843d217 100644
--- a/test/e2e-v2/cases/alarm/influxdb/e2e.yaml
+++ b/test/e2e-v2/cases/alarm/influxdb/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/alarm/mysql/e2e.yaml b/test/e2e-v2/cases/alarm/mysql/e2e.yaml
index 47c55f2..843d217 100644
--- a/test/e2e-v2/cases/alarm/mysql/e2e.yaml
+++ b/test/e2e-v2/cases/alarm/mysql/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/alarm/postgres/e2e.yaml b/test/e2e-v2/cases/alarm/postgres/e2e.yaml
index 47c55f2..843d217 100644
--- a/test/e2e-v2/cases/alarm/postgres/e2e.yaml
+++ b/test/e2e-v2/cases/alarm/postgres/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/cluster/zk/es/e2e.yaml b/test/e2e-v2/cases/cluster/zk/es/e2e.yaml
index b311181..89dedd8 100644
--- a/test/e2e-v2/cases/cluster/zk/es/e2e.yaml
+++ b/test/e2e-v2/cases/cluster/zk/es/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/cluster/zk/influxdb/e2e.yaml b/test/e2e-v2/cases/cluster/zk/influxdb/e2e.yaml
index b311181..89dedd8 100644
--- a/test/e2e-v2/cases/cluster/zk/influxdb/e2e.yaml
+++ b/test/e2e-v2/cases/cluster/zk/influxdb/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/cluster/zk/mysql/e2e.yaml b/test/e2e-v2/cases/cluster/zk/mysql/e2e.yaml
index b311181..89dedd8 100644
--- a/test/e2e-v2/cases/cluster/zk/mysql/e2e.yaml
+++ b/test/e2e-v2/cases/cluster/zk/mysql/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/event/es/e2e.yaml b/test/e2e-v2/cases/event/es/e2e.yaml
index 91ec5d4..80d4f81 100644
--- a/test/e2e-v2/cases/event/es/e2e.yaml
+++ b/test/e2e-v2/cases/event/es/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/event/h2/e2e.yaml b/test/e2e-v2/cases/event/h2/e2e.yaml
index 91ec5d4..80d4f81 100644
--- a/test/e2e-v2/cases/event/h2/e2e.yaml
+++ b/test/e2e-v2/cases/event/h2/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/event/influxdb/e2e.yaml b/test/e2e-v2/cases/event/influxdb/e2e.yaml
index 91ec5d4..80d4f81 100644
--- a/test/e2e-v2/cases/event/influxdb/e2e.yaml
+++ b/test/e2e-v2/cases/event/influxdb/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/event/mysql/e2e.yaml b/test/e2e-v2/cases/event/mysql/e2e.yaml
index 91ec5d4..80d4f81 100644
--- a/test/e2e-v2/cases/event/mysql/e2e.yaml
+++ b/test/e2e-v2/cases/event/mysql/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/gateway/e2e.yaml b/test/e2e-v2/cases/gateway/e2e.yaml
index 0b3c73c..88fa85c 100644
--- a/test/e2e-v2/cases/gateway/e2e.yaml
+++ b/test/e2e-v2/cases/gateway/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/go/e2e.yaml b/test/e2e-v2/cases/go/e2e.yaml
index 57a10fe..e3669b8 100644
--- a/test/e2e-v2/cases/go/e2e.yaml
+++ b/test/e2e-v2/cases/go/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/kafka/log/e2e.yaml b/test/e2e-v2/cases/kafka/log/e2e.yaml
index d0d324a..28e6f2a 100644
--- a/test/e2e-v2/cases/kafka/log/e2e.yaml
+++ b/test/e2e-v2/cases/kafka/log/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/kafka/meter/e2e.yaml b/test/e2e-v2/cases/kafka/meter/e2e.yaml
index dea6f93..e59b7b9 100644
--- a/test/e2e-v2/cases/kafka/meter/e2e.yaml
+++ b/test/e2e-v2/cases/kafka/meter/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/kafka/profile/e2e.yaml b/test/e2e-v2/cases/kafka/profile/e2e.yaml
index 9be10b3..e08a36f 100644
--- a/test/e2e-v2/cases/kafka/profile/e2e.yaml
+++ b/test/e2e-v2/cases/kafka/profile/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/kafka/simple-so11y/e2e.yaml b/test/e2e-v2/cases/kafka/simple-so11y/e2e.yaml
index 229f30a..520c2f0 100644
--- a/test/e2e-v2/cases/kafka/simple-so11y/e2e.yaml
+++ b/test/e2e-v2/cases/kafka/simple-so11y/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/log/es/e2e.yaml b/test/e2e-v2/cases/log/es/e2e.yaml
index 5be83f6..7256028 100644
--- a/test/e2e-v2/cases/log/es/e2e.yaml
+++ b/test/e2e-v2/cases/log/es/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/log/fluent-bit/e2e.yaml b/test/e2e-v2/cases/log/fluent-bit/e2e.yaml
index 5be83f6..7256028 100644
--- a/test/e2e-v2/cases/log/fluent-bit/e2e.yaml
+++ b/test/e2e-v2/cases/log/fluent-bit/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/log/h2/e2e.yaml b/test/e2e-v2/cases/log/h2/e2e.yaml
index 5be83f6..7256028 100644
--- a/test/e2e-v2/cases/log/h2/e2e.yaml
+++ b/test/e2e-v2/cases/log/h2/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/log/influxdb/e2e.yaml b/test/e2e-v2/cases/log/influxdb/e2e.yaml
index 5be83f6..7256028 100644
--- a/test/e2e-v2/cases/log/influxdb/e2e.yaml
+++ b/test/e2e-v2/cases/log/influxdb/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/log/mysql/e2e.yaml b/test/e2e-v2/cases/log/mysql/e2e.yaml
index 5be83f6..7256028 100644
--- a/test/e2e-v2/cases/log/mysql/e2e.yaml
+++ b/test/e2e-v2/cases/log/mysql/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/log/postgres/e2e.yaml b/test/e2e-v2/cases/log/postgres/e2e.yaml
index 5be83f6..7256028 100644
--- a/test/e2e-v2/cases/log/postgres/e2e.yaml
+++ b/test/e2e-v2/cases/log/postgres/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/lua/e2e.yaml b/test/e2e-v2/cases/lua/e2e.yaml
index 14404d4..ddbd1c6 100644
--- a/test/e2e-v2/cases/lua/e2e.yaml
+++ b/test/e2e-v2/cases/lua/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/meter/e2e.yaml b/test/e2e-v2/cases/meter/e2e.yaml
index 26b47c3..b7c3fab 100644
--- a/test/e2e-v2/cases/meter/e2e.yaml
+++ b/test/e2e-v2/cases/meter/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/nodejs/e2e.yaml b/test/e2e-v2/cases/nodejs/e2e.yaml
index 9f84214..51352be 100644
--- a/test/e2e-v2/cases/nodejs/e2e.yaml
+++ b/test/e2e-v2/cases/nodejs/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/php/e2e.yaml b/test/e2e-v2/cases/php/e2e.yaml
index db7edc2..a5c7026 100644
--- a/test/e2e-v2/cases/php/e2e.yaml
+++ b/test/e2e-v2/cases/php/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/profile/es/e2e.yaml b/test/e2e-v2/cases/profile/es/e2e.yaml
index 94450bd..4f25875 100644
--- a/test/e2e-v2/cases/profile/es/e2e.yaml
+++ b/test/e2e-v2/cases/profile/es/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/profile/h2/e2e.yaml b/test/e2e-v2/cases/profile/h2/e2e.yaml
index 94450bd..4f25875 100644
--- a/test/e2e-v2/cases/profile/h2/e2e.yaml
+++ b/test/e2e-v2/cases/profile/h2/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/profile/influxdb/e2e.yaml b/test/e2e-v2/cases/profile/influxdb/e2e.yaml
index 94450bd..4f25875 100644
--- a/test/e2e-v2/cases/profile/influxdb/e2e.yaml
+++ b/test/e2e-v2/cases/profile/influxdb/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/profile/mysql/e2e.yaml b/test/e2e-v2/cases/profile/mysql/e2e.yaml
index 94450bd..4f25875 100644
--- a/test/e2e-v2/cases/profile/mysql/e2e.yaml
+++ b/test/e2e-v2/cases/profile/mysql/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/python/e2e.yaml b/test/e2e-v2/cases/python/e2e.yaml
index c0f3e63..ef193dc 100644
--- a/test/e2e-v2/cases/python/e2e.yaml
+++ b/test/e2e-v2/cases/python/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/simple/auth/e2e.yaml b/test/e2e-v2/cases/simple/auth/e2e.yaml
index 2eb370e..eb4b265 100644
--- a/test/e2e-v2/cases/simple/auth/e2e.yaml
+++ b/test/e2e-v2/cases/simple/auth/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/simple/jdk/e2e.yaml b/test/e2e-v2/cases/simple/jdk/e2e.yaml
index 2eb370e..eb4b265 100644
--- a/test/e2e-v2/cases/simple/jdk/e2e.yaml
+++ b/test/e2e-v2/cases/simple/jdk/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/simple/mtls/e2e.yaml b/test/e2e-v2/cases/simple/mtls/e2e.yaml
index 2eb370e..eb4b265 100644
--- a/test/e2e-v2/cases/simple/mtls/e2e.yaml
+++ b/test/e2e-v2/cases/simple/mtls/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/simple/ssl/e2e.yaml b/test/e2e-v2/cases/simple/ssl/e2e.yaml
index 2eb370e..eb4b265 100644
--- a/test/e2e-v2/cases/simple/ssl/e2e.yaml
+++ b/test/e2e-v2/cases/simple/ssl/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/so11y/e2e.yaml b/test/e2e-v2/cases/so11y/e2e.yaml
index c2f00fb..5d3b93e 100644
--- a/test/e2e-v2/cases/so11y/e2e.yaml
+++ b/test/e2e-v2/cases/so11y/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
diff --git a/test/e2e-v2/cases/storage/es/e2e.yaml b/test/e2e-v2/cases/storage/es/e2e.yaml
index f5af31c..c86d27e 100644
--- a/test/e2e-v2/cases/storage/es/e2e.yaml
+++ b/test/e2e-v2/cases/storage/es/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
@@ -128,4 +126,4 @@ verify:
           swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls --order startTime --service-name "e2e-service-provider" --endpoint-name "POST:/users" \
             | yq e '.traces[0].traceids[0]' - \
         )
-      expected: ../expected/trace-users-detail.yml
\ No newline at end of file
+      expected: ../expected/trace-users-detail.yml
diff --git a/test/e2e-v2/cases/storage/h2/e2e.yaml b/test/e2e-v2/cases/storage/h2/e2e.yaml
index f5af31c..c86d27e 100644
--- a/test/e2e-v2/cases/storage/h2/e2e.yaml
+++ b/test/e2e-v2/cases/storage/h2/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
@@ -128,4 +126,4 @@ verify:
           swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls --order startTime --service-name "e2e-service-provider" --endpoint-name "POST:/users" \
             | yq e '.traces[0].traceids[0]' - \
         )
-      expected: ../expected/trace-users-detail.yml
\ No newline at end of file
+      expected: ../expected/trace-users-detail.yml
diff --git a/test/e2e-v2/cases/storage/influxdb/e2e.yaml b/test/e2e-v2/cases/storage/influxdb/e2e.yaml
index f5af31c..c86d27e 100644
--- a/test/e2e-v2/cases/storage/influxdb/e2e.yaml
+++ b/test/e2e-v2/cases/storage/influxdb/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
@@ -128,4 +126,4 @@ verify:
           swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls --order startTime --service-name "e2e-service-provider" --endpoint-name "POST:/users" \
             | yq e '.traces[0].traceids[0]' - \
         )
-      expected: ../expected/trace-users-detail.yml
\ No newline at end of file
+      expected: ../expected/trace-users-detail.yml
diff --git a/test/e2e-v2/cases/storage/mysql/e2e.yaml b/test/e2e-v2/cases/storage/mysql/e2e.yaml
index f5af31c..c86d27e 100644
--- a/test/e2e-v2/cases/storage/mysql/e2e.yaml
+++ b/test/e2e-v2/cases/storage/mysql/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
@@ -128,4 +126,4 @@ verify:
           swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls --order startTime --service-name "e2e-service-provider" --endpoint-name "POST:/users" \
             | yq e '.traces[0].traceids[0]' - \
         )
-      expected: ../expected/trace-users-detail.yml
\ No newline at end of file
+      expected: ../expected/trace-users-detail.yml
diff --git a/test/e2e-v2/cases/storage/opensearch/e2e.yaml b/test/e2e-v2/cases/storage/opensearch/e2e.yaml
index f5af31c..c86d27e 100644
--- a/test/e2e-v2/cases/storage/opensearch/e2e.yaml
+++ b/test/e2e-v2/cases/storage/opensearch/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
@@ -128,4 +126,4 @@ verify:
           swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls --order startTime --service-name "e2e-service-provider" --endpoint-name "POST:/users" \
             | yq e '.traces[0].traceids[0]' - \
         )
-      expected: ../expected/trace-users-detail.yml
\ No newline at end of file
+      expected: ../expected/trace-users-detail.yml
diff --git a/test/e2e-v2/cases/storage/postgres/e2e.yaml b/test/e2e-v2/cases/storage/postgres/e2e.yaml
index f5af31c..c86d27e 100644
--- a/test/e2e-v2/cases/storage/postgres/e2e.yaml
+++ b/test/e2e-v2/cases/storage/postgres/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
@@ -128,4 +126,4 @@ verify:
           swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls --order startTime --service-name "e2e-service-provider" --endpoint-name "POST:/users" \
             | yq e '.traces[0].traceids[0]' - \
         )
-      expected: ../expected/trace-users-detail.yml
\ No newline at end of file
+      expected: ../expected/trace-users-detail.yml
diff --git a/test/e2e-v2/cases/storage/tidb/e2e.yaml b/test/e2e-v2/cases/storage/tidb/e2e.yaml
index f5af31c..c86d27e 100644
--- a/test/e2e-v2/cases/storage/tidb/e2e.yaml
+++ b/test/e2e-v2/cases/storage/tidb/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 trigger:
   action: http
@@ -128,4 +126,4 @@ verify:
           swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls --order startTime --service-name "e2e-service-provider" --endpoint-name "POST:/users" \
             | yq e '.traces[0].traceids[0]' - \
         )
-      expected: ../expected/trace-users-detail.yml
\ No newline at end of file
+      expected: ../expected/trace-users-detail.yml
diff --git a/test/e2e-v2/cases/ttl/es/e2e.yaml b/test/e2e-v2/cases/ttl/es/e2e.yaml
index 828a7d3..424cdd6 100644
--- a/test/e2e-v2/cases/ttl/es/e2e.yaml
+++ b/test/e2e-v2/cases/ttl/es/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/ttl/influxdb/e2e.yaml b/test/e2e-v2/cases/ttl/influxdb/e2e.yaml
index 828a7d3..424cdd6 100644
--- a/test/e2e-v2/cases/ttl/influxdb/e2e.yaml
+++ b/test/e2e-v2/cases/ttl/influxdb/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/ttl/postgresql/e2e.yaml b/test/e2e-v2/cases/ttl/postgresql/e2e.yaml
index 828a7d3..424cdd6 100644
--- a/test/e2e-v2/cases/ttl/postgresql/e2e.yaml
+++ b/test/e2e-v2/cases/ttl/postgresql/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/ttl/tidb/e2e.yaml b/test/e2e-v2/cases/ttl/tidb/e2e.yaml
index 828a7d3..424cdd6 100644
--- a/test/e2e-v2/cases/ttl/tidb/e2e.yaml
+++ b/test/e2e-v2/cases/ttl/tidb/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/vm/prometheus-node-exporter/e2e.yaml b/test/e2e-v2/cases/vm/prometheus-node-exporter/e2e.yaml
index b9a8e22..3288d67 100644
--- a/test/e2e-v2/cases/vm/prometheus-node-exporter/e2e.yaml
+++ b/test/e2e-v2/cases/vm/prometheus-node-exporter/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e-v2/cases/vm/zabbix/e2e.yaml b/test/e2e-v2/cases/vm/zabbix/e2e.yaml
index 21dceed..96cd794 100644
--- a/test/e2e-v2/cases/vm/zabbix/e2e.yaml
+++ b/test/e2e-v2/cases/vm/zabbix/e2e.yaml
@@ -25,8 +25,6 @@ setup:
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install etcdctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl
 
 verify:
   retry:
diff --git a/test/e2e/e2e-common/pom.xml b/test/e2e/e2e-common/pom.xml
deleted file mode 100644
index 18c5cb1..0000000
--- a/test/e2e/e2e-common/pom.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ 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.
-  ~
-  -->
-
-<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>
-        <artifactId>apache-skywalking-e2e</artifactId>
-        <groupId>org.apache.skywalking</groupId>
-        <version>1.0.0</version>
-    </parent>
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>e2e-common</artifactId>
-
-    <description>Some fundamental classes used in E2E tests</description>
-
-    <properties>
-        <version.system-rules>1.19.0</version.system-rules>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <optional>true</optional>
-        </dependency>
-
-        <dependency>
-            <groupId>org.testcontainers</groupId>
-            <artifactId>testcontainers</artifactId>
-            <optional>true</optional>
-        </dependency>
-    </dependencies>
-</project>
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/SkyWalkingAnnotations.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/SkyWalkingAnnotations.java
deleted file mode 100644
index e6ef236..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/SkyWalkingAnnotations.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * 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.e2e;
-
-import com.google.common.base.Strings;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.time.Duration;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.skywalking.e2e.annotation.ContainerHost;
-import org.apache.skywalking.e2e.annotation.ContainerHostAndPort;
-import org.apache.skywalking.e2e.annotation.ContainerPort;
-import org.apache.skywalking.e2e.annotation.DockerCompose;
-import org.apache.skywalking.e2e.annotation.DockerContainer;
-import org.apache.skywalking.e2e.common.HostAndPort;
-import org.apache.skywalking.e2e.docker.DockerComposeFile;
-import org.apache.skywalking.e2e.logging.ContainerLogger;
-import org.apache.skywalking.e2e.utils.Envs;
-import org.testcontainers.containers.ContainerState;
-import org.testcontainers.containers.DockerComposeContainer;
-import org.testcontainers.containers.output.Slf4jLogConsumer;
-import org.testcontainers.containers.wait.strategy.Wait;
-import org.testcontainers.containers.wait.strategy.WaitStrategy;
-
-import static java.util.stream.Collectors.joining;
-import static org.apache.skywalking.e2e.utils.Yamls.load;
-
-/**
- * {@link #init(Object) SkyWalkingAnnotations.init(this)} initializes fields annotated with SkyWalking annotations. You
- * don't usually need to call this method to initialize if the {@link SkyWalkingExtension} is already used, which does
- * the work for you automatically:
- *
- * <pre>{@code
- * @ExtendWith(SkyWalkingExtension.class)
- * @TestInstance(TestInstance.Lifecycle.PER_CLASS)
- * public class SomeTest {
- *     @DockerCompose("docker-compose.yml")
- *     private DockerComposeContainer justForSideEffects;
- *
- *     @ContainerHostAndPort(name = "service-name1-in-docker-compose.yml", port = 8080)
- *     private HostAndPort someService1HostPort;
- *
- *     @ContainerHostAndPort(name = "service-name2-in-docker-compose.yml", port = 9090)
- *     private HostAndPort someService2HostPort;
- * }
- * }</pre>
- *
- * but if you don't use the extension for some reasons (which is rare), here is an example:
- *
- * <pre>{@code
- * public class SomeTest {
- *     @DockerCompose("docker/simple/docker-compose.yml")
- *     private DockerComposeContainer justForSideEffects;
- *
- *     @ContainerHostAndPort(name = "service-name1-in-docker-compose.yml", port = 8080)
- *     private HostAndPort someService1HostPort;
- *
- *     @ContainerHostAndPort(name = "service-name2-in-docker-compose.yml", port = 9090)
- *     private HostAndPort someService2HostPort;
- *
- *     @BeforeAll
- *     public void setUp() throws Exception {
- *         SkyWalkingAnnotations.init(this);
- *     }
- * }
- * }</pre>
- */
-@Slf4j
-public final class SkyWalkingAnnotations {
-    private static final boolean IS_CI = !Strings.isNullOrEmpty(System.getenv("GITHUB_RUN_ID"));
-    private static final String IDENTIFIER =
-        !Strings.isNullOrEmpty(System.getenv("GITHUB_RUN_ID"))
-            ? System.getenv("GITHUB_RUN_ID") : "skywalking-e2e-";
-    private static final String LOG_DIR_ENV =
-        !Strings.isNullOrEmpty(System.getenv("GITHUB_WORKSPACE"))
-            ? (System.getenv("GITHUB_WORKSPACE") + "/logs") : "/tmp/skywalking/logs";
-    private static final Path LOG_DIR = Paths.get(LOG_DIR_ENV);
-
-    private static final List<String> REMOTE_SERVICE_NAMES = new LinkedList<>();
-    private static final int REMOTE_DEBUG_PORT = 5005;
-
-    static {
-        LOGGER.info("IDENTIFIER={}", IDENTIFIER);
-        LOGGER.info("LOG_DIR={}", LOG_DIR);
-    }
-
-    public static void init(final Object testClass) throws Exception {
-        Objects.requireNonNull(testClass, "testClass");
-
-        final DockerComposeContainer<?> compose = initDockerComposeField(testClass).orElseThrow(RuntimeException::new);
-
-        compose.start();
-
-        initHostAndPort(testClass, compose);
-
-        initDockerContainers(testClass, compose);
-    }
-
-    /**
-     * Destroy the containers started by the docker compose in the given test class, this should be typically called in
-     * the corresponding {@code @AfterAll} or {@code @AfterEach} method.
-     *
-     * @param testClass in which the containers should be destroyed
-     */
-    public static void destroy(final Object testClass) {
-        Stream.of(testClass.getClass().getDeclaredFields())
-              .filter(SkyWalkingAnnotations::isAnnotatedWithDockerCompose)
-              .findFirst()
-              .ifPresent(field -> {
-                  try {
-                      field.setAccessible(true);
-                      ((DockerComposeContainer<?>) field.get(testClass)).stop();
-                  } catch (IllegalAccessException e) {
-                      throw new RuntimeException(e);
-                  }
-              });
-    }
-
-    private static void initHostAndPort(final Object testClass,
-                                        final DockerComposeContainer<?> compose) throws Exception {
-        final Field[] fields = testClass.getClass().getDeclaredFields();
-        for (final Field field : fields) {
-            if (field.isAnnotationPresent(ContainerHost.class) && field.isAnnotationPresent(ContainerPort.class)) {
-                throw new RuntimeException(
-                    "field cannot be annotated with both ContainerHost and ContainerPort: " + field.getName()
-                );
-            }
-            if (field.isAnnotationPresent(ContainerHost.class)) {
-                final ContainerHost host = field.getAnnotation(ContainerHost.class);
-                field.setAccessible(true);
-                field.set(testClass, compose.getServiceHost(host.name(), host.port()));
-            }
-            if (field.isAnnotationPresent(ContainerPort.class)) {
-                final ContainerPort host = field.getAnnotation(ContainerPort.class);
-                field.setAccessible(true);
-                field.set(testClass, compose.getServicePort(host.name(), host.port()));
-            }
-            if (field.isAnnotationPresent(ContainerHostAndPort.class)) {
-                final ContainerHostAndPort hostAndPort = field.getAnnotation(ContainerHostAndPort.class);
-                final String host = compose.getServiceHost(hostAndPort.name(), hostAndPort.port());
-                final int port = compose.getServicePort(hostAndPort.name(), hostAndPort.port());
-
-                field.setAccessible(true);
-                field.set(testClass, HostAndPort.builder().host(host).port(port).build());
-            }
-        }
-        if (!IS_CI) {
-            File portFile = new File("remote_real_port");
-            portFile.createNewFile();
-            FileWriter fileWriter = new FileWriter(portFile.getName());
-            for (String service : REMOTE_SERVICE_NAMES) {
-                fileWriter.write(String.format("%s-%s:%s\n", service, compose.getServiceHost(service, REMOTE_DEBUG_PORT),
-                        compose.getServicePort(service, REMOTE_DEBUG_PORT)));
-            }
-            fileWriter.flush();
-            fileWriter.close();
-        }
-    }
-
-    private static Optional<DockerComposeContainer<?>> initDockerComposeField(final Object testClass) throws Exception {
-        final Field[] fields = testClass.getClass().getDeclaredFields();
-        final List<Field> dockerComposeFields = Stream.of(fields)
-                                                      .filter(SkyWalkingAnnotations::isAnnotatedWithDockerCompose)
-                                                      .collect(Collectors.toList());
-
-        if (dockerComposeFields.isEmpty()) {
-            return Optional.empty();
-        }
-
-        if (dockerComposeFields.size() > 1) {
-            throw new RuntimeException("can only have one field annotated with @DockerCompose");
-        }
-
-        final Field dockerComposeField = dockerComposeFields.get(0);
-        final DockerCompose dockerCompose = dockerComposeField.getAnnotation(DockerCompose.class);
-        final List<File> files = Stream.of(dockerCompose.value()).map(Envs::resolve)
-                                       .map(File::new).collect(Collectors.toList());
-        final DockerComposeContainer<?> compose = new DockerComposeContainer<>(IDENTIFIER, files);
-
-        if (!IS_CI) {
-            List<String> filePathList =  files.stream().map(File::getAbsolutePath).collect(Collectors.toList());
-            try {
-                LOGGER.info("Parse files:{}", filePathList.stream().collect(joining(" ", " ", "")));
-                DockerComposeFile dockerComposeFile = DockerComposeFile.getAllConfigInfo(filePathList);
-
-                dockerComposeFile.getServices().forEach((service, ignored) -> {
-                    if (dockerComposeFile.isExposedPort(service, REMOTE_DEBUG_PORT)) {
-                        REMOTE_SERVICE_NAMES.add(service);
-                        compose.withExposedService(service, REMOTE_DEBUG_PORT, Wait.forListeningPort());
-                    }
-                });
-            } catch (IOException | InterruptedException e) {
-                LOGGER.error(e.getMessage(), e);
-            }
-        }
-
-        for (final Field field : fields) {
-            if (field.isAnnotationPresent(ContainerHost.class) && field.isAnnotationPresent(ContainerPort.class)) {
-                throw new RuntimeException(
-                    "field cannot be annotated with both ContainerHost and ContainerPort: " + field.getName()
-                );
-            }
-            final WaitStrategy waitStrategy = Wait.forListeningPort().withStartupTimeout(Duration.ofMinutes(5));
-            if (field.isAnnotationPresent(ContainerHost.class)) {
-                final ContainerHost host = field.getAnnotation(ContainerHost.class);
-                compose.withExposedService(host.name(), host.port(), waitStrategy);
-            }
-            if (field.isAnnotationPresent(ContainerPort.class)) {
-                final ContainerPort port = field.getAnnotation(ContainerPort.class);
-                compose.withExposedService(port.name(), port.port(), waitStrategy);
-            }
-            if (field.isAnnotationPresent(ContainerHostAndPort.class)) {
-                final ContainerHostAndPort hostAndPort = field.getAnnotation(ContainerHostAndPort.class);
-                compose.withExposedService(hostAndPort.name(), hostAndPort.port(), waitStrategy);
-            }
-        }
-
-        compose.withPull(true)
-               .withLocalCompose(true)
-               .withTailChildContainers(true)
-               .withRemoveImages(
-                   IS_CI ? DockerComposeContainer.RemoveImages.ALL : DockerComposeContainer.RemoveImages.LOCAL
-               );
-
-        if (IS_CI) {
-            initLoggers(files, compose);
-        }
-
-        dockerComposeField.setAccessible(true);
-        dockerComposeField.set(testClass, compose);
-
-        return Optional.of(compose);
-    }
-
-    private static void initLoggers(final List<File> files, final DockerComposeContainer<?> compose) {
-        files.forEach(file -> {
-            try {
-                load(file).as(DockerComposeFile.class).getServices().forEach(
-                    (service, ignored) -> compose.withLogConsumer(
-                        service, new Slf4jLogConsumer(new ContainerLogger(LOG_DIR, service + ".log"))
-                    )
-                );
-            } catch (IOException e) {
-                LOGGER.error(e.getMessage(), e);
-            }
-        });
-    }
-
-    @SuppressWarnings("unchecked")
-    private static void initDockerContainers(final Object testClass,
-                                             final DockerComposeContainer<?> compose) throws Exception {
-        final List<Field> containerFields = Stream.of(testClass.getClass().getDeclaredFields())
-                                                  .filter(SkyWalkingAnnotations::isAnnotatedWithDockerContainer)
-                                                  .collect(Collectors.toList());
-        if (containerFields.isEmpty()) {
-            return;
-        }
-
-        final Field serviceMap = DockerComposeContainer.class.getDeclaredField("serviceInstanceMap");
-        serviceMap.setAccessible(true);
-        final Map<String, ContainerState> serviceInstanceMap = (Map<String, ContainerState>) serviceMap.get(compose);
-
-        for (final Field containerField : containerFields) {
-            if (containerField.getType() != ContainerState.class) {
-                throw new IllegalArgumentException(
-                    "@DockerContainer can only be annotated on fields of type " + ContainerState.class.getName()
-                        + " but was " + containerField.getType() + "; field \"" + containerField.getName() + "\""
-                );
-            }
-            final DockerContainer dockerContainer = containerField.getAnnotation(DockerContainer.class);
-            final String serviceName = dockerContainer.value();
-            final Optional<ContainerState> container =
-                serviceInstanceMap.entrySet()
-                                  .stream()
-                                  .filter(e -> e.getKey().startsWith(serviceName + "_"))
-                                  .findFirst()
-                                  .map(Map.Entry::getValue);
-            containerField.setAccessible(true);
-            containerField.set(
-                testClass,
-                container.orElseThrow(
-                    () -> new NoSuchElementException("cannot find container with name " + serviceName)
-                )
-            );
-        }
-    }
-
-    private static boolean isAnnotatedWithDockerCompose(final Field field) {
-        return field.isAnnotationPresent(DockerCompose.class);
-    }
-
-    private static boolean isAnnotatedWithDockerContainer(final Field field) {
-        return field.isAnnotationPresent(DockerContainer.class);
-    }
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/SkyWalkingExtension.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/SkyWalkingExtension.java
deleted file mode 100644
index 8ec5f9e..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/SkyWalkingExtension.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.e2e;
-
-import org.apache.skywalking.e2e.annotation.ContainerHost;
-import org.apache.skywalking.e2e.annotation.ContainerHostAndPort;
-import org.apache.skywalking.e2e.annotation.ContainerPort;
-import org.apache.skywalking.e2e.annotation.DockerCompose;
-import org.junit.jupiter.api.extension.AfterAllCallback;
-import org.junit.jupiter.api.extension.BeforeAllCallback;
-import org.junit.jupiter.api.extension.Extension;
-import org.junit.jupiter.api.extension.ExtensionContext;
-
-/**
- * {@link Extension} that supports the {@link DockerCompose @DockerCompose}, {@link ContainerHost @ContainerHost} and
- * {@link ContainerPort @ContainerPort}, {@link ContainerHostAndPort @ContainerHostAndPort} annotations.
- *
- * <pre>{@code
- * @ExtendWith(SkyWalkingExtension.class)
- * @TestInstance(TestInstance.Lifecycle.PER_CLASS)
- * public class SomeTest {
- *     @DockerCompose("docker-compose.yml")
- *     private DockerComposeContainer justForSideEffects;
- *
- *     @ContainerHostAndPort(name = "service-name1-in-docker-compose.yml", port = 8080)
- *     private HostAndPort someService1HostPort;
- *
- *     @ContainerHostAndPort(name = "service-name2-in-docker-compose.yml", port = 9090)
- *     private HostAndPort someService2HostPort;
- * }
- * }</pre>
- */
-public final class SkyWalkingExtension implements BeforeAllCallback, AfterAllCallback {
-
-    @Override
-    public void beforeAll(final ExtensionContext context) throws Exception {
-        SkyWalkingAnnotations.init(context.getRequiredTestInstance());
-    }
-
-    @Override
-    public void afterAll(final ExtensionContext context) {
-        SkyWalkingAnnotations.destroy(context.getRequiredTestInstance());
-    }
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/ContainerHost.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/ContainerHost.java
deleted file mode 100644
index 826581d..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/ContainerHost.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.e2e.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import org.apache.skywalking.e2e.SkyWalkingExtension;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * Fields of type {@link String} annotated with {@link ContainerHost @ContainerHost} can be initialized by {@link
- * SkyWalkingExtension} with the real host of the docker container, whose original {@link #name() service name} and
- * {@link #port() exposed port} defined in {@code docker-compose.yml} are given, for more details and examples, refer to
- * the JavaDoc of {@link SkyWalkingExtension}.
- */
-@Documented
-@Target(FIELD)
-@Retention(RUNTIME)
-public @interface ContainerHost {
-    /**
-     * @return the original name that is defined in {@code docker-compose.yml}.
-     */
-    String name();
-
-    /**
-     * @return the original port that is exposed in {@code docker-compose.yml}.
-     */
-    int port();
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/ContainerHostAndPort.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/ContainerHostAndPort.java
deleted file mode 100644
index a5a3ce2..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/ContainerHostAndPort.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.e2e.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import org.apache.skywalking.e2e.SkyWalkingExtension;
-import org.apache.skywalking.e2e.common.HostAndPort;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * Fields of type {@link HostAndPort} annotated with {@link ContainerHostAndPort @ContainerHostAndPort} can be
- * initialized by {@link SkyWalkingExtension} with the real host and port of the docker container, whose original {@link
- * #name() service name} and {@link #port() exposed port}  defined in {@code docker-compose.yml} are given, for more
- * details and examples, refer to the JavaDoc of {@link SkyWalkingExtension}.
- */
-@Documented
-@Target(FIELD)
-@Retention(RUNTIME)
-public @interface ContainerHostAndPort {
-    /**
-     * @return the original name that is defined in {@code docker-compose.yml}.
-     */
-    String name();
-
-    /**
-     * @return the original port that is exposed in {@code docker-compose.yml}.
-     */
-    int port();
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/ContainerPort.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/ContainerPort.java
deleted file mode 100644
index cad6c6c..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/ContainerPort.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.e2e.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import org.apache.skywalking.e2e.SkyWalkingExtension;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * Fields of type {@code int} annotated with {@link ContainerPort @ContainerPort} can be initialized by {@link
- * SkyWalkingExtension} with the real port of the docker container, whose original {@link #name() service name} and
- * {@link #port() exposed port}  defined in {@code docker-compose.yml} are given, for more details and examples, refer
- * to the JavaDoc of {@link SkyWalkingExtension}.
- */
-@Documented
-@Target(FIELD)
-@Retention(RUNTIME)
-public @interface ContainerPort {
-    /**
-     * @return the original name that is defined in {@code docker-compose.yml}.
-     */
-    String name();
-
-    /**
-     * @return the original port that is exposed in {@code docker-compose.yml}.
-     */
-    int port();
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/DockerCompose.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/DockerCompose.java
deleted file mode 100644
index 51debb3..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/DockerCompose.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.e2e.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import org.apache.skywalking.e2e.SkyWalkingExtension;
-import org.testcontainers.containers.DockerComposeContainer;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * Fields of type {@link DockerComposeContainer} annotated with {@link DockerCompose @DockerCompose} can be initialized
- * by {@link SkyWalkingExtension} with the given {@link #value() docker-compose.yml} files, for more details and
- * exampless, refer to the JavaDoc of {@link SkyWalkingExtension}.
- */
-@Documented
-@Target(FIELD)
-@Retention(RUNTIME)
-public @interface DockerCompose {
-    /**
-     * @return the {@code docker-compose.yml} files
-     */
-    String[] value();
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/DockerContainer.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/DockerContainer.java
deleted file mode 100644
index bd40a90..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/annotation/DockerContainer.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.e2e.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import org.apache.skywalking.e2e.SkyWalkingExtension;
-import org.testcontainers.containers.ContainerState;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * Fields of type {@link ContainerState} annotated with {@link DockerContainer @DockerContainer} can be initialized by
- * {@link SkyWalkingExtension} with the docker container, whose {@link #value() service name} defined in {@code
- * docker-compose.yml} are given, for more details and examples, refer to the JavaDoc of {@link SkyWalkingExtension}.
- */
-@Documented
-@Target(FIELD)
-@Retention(RUNTIME)
-public @interface DockerContainer {
-    String value();
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/common/HostAndPort.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/common/HostAndPort.java
deleted file mode 100644
index b05e4d9..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/common/HostAndPort.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.e2e.common;
-
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-/**
- * An immutable representation of a host and port.
- */
-@Data
-@Builder
-@Accessors(fluent = true)
-public final class HostAndPort {
-    private final String host;
-    private final int port;
-
-    @Override
-    public String toString() {
-        return host + ":" + port;
-    }
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/docker/DockerComposeFile.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/docker/DockerComposeFile.java
deleted file mode 100644
index f469fcb..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/docker/DockerComposeFile.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.e2e.docker;
-
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import lombok.Data;
-
-import static java.util.stream.Collectors.joining;
-import static org.apache.skywalking.e2e.utils.Yamls.load;
-
-@Data
-public final class DockerComposeFile {
-    private String version;
-    private Map<String, Map<String, Object>> services;
-    private Map<String, Map<String, Object>> networks;
-
-    public static DockerComposeFile getAllConfigInfo(List<String> composeFiles) throws IOException, InterruptedException {
-        String shStr = String.format("docker-compose %s config",
-                composeFiles.stream().collect(joining(" -f", " -f", "")));
-        Process process = Runtime.getRuntime().exec(shStr, null, null);
-        InputStreamReader ir = new InputStreamReader(process.getInputStream());
-        LineNumberReader input = new LineNumberReader(ir);
-        String line;
-        StringBuilder result = new StringBuilder();
-        process.waitFor();
-        while ((line = input.readLine()) != null) {
-            result.append(line).append("\n");
-        }
-        return load(result).as(DockerComposeFile.class);
-    }
-
-    public List<String> getServiceExposedPorts(String serviceName) {
-        Map<String, Object> service = services.get(serviceName);
-        List tmp = (List) service.get("expose");
-        if (tmp == null) {
-            return new LinkedList<>();
-        }
-        List<String> ports = new LinkedList<>();
-        for (Object item: tmp) {
-            ports.add(item.toString());
-        }
-        return ports;
-    }
-
-    public boolean isExposedPort(String serviceName, Integer port) {
-        List<String> ports = getServiceExposedPorts(serviceName);
-        return ports.contains(String.valueOf(port));
-    }
-
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/logging/ContainerLogger.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/logging/ContainerLogger.java
deleted file mode 100644
index 25e1889..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/logging/ContainerLogger.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.e2e.logging;
-
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.FileAppender;
-import java.nio.file.Path;
-import lombok.experimental.Delegate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class ContainerLogger implements Logger {
-    @Delegate
-    private final Logger delegate;
-
-    public ContainerLogger(final Path logDirectory, final String container) {
-
-        final LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
-        final PatternLayoutEncoder encoder = new PatternLayoutEncoder();
-
-        encoder.setPattern("%d{HH:mm:ss.SSS} %-5level %logger{36}.%M - %msg%n");
-        encoder.setContext(context);
-        encoder.start();
-
-        final FileAppender<ILoggingEvent> fileAppender = new FileAppender<>();
-        fileAppender.setFile(logDirectory.resolve(container).toAbsolutePath().toString());
-        fileAppender.setEncoder(encoder);
-        fileAppender.setContext(context);
-        fileAppender.start();
-
-        final ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(container);
-        logger.addAppender(fileAppender);
-        logger.setLevel(Level.DEBUG);
-        logger.setAdditive(false);
-
-        this.delegate = logger;
-    }
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/naming/CamelCaseNameGenerator.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/naming/CamelCaseNameGenerator.java
deleted file mode 100644
index 68a5b9c..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/naming/CamelCaseNameGenerator.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.e2e.naming;
-
-import java.lang.reflect.Method;
-import org.junit.jupiter.api.DisplayNameGenerator;
-
-public final class CamelCaseNameGenerator extends DisplayNameGenerator.Standard {
-    @Override
-    public String generateDisplayNameForMethod(final Class<?> testClass, final Method testMethod) {
-        return "verify " + String.join(" ", testMethod.getName().split("(?=\\p{Upper})")).toLowerCase();
-    }
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/OneShotExtension.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/OneShotExtension.java
deleted file mode 100644
index bfc51d7..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/OneShotExtension.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.e2e.retryable;
-
-import java.util.Optional;
-import lombok.RequiredArgsConstructor;
-import org.junit.jupiter.api.extension.AfterTestExecutionCallback;
-import org.junit.jupiter.api.extension.ConditionEvaluationResult;
-import org.junit.jupiter.api.extension.ExecutionCondition;
-import org.junit.jupiter.api.extension.ExtensionContext;
-import org.junit.jupiter.api.extension.TestExecutionExceptionHandler;
-import org.opentest4j.TestAbortedException;
-
-import static org.apache.skywalking.e2e.retryable.RetryableTestExtension.TEST_SHOULD_RETRY;
-
-@RequiredArgsConstructor
-final class OneShotExtension
-    implements ExecutionCondition, AfterTestExecutionCallback, TestExecutionExceptionHandler {
-
-    private final Class<? extends Throwable> throwableClass;
-    private final int invocation;
-    private final int times;
-
-    @Override
-    public ConditionEvaluationResult evaluateExecutionCondition(final ExtensionContext context) {
-        final boolean shouldRetry = Stores.get(context, TEST_SHOULD_RETRY, Boolean.class) != Boolean.FALSE;
-
-        if (!shouldRetry) {
-            return ConditionEvaluationResult.disabled("test passed after " + invocation + " attempts");
-        }
-
-        Stores.put(context, TEST_SHOULD_RETRY, invocation < times || retryInfinitely());
-        return ConditionEvaluationResult.enabled("test is retried " + times + " times and is still failed");
-    }
-
-    @Override
-    public void afterTestExecution(final ExtensionContext context) {
-        final Optional<Throwable> throwable = context.getExecutionException();
-        Stores.put(
-            context, TEST_SHOULD_RETRY,
-            throwable.isPresent() && throwable.get().getClass() == TestAbortedException.class
-        );
-    }
-
-    @Override
-    public void handleTestExecutionException(final ExtensionContext context,
-                                             final Throwable throwable) throws Throwable {
-        if (Stores.get(context, TEST_SHOULD_RETRY, Boolean.class) == Boolean.FALSE) {
-            throw throwable;
-        }
-
-        if (retryOnAnyException()) {
-            throw new TestAbortedException("test failed, will retry", throwable);
-        }
-
-        if (throwableClass == throwable.getClass()) {
-            throw new TestAbortedException("test failed, will retry", throwable);
-        }
-
-        throw throwable;
-    }
-
-    private boolean retryOnAnyException() {
-        return throwableClass == Throwable.class;
-    }
-
-    private boolean retryInfinitely() {
-        return times < 0;
-    }
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/RetryableTest.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/RetryableTest.java
deleted file mode 100644
index f6fdbb9..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/RetryableTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.e2e.retryable;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import org.junit.jupiter.api.TestTemplate;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * Tests annotated with {@link RetryableTest @RetryableTest} can be retried automatically on failure.
- */
-@Inherited
-@Documented
-@TestTemplate
-@Retention(RUNTIME)
-@Target({METHOD, TYPE})
-@ExtendWith(RetryableTestExtension.class)
-public @interface RetryableTest {
-    /**
-     * @return the {@link Throwable} class, when this type of throwable is thrown, the test should be retried; if {@link
-     * Throwable Throwable.class} is specified, the failed test will be retried when any exception is thrown. {@code
-     * Throwable.class} by default
-     */
-    Class<? extends Throwable> throwable() default Throwable.class;
-
-    /**
-     * @return maximum times to retry, or -1 for infinite retries. {@code -1} by default.
-     */
-    int value() default 60;
-
-    /**
-     * @return the interval between any two retries, in millisecond. {@code 1000} by default.
-     */
-    long interval() default 10000;
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/RetryableTestContext.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/RetryableTestContext.java
deleted file mode 100644
index e69980a..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/RetryableTestContext.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.e2e.retryable;
-
-import java.util.Collections;
-import java.util.List;
-import lombok.RequiredArgsConstructor;
-import org.junit.jupiter.api.extension.Extension;
-import org.junit.jupiter.api.extension.TestTemplateInvocationContext;
-
-@RequiredArgsConstructor
-final class RetryableTestContext implements TestTemplateInvocationContext {
-    private final Class<? extends Throwable> throwable;
-    private final int invocation;
-    private final int times;
-
-    @Override
-    public List<Extension> getAdditionalExtensions() {
-        return Collections.singletonList(new OneShotExtension(throwable, invocation, times));
-    }
-
-    @Override
-    public String getDisplayName(final int invocationIndex) {
-        return String.format("test attempt #%d", invocationIndex);
-    }
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/RetryableTestExtension.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/RetryableTestExtension.java
deleted file mode 100644
index e787a78..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/RetryableTestExtension.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.e2e.retryable;
-
-import java.util.Iterator;
-import java.util.Spliterator;
-import java.util.Spliterators;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
-import lombok.SneakyThrows;
-import org.junit.jupiter.api.extension.ExtensionContext;
-import org.junit.jupiter.api.extension.TestTemplateInvocationContext;
-import org.junit.jupiter.api.extension.TestTemplateInvocationContextProvider;
-
-final class RetryableTestExtension implements TestTemplateInvocationContextProvider {
-    public static final String TEST_SHOULD_RETRY = "TEST_PASSED";
-
-    @Override
-    public boolean supportsTestTemplate(final ExtensionContext context) {
-        return context.getTestMethod().map(m -> m.isAnnotationPresent(RetryableTest.class)).orElse(false);
-    }
-
-    @Override
-    public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(final ExtensionContext context) {
-        final RetryableTest retryableTest = context.getRequiredTestMethod().getAnnotation(RetryableTest.class);
-        final Class<? extends Throwable> throwable = retryableTest.throwable();
-        final long interval = retryableTest.interval();
-        final int times = retryableTest.value();
-
-        if (interval <= 0) {
-            throw new IllegalArgumentException(
-                "RetryableTest#interval must be a positive integer, but was " + interval
-            );
-        }
-
-        return StreamSupport.stream(
-            Spliterators.spliteratorUnknownSize(new Iterator<Integer>() {
-                final AtomicInteger count = new AtomicInteger(0);
-
-                @Override
-                @SneakyThrows
-                public boolean hasNext() {
-                    final boolean shouldRetry = Stores.get(context, TEST_SHOULD_RETRY, Boolean.class) != Boolean.FALSE;
-
-                    final boolean hasNext = (times < 0 || count.get() <= times) && shouldRetry;
-
-                    if (hasNext) {
-                        Thread.sleep(interval);
-                    }
-
-                    return hasNext;
-                }
-
-                @Override
-                public Integer next() {
-                    return count.getAndIncrement();
-                }
-            }, Spliterator.NONNULL), false
-        ).map(time -> new RetryableTestContext(throwable, time, times));
-    }
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/Stores.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/Stores.java
deleted file mode 100644
index ca6cbad..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/retryable/Stores.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.e2e.retryable;
-
-import org.junit.jupiter.api.extension.ExtensionContext;
-
-final class Stores {
-    public static ExtensionContext.Store store(final ExtensionContext context) {
-        final ExtensionContext.Namespace namespace = ExtensionContext.Namespace.create(
-            context.getRequiredTestClass(),
-            context.getRequiredTestMethod()
-        );
-        return context.getRoot().getStore(namespace);
-    }
-
-    public static <T> T get(final ExtensionContext context, final Object key, final Class<T> requiredType) {
-        return store(context).get(key, requiredType);
-    }
-
-    public static void put(final ExtensionContext context, final Object key, final Object value) {
-        store(context).put(key, value);
-    }
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/utils/Envs.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/utils/Envs.java
deleted file mode 100644
index 5033890..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/utils/Envs.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.e2e.utils;
-
-import com.google.common.base.Strings;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public final class Envs {
-    public static String resolve(final String text) {
-        if (Strings.isNullOrEmpty(text)) {
-            return "";
-        }
-
-        final Pattern pattern = Pattern.compile("\\$\\{(?<name>\\w+)}");
-        final Matcher matcher = pattern.matcher(text);
-        final StringBuffer buffer = new StringBuffer();
-
-        while (matcher.find()) {
-            final String name = matcher.group("name");
-            final String value = System.getenv(name);
-            matcher.appendReplacement(buffer, Matcher.quoteReplacement(Strings.nullToEmpty(value)));
-        }
-        matcher.appendTail(buffer);
-
-        return buffer.toString();
-    }
-}
diff --git a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/utils/Yamls.java b/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/utils/Yamls.java
deleted file mode 100644
index c9b695e..0000000
--- a/test/e2e/e2e-common/src/main/java/org/apache/skywalking/e2e/utils/Yamls.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.e2e.utils;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import lombok.RequiredArgsConstructor;
-import org.springframework.core.io.ClassPathResource;
-import org.testcontainers.shaded.org.yaml.snakeyaml.Yaml;
-
-/**
- * A helper class to load YAML content as a type-safe object.
- */
-@RequiredArgsConstructor
-public final class Yamls {
-    public interface Builder {
-    }
-
-    public interface AsTypeBuilder extends Builder {
-        <T> T as(final Class<T> klass);
-    }
-
-    public static boolean exists(final String file) {
-        return new ClassPathResource(Envs.resolve(file)).exists();
-    }
-
-    public static AsTypeBuilder load(final String file) throws IOException {
-        final InputStream inputStream = new ClassPathResource(Envs.resolve(file)).getInputStream();
-
-        return new AsTypeBuilder() {
-            @Override
-            public <T> T as(final Class<T> klass) {
-                return new Yaml().loadAs(inputStream, klass);
-            }
-        };
-    }
-
-    public static AsTypeBuilder load(final File file) throws IOException {
-        final InputStream inputStream = new FileInputStream(file);
-
-        return new AsTypeBuilder() {
-            @Override
-            public <T> T as(final Class<T> klass) {
-                return new Yaml().loadAs(inputStream, klass);
-            }
-        };
-    }
-
-    public static AsTypeBuilder load(final StringBuilder content) {
-        return new AsTypeBuilder() {
-            @Override
-            public <T> T as(final Class<T> klass) {
-                return new Yaml().loadAs(content.toString(), klass);
-            }
-        };
-    }
-}
diff --git a/test/e2e/e2e-common/src/test/java/org/apache/skywalking/e2e/docker/DockerComposeFileTest.java b/test/e2e/e2e-common/src/test/java/org/apache/skywalking/e2e/docker/DockerComposeFileTest.java
deleted file mode 100644
index 8dd84f2..0000000
--- a/test/e2e/e2e-common/src/test/java/org/apache/skywalking/e2e/docker/DockerComposeFileTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.e2e.docker;
-
-import org.apache.skywalking.e2e.utils.Yamls;
-import org.junit.Assert;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
-
-class DockerComposeFileTest {
-    private static DockerComposeFile COMPOSE_FILE_ONE = null;
-    private static DockerComposeFile COMPOSE_FILE_TWO = null;
-
-    @BeforeAll
-    static void setUp() throws Exception {
-        COMPOSE_FILE_ONE = Yamls.load("docker-compose.one.yml").as(DockerComposeFile.class);
-        COMPOSE_FILE_TWO = Yamls.load("docker-compose.two.yml").as(DockerComposeFile.class);
-    }
-
-    @Test
-    void getAllConfigInfo() throws IOException, InterruptedException, URISyntaxException {
-        File composeOne = new File(DockerComposeFileTest.class
-                .getClassLoader()
-                .getResource("docker-compose.one.yml")
-                .toURI());
-
-        File composeTwo = new File(DockerComposeFileTest.class
-                .getClassLoader()
-                .getResource("docker-compose.two.yml")
-                .toURI());
-
-        List<String> filePathList = new ArrayList<>();
-        filePathList.add(composeOne.getAbsolutePath());
-        filePathList.add(composeTwo.getAbsolutePath());
-        DockerComposeFile testFile = DockerComposeFile.getAllConfigInfo(filePathList);
-        Assert.assertNotNull(testFile);
-        Assert.assertNotNull(testFile.getServices());
-        Assert.assertEquals(COMPOSE_FILE_ONE.getServices().size() + COMPOSE_FILE_TWO.getServices().size(),
-                testFile.getServices().size());
-    }
-
-    @Test
-    void getServiceExposedPort() {
-        List<String> ports = COMPOSE_FILE_TWO.getServiceExposedPorts("oap");
-        Assert.assertNotNull(ports);
-        Assert.assertEquals(3, ports.size());
-    }
-
-    @Test
-    void isExposedPort() {
-        boolean result = COMPOSE_FILE_TWO.isExposedPort("oap", 5005);
-        Assert.assertTrue(result);
-        result = COMPOSE_FILE_TWO.isExposedPort("oap", 5006);
-        Assert.assertFalse(result);
-    }
-}
\ No newline at end of file
diff --git a/test/e2e/e2e-common/src/test/java/org/apache/skywalking/e2e/retryable/RetryableTestTest.java b/test/e2e/e2e-common/src/test/java/org/apache/skywalking/e2e/retryable/RetryableTestTest.java
deleted file mode 100644
index 4a632d7..0000000
--- a/test/e2e/e2e-common/src/test/java/org/apache/skywalking/e2e/retryable/RetryableTestTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.e2e.retryable;
-
-import java.util.concurrent.atomic.AtomicInteger;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Timeout;
-
-import static org.junit.jupiter.api.Assertions.fail;
-
-@SuppressWarnings("ResultOfMethodCallIgnored")
-class RetryableTestTest {
-    private static final AtomicInteger TIMES1 = new AtomicInteger(1);
-    private static final AtomicInteger TIMES2 = new AtomicInteger(1);
-    private static final AtomicInteger TIMES3 = new AtomicInteger(1);
-
-    @Timeout(30)
-    @RetryableTest
-    @DisplayName("should retry on failure")
-    void shouldRetryOnFailure() {
-        if (TIMES1.getAndIncrement() == 1) {
-            Integer.parseInt("abc");
-        }
-    }
-
-    @Timeout(30)
-    @RetryableTest(3)
-    @DisplayName("should retry specific times")
-    void shouldRetrySpecificTimes() {
-        if (TIMES3.getAndIncrement() < 3) {
-            Integer.parseInt("abc");
-        }
-    }
-
-    @Timeout(30)
-    @DisplayName("should retry specific exception")
-    @RetryableTest(throwable = NumberFormatException.class)
-    void shouldRetrySpecificException() {
-        final int retriedTimes = TIMES2.getAndIncrement();
-        if (retriedTimes == 1) {
-            throw new NumberFormatException("not NumberFormatException");
-        }
-        if (retriedTimes > 2) {
-            fail("should never happen");
-        }
-    }
-}
diff --git a/test/e2e/e2e-common/src/test/resources/docker-compose.one.yml b/test/e2e/e2e-common/src/test/resources/docker-compose.one.yml
deleted file mode 100644
index 8ea223e..0000000
--- a/test/e2e/e2e-common/src/test/resources/docker-compose.one.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-# 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.
-
-
-version: '2.1'
-
-services:
-  ui:
-    depends_on:
-      oap:
-        condition: service_healthy
-    environment:
-      SW_OAP_ADDRESS: http://oap:12800
-    expose:
-      - '8080'
-    image: skywalking/ui:latest
-    networks:
-      - e2e
diff --git a/test/e2e/e2e-common/src/test/resources/docker-compose.two.yml b/test/e2e/e2e-common/src/test/resources/docker-compose.two.yml
deleted file mode 100644
index 7f8d655..0000000
--- a/test/e2e/e2e-common/src/test/resources/docker-compose.two.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-# 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.
-
-
-version: '2.1'
-
-services:
-  oap:
-    image: skywalking/oap:latest
-    expose:
-      - 11800
-      - 12800
-      - 5005
-    networks:
-      - e2e
-    restart: on-failure
-    environment:
-      SW_CLUSTER_ZK_HOST_PORT: zk:2181
-      SW_STORAGE_ES_CLUSTER_NODES: es:9200
-      SW_JDBC_URL: jdbc:mysql://mysql:3306/swtest
-      SW_STORAGE_INFLUXDB_URL: http://influxdb:8086
-    healthcheck:
-      test: ["CMD", "sh", "-c", "nc -zn 127.0.0.1 11800"]
-      interval: 5s
-      timeout: 60s
-      retries: 120
-
-networks:
-  e2e: {}
diff --git a/test/e2e/e2e-data/pom.xml b/test/e2e/e2e-data/pom.xml
deleted file mode 100644
index 9c7ca67..0000000
--- a/test/e2e/e2e-data/pom.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ 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.
-  ~
-  -->
-
-<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>
-        <artifactId>apache-skywalking-e2e</artifactId>
-        <groupId>org.apache.skywalking</groupId>
-        <version>1.0.0</version>
-    </parent>
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>e2e-data</artifactId>
-</project>
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/AbstractQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/AbstractQuery.java
deleted file mode 100644
index a7ae178..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/AbstractQuery.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * 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.e2e;
-
-import org.springframework.util.StringUtils;
-
-import java.time.LocalDateTime;
-import java.time.ZoneOffset;
-import java.time.format.DateTimeFormatter;
-
-@SuppressWarnings("unchecked")
-public abstract class AbstractQuery<T extends AbstractQuery<T>> {
-    private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HHmmss");
-    private static final DateTimeFormatter MINUTE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HHmm");
-    private static final DateTimeFormatter DAY_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-    private static final DateTimeFormatter MONTH_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM");
-
-    private String start;
-    private String end;
-    private String step = "SECOND";
-    private String name;
-
-    public String start() {
-        if (start != null) {
-            return start;
-        }
-        if ("SECOND".equals(step())) {
-            return LocalDateTime.now(ZoneOffset.UTC).minusMinutes(15).format(TIME_FORMATTER);
-        }
-        if ("MINUTE".equals(step())) {
-            return LocalDateTime.now(ZoneOffset.UTC).minusMinutes(15).format(MINUTE_TIME_FORMATTER);
-        }
-        if ("DAY".equals(step())) {
-            return LocalDateTime.now(ZoneOffset.UTC).minusMinutes(15).format(DAY_TIME_FORMATTER);
-        }
-        if ("MONTH".equals(step())) {
-            return LocalDateTime.now(ZoneOffset.UTC).minusMinutes(15).format(MONTH_TIME_FORMATTER);
-        }
-        return null;
-    }
-
-    public T start(String start) {
-        this.start = start;
-        return (T) this;
-    }
-
-    public T start(LocalDateTime start) {
-        if ("MINUTE".equals(step())) {
-            this.start = start.format(MINUTE_TIME_FORMATTER);
-        } else if ("SECOND".equals(step())) {
-            this.start = start.format(TIME_FORMATTER);
-        } else if ("DAY".equals(step())) {
-            this.start = start.format(DAY_TIME_FORMATTER);
-        } else if ("MONTH".equals(step())) {
-            this.start = start.format(MONTH_TIME_FORMATTER);
-        }
-        return (T) this;
-    }
-
-    public String end() {
-        if (end != null) {
-            return end;
-        }
-        if ("SECOND".equals(step())) {
-            return LocalDateTime.now(ZoneOffset.UTC).format(TIME_FORMATTER);
-        }
-        if ("MINUTE".equals(step())) {
-            return LocalDateTime.now(ZoneOffset.UTC).format(MINUTE_TIME_FORMATTER);
-        }
-        if ("DAY".equals(step())) {
-            return LocalDateTime.now(ZoneOffset.UTC).format(DAY_TIME_FORMATTER);
-        }
-        if ("MONTH".equals(step())) {
-            return LocalDateTime.now(ZoneOffset.UTC).format(MONTH_TIME_FORMATTER);
-        }
-        return null;
-    }
-
-    public T end(String end) {
-        this.end = end;
-        return (T) this;
-    }
-
-    public T end(LocalDateTime end) {
-        if ("MINUTE".equals(step())) {
-            this.end = end.format(MINUTE_TIME_FORMATTER);
-        } else if ("SECOND".equals(step())) {
-            this.end = end.format(TIME_FORMATTER);
-        } else if ("DAY".equals(step())) {
-            this.end = end.format(DAY_TIME_FORMATTER);
-        } else if ("MONTH".equals(step())) {
-            this.end = end.format(MONTH_TIME_FORMATTER);
-        }
-        return (T) this;
-    }
-
-    public String step() {
-        return step;
-    }
-
-    public T step(String step) {
-        this.step = step;
-        return (T) this;
-    }
-
-    public T stepByMonth() {
-        this.step = "MONTH";
-        return (T) this;
-    }
-
-    public T stepByDay() {
-        this.step = "DAY";
-        return (T) this;
-    }
-
-    public T stepByMinute() {
-        this.step = "MINUTE";
-        return (T) this;
-    }
-
-    public T stepBySecond() {
-        this.step = "SECOND";
-        return (T) this;
-    }
-
-    public String name() {
-        if (!StringUtils.isEmpty(name)) {
-            return name;
-        }
-        return null;
-    }
-
-    public T name(String name) {
-        this.name = name;
-        return (T) this;
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/GQLResponse.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/GQLResponse.java
deleted file mode 100644
index 7cc68dc..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/GQLResponse.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.e2e;
-
-import lombok.Data;
-
-/**
- * GraphQL response for easily test
- */
-@Data
-public class GQLResponse<T> {
-    private T data;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/ProfileClient.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/ProfileClient.java
deleted file mode 100644
index 41a0bde..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/ProfileClient.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * 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.e2e;
-
-import com.google.common.io.Resources;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-import org.apache.skywalking.e2e.profile.creation.ProfileTaskCreationRequest;
-import org.apache.skywalking.e2e.profile.creation.ProfileTaskCreationResult;
-import org.apache.skywalking.e2e.profile.creation.ProfileTaskCreationResultWrapper;
-import org.apache.skywalking.e2e.profile.query.ProfileAnalyzation;
-import org.apache.skywalking.e2e.profile.query.ProfileTaskQuery;
-import org.apache.skywalking.e2e.profile.query.ProfileTasks;
-import org.apache.skywalking.e2e.profile.query.ProfiledSegment;
-import org.apache.skywalking.e2e.profile.query.Traces;
-import org.apache.skywalking.e2e.trace.Trace;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.RequestEntity;
-import org.springframework.http.ResponseEntity;
-
-@SuppressWarnings("UnstableApiUsage")
-public class ProfileClient extends SimpleQueryClient {
-    public ProfileClient(String host, int port) {
-        super(host, port);
-    }
-
-    public ProfileTaskCreationResult createProfileTask(final ProfileTaskCreationRequest creationRequest) throws Exception {
-        final URL queryFileUrl = Resources.getResource("profileTaskCreation.gql");
-        final String queryString =
-            Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                     .stream()
-                     .filter(it -> !it.startsWith("#"))
-                     .collect(Collectors.joining())
-                     .replace("{serviceId}", String.valueOf(creationRequest.getServiceId()))
-                     .replace("{endpointName}", creationRequest.getEndpointName())
-                     .replace("{duration}", String.valueOf(creationRequest.getDuration()))
-                     .replace("{startTime}", String.valueOf(creationRequest.getStartTime()))
-                     .replace("{minDurationThreshold}", String.valueOf(creationRequest.getMinDurationThreshold()))
-                     .replace("{dumpPeriod}", String.valueOf(creationRequest.getDumpPeriod()))
-                     .replace("{maxSamplingCount}", String.valueOf(creationRequest.getMaxSamplingCount()));
-        final ResponseEntity<GQLResponse<ProfileTaskCreationResultWrapper>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<ProfileTaskCreationResultWrapper>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getCreationResult();
-    }
-
-    public ProfileTasks getProfileTaskList(final ProfileTaskQuery query) throws IOException {
-        final URL queryFileUrl = Resources.getResource("profileTaskList.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{serviceId}", String.valueOf(query.serviceId()))
-                                            .replace("{endpointName}", query.endpointName());
-        final ResponseEntity<GQLResponse<ProfileTasks>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<ProfileTasks>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData();
-    }
-
-    public List<Trace> getProfiledTraces(final String taskId) throws Exception {
-        final URL queryFileUrl = Resources.getResource("profileTaskSegmentList.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{taskID}", taskId);
-        final ResponseEntity<GQLResponse<Traces>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<Traces>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getTraces();
-    }
-
-    public ProfiledSegment.ProfiledSegmentData getProfiledSegment(final String segmentId) throws IOException {
-        final URL queryFileUrl = Resources.getResource("profiledSegment.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{segmentId}", segmentId);
-        final ResponseEntity<GQLResponse<ProfiledSegment>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<ProfiledSegment>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getSegment();
-    }
-
-    public ProfileAnalyzation getProfileAnalyzation(final String segmentId, long start, long end) throws IOException {
-        final URL queryFileUrl = Resources.getResource("profileAnalyzation.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{segmentId}", segmentId)
-                                            .replace("{start}", String.valueOf(start))
-                                            .replace("{end}", String.valueOf(end));
-        final ResponseEntity<GQLResponse<ProfileAnalyzation>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<ProfileAnalyzation>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData();
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/SimpleQueryClient.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/SimpleQueryClient.java
deleted file mode 100644
index f38bd6f..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/SimpleQueryClient.java
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * 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.e2e;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.io.Resources;
-import java.net.URI;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.skywalking.e2e.alarm.AlarmQuery;
-import org.apache.skywalking.e2e.alarm.GetAlarm;
-import org.apache.skywalking.e2e.alarm.GetAlarmData;
-import org.apache.skywalking.e2e.browser.BrowserErrorLog;
-import org.apache.skywalking.e2e.browser.BrowserErrorLogQuery;
-import org.apache.skywalking.e2e.browser.BrowserErrorLogsData;
-import org.apache.skywalking.e2e.event.Event;
-import org.apache.skywalking.e2e.event.EventData;
-import org.apache.skywalking.e2e.event.EventsQuery;
-import org.apache.skywalking.e2e.log.Log;
-import org.apache.skywalking.e2e.log.LogData;
-import org.apache.skywalking.e2e.log.LogsQuery;
-import org.apache.skywalking.e2e.log.SupportQueryLogsByKeywords;
-import org.apache.skywalking.e2e.metrics.Metrics;
-import org.apache.skywalking.e2e.metrics.MetricsData;
-import org.apache.skywalking.e2e.metrics.MetricsQuery;
-import org.apache.skywalking.e2e.metrics.MultiMetricsData;
-import org.apache.skywalking.e2e.metrics.ReadLabeledMetricsData;
-import org.apache.skywalking.e2e.metrics.ReadLabeledMetricsQuery;
-import org.apache.skywalking.e2e.metrics.ReadMetrics;
-import org.apache.skywalking.e2e.metrics.ReadMetricsData;
-import org.apache.skywalking.e2e.metrics.ReadMetricsQuery;
-import org.apache.skywalking.e2e.service.Service;
-import org.apache.skywalking.e2e.service.ServicesData;
-import org.apache.skywalking.e2e.service.ServicesQuery;
-import org.apache.skywalking.e2e.service.endpoint.EndpointQuery;
-import org.apache.skywalking.e2e.service.endpoint.Endpoints;
-import org.apache.skywalking.e2e.service.instance.Instances;
-import org.apache.skywalking.e2e.service.instance.InstancesQuery;
-import org.apache.skywalking.e2e.topo.ServiceInstanceTopology;
-import org.apache.skywalking.e2e.topo.ServiceInstanceTopologyQuery;
-import org.apache.skywalking.e2e.topo.ServiceInstanceTopologyResponse;
-import org.apache.skywalking.e2e.topo.TopoQuery;
-import org.apache.skywalking.e2e.topo.Topology;
-import org.apache.skywalking.e2e.topo.TopologyResponse;
-import org.apache.skywalking.e2e.trace.Trace;
-import org.apache.skywalking.e2e.trace.TracesData;
-import org.apache.skywalking.e2e.trace.TracesQuery;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.RequestEntity;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.client.RestTemplate;
-
-@SuppressWarnings("UnstableApiUsage")
-@Slf4j
-public class SimpleQueryClient {
-    protected final RestTemplate restTemplate = new RestTemplate();
-    protected final ObjectMapper objectMapper = new ObjectMapper();
-
-    protected final String endpointUrl;
-
-    public SimpleQueryClient(String host, int port) {
-        this("http://" + host + ":" + port + "/graphql");
-    }
-
-    public SimpleQueryClient(String endpointUrl) {
-        this.endpointUrl = endpointUrl;
-    }
-
-    public List<Trace> traces(final TracesQuery query) throws Exception {
-        final URL queryFileUrl = Resources.getResource("traces.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{start}", query.start())
-                                            .replace("{end}", query.end())
-                                            .replace("{step}", query.step())
-                                            .replace("{traceState}", query.traceState())
-                                            .replace("{pageNum}", query.pageNum())
-                                            .replace("{pageSize}", query.pageSize())
-                                            .replace("{needTotal}", query.needTotal())
-                                            .replace("{queryOrder}", query.queryOrder())
-                                            .replace("{tags}", objectMapper.writeValueAsString(query.tags()));
-        final ResponseEntity<GQLResponse<TracesData>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<TracesData>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getTraces().getData();
-    }
-
-    public List<BrowserErrorLog> browserErrorLogs(final BrowserErrorLogQuery query) throws Exception {
-        final URL queryFileUrl = Resources.getResource("browser-error-logs.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{start}", query.start())
-                                            .replace("{end}", query.end())
-                                            .replace("{step}", query.step())
-                                            .replace("{pageNum}", query.pageNum())
-                                            .replace("{pageSize}", query.pageSize())
-                                            .replace("{needTotal}", query.needTotal());
-        final ResponseEntity<GQLResponse<BrowserErrorLogsData>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<BrowserErrorLogsData>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody().getData().getLogs().getData());
-    }
-
-    public List<Service> services(final ServicesQuery query) throws Exception {
-        return services(query, "services.gql");
-    }
-
-    public List<Service> browserServices(final ServicesQuery query) throws Exception {
-        return services(query, "browser-services.gql");
-    }
-
-    private List<Service> services(final ServicesQuery query, String gql) throws Exception {
-        final URL queryFileUrl = Resources.getResource(gql);
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{start}", query.start())
-                                            .replace("{end}", query.end())
-                                            .replace("{step}", query.step());
-        final ResponseEntity<GQLResponse<ServicesData>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<ServicesData>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getServices();
-    }
-
-    public Instances instances(final InstancesQuery query) throws Exception {
-        final URL queryFileUrl = Resources.getResource("instances.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{serviceId}", query.serviceId())
-                                            .replace("{start}", query.start())
-                                            .replace("{end}", query.end())
-                                            .replace("{step}", query.step());
-        final ResponseEntity<GQLResponse<Instances>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<Instances>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData();
-    }
-
-    public Endpoints endpoints(final EndpointQuery query) throws Exception {
-        final URL queryFileUrl = Resources.getResource("endpoints.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{serviceId}", query.serviceId());
-        final ResponseEntity<GQLResponse<Endpoints>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<Endpoints>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData();
-    }
-
-    public Topology topo(final TopoQuery query) throws Exception {
-        LOGGER.info("topo {}", query);
-
-        final URL queryFileUrl = Resources.getResource("topo.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{step}", query.step())
-                                            .replace("{start}", query.start())
-                                            .replace("{end}", query.end());
-
-        LOGGER.info("query string {}", queryString);
-
-        try {
-            final ResponseEntity<GQLResponse<TopologyResponse>> responseEntity = restTemplate.exchange(
-                new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-                new ParameterizedTypeReference<GQLResponse<TopologyResponse>>() {
-                }
-            );
-
-            LOGGER.info("response {}", responseEntity);
-
-            if (responseEntity.getStatusCode() != HttpStatus.OK) {
-                throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-            }
-
-            return Objects.requireNonNull(responseEntity.getBody()).getData().getTopo();
-        } catch (Exception e) {
-            LOGGER.error(e.getMessage(), e);
-        }
-        return new Topology();
-    }
-
-    public ServiceInstanceTopology serviceInstanceTopo(final ServiceInstanceTopologyQuery query) throws Exception {
-        final URL queryFileUrl = Resources.getResource("instanceTopo.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{step}", query.step())
-                                            .replace("{start}", query.start())
-                                            .replace("{end}", query.end())
-                                            .replace("{clientServiceId}", query.clientServiceId())
-                                            .replace("{serverServiceId}", query.serverServiceId());
-        final ResponseEntity<GQLResponse<ServiceInstanceTopologyResponse>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<ServiceInstanceTopologyResponse>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getTopo();
-    }
-
-    public Metrics metrics(final MetricsQuery query) throws Exception {
-        final URL queryFileUrl = Resources.getResource("metrics.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{step}", query.step())
-                                            .replace("{start}", query.start())
-                                            .replace("{end}", query.end())
-                                            .replace("{metricsName}", query.metricsName())
-                                            .replace("{id}", query.id());
-        final ResponseEntity<GQLResponse<MetricsData>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<MetricsData>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getMetrics();
-    }
-
-    public List<Metrics> multipleLinearMetrics(final MetricsQuery query, String numOfLinear) throws Exception {
-        final URL queryFileUrl = Resources.getResource("metrics-multiLines.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{step}", query.step())
-                                            .replace("{start}", query.start())
-                                            .replace("{end}", query.end())
-                                            .replace("{metricsName}", query.metricsName())
-                                            .replace("{id}", query.id())
-                                            .replace("{numOfLinear}", numOfLinear);
-        final ResponseEntity<GQLResponse<MultiMetricsData>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<MultiMetricsData>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getMetrics();
-    }
-
-    public ReadMetrics readMetrics(final ReadMetricsQuery query) throws Exception {
-        final URL queryFileUrl = Resources.getResource("read-metrics.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{step}", query.step())
-                                            .replace("{start}", query.start())
-                                            .replace("{end}", query.end())
-                                            .replace("{metricsName}", query.metricsName())
-                                            .replace("{serviceName}", query.serviceName())
-                                            .replace("{instanceName}", query.instanceName())
-                                            .replace("{scope}", query.scope());
-        LOGGER.info("Query: {}", queryString);
-        final ResponseEntity<GQLResponse<ReadMetricsData>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<ReadMetricsData>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getReadMetricsValues();
-    }
-
-    public List<ReadMetrics> readLabeledMetrics(final ReadLabeledMetricsQuery query) throws Exception {
-        final URL queryFileUrl = Resources.getResource("read-labeled-metrics.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{step}", query.step())
-                                            .replace("{start}", query.start())
-                                            .replace("{end}", query.end())
-                                            .replace("{metricsName}", query.metricsName())
-                                            .replace("{serviceName}", query.serviceName())
-                                            .replace("{instanceName}", query.instanceName())
-                                            .replace("{scope}", query.scope())
-                                            .replace("{labels}", query.labels().stream()
-                                                    .map(s -> "\"" + s + "\"").collect(Collectors.joining(",")));
-        LOGGER.info("Query: {}", queryString);
-        final ResponseEntity<GQLResponse<ReadLabeledMetricsData>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<ReadLabeledMetricsData>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getReadLabeledMetricsValues();
-    }
-
-    public GetAlarm readAlarms(final AlarmQuery query) throws Exception {
-        final URL queryFileUrl = Resources.getResource("read-alarms.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{step}", query.step())
-                                            .replace("{start}", query.start())
-                                            .replace("{end}", query.end())
-                                            .replace("{pageSize}", "20")
-                                            .replace("{needTotal}", "true")
-                                            .replace("{tags}", objectMapper.writeValueAsString(query.tags()));
-        LOGGER.info("Query: {}", queryString);
-        final ResponseEntity<GQLResponse<GetAlarmData>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<GetAlarmData>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-        LOGGER.info("Result: {}", responseEntity.getBody());
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getGetAlarm();
-    }
-
-    public List<Log> logs(final LogsQuery query) throws Exception {
-        final URL queryFileUrl = Resources.getResource("logs.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream().filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{serviceId}", query.serviceId())
-                                            .replace("{endpointId}", query.endpointId())
-                                            .replace("{start}", query.start())
-                                            .replace("{end}", query.end())
-                                            .replace("{step}", query.step())
-                                            .replace("{pageNum}", query.pageNum())
-                                            .replace("{pageSize}", query.pageSize())
-                                            .replace("{needTotal}", query.needTotal())
-                                            .replace("{keywordsOfContent}", query.keywordsOfContent())
-                                            .replace(
-                                                "{excludingKeywordsOfContent}", query.excludingKeywordsOfContent())
-                                            .replace("{tags}", objectMapper.writeValueAsString(query.tags()));
-        LOGGER.info("Query: {}", queryString);
-        final ResponseEntity<GQLResponse<LogData>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<LogData>>() {
-            }
-        );
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getLogs().getData();
-    }
-
-    public boolean supportQueryLogsByKeywords() throws Exception {
-        final URL queryFileUrl = Resources.getResource("support-query-logs-by-keywords.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining());
-        LOGGER.info("Query: {}", queryString);
-        final ResponseEntity<GQLResponse<SupportQueryLogsByKeywords>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<SupportQueryLogsByKeywords>>() {
-            }
-        );
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-        return Objects.requireNonNull(responseEntity.getBody().getData().isSupport());
-    }
-
-    public List<Event> events(final EventsQuery query) throws Exception {
-        final URL queryFileUrl = Resources.getResource("events.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream().filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{uuid}", query.uuid())
-                                            .replace("{pageNum}", query.pageNum())
-                                            .replace("{pageSize}", query.pageSize())
-                                            .replace("{needTotal}", query.needTotal());
-        LOGGER.info("Query: {}", queryString);
-        final ResponseEntity<GQLResponse<EventData>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<EventData>>() {
-            }
-        );
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getEvents().getData();
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/UIConfigurationManagementClient.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/UIConfigurationManagementClient.java
deleted file mode 100644
index a6514dc..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/UIConfigurationManagementClient.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * 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.e2e;
-
-import com.google.common.io.Resources;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-import org.apache.skywalking.e2e.dashboard.DashboardConfiguration;
-import org.apache.skywalking.e2e.dashboard.DashboardConfigurationListWrapper;
-import org.apache.skywalking.e2e.dashboard.DashboardSetting;
-import org.apache.skywalking.e2e.dashboard.TemplateChangeStatus;
-import org.apache.skywalking.e2e.dashboard.TemplateChangeStatusWrapper;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.RequestEntity;
-import org.springframework.http.ResponseEntity;
-
-public class UIConfigurationManagementClient extends SimpleQueryClient {
-
-    public UIConfigurationManagementClient(final String endpointUrl) {
-        super(endpointUrl);
-    }
-
-    public UIConfigurationManagementClient(final String host, final int port) {
-        super(host, port);
-    }
-
-    public TemplateChangeStatus addTemplate(DashboardSetting setting) throws IOException {
-        final URL queryFileUrl = Resources.getResource("ui-addTemplate.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{name}", setting.name())
-                                            .replace("{type}", String.valueOf(setting.type()))
-                                            .replace("{configuration}", setting.configuration())
-                                            .replace("{active}", String.valueOf(setting.active()));
-
-        final ResponseEntity<GQLResponse<TemplateChangeStatusWrapper>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<TemplateChangeStatusWrapper>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getChangeStatusResult();
-    }
-
-    public List<DashboardConfiguration> getAllTemplates(Boolean includingDisabled) throws IOException {
-        final URL queryFileUrl = Resources.getResource("ui-getTemplates.gql");
-        final String queryString =
-            Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                     .stream()
-                     .filter(it -> !it.startsWith("#"))
-                     .collect(Collectors.joining())
-                     .replace("{includingDisabled}", String.valueOf(includingDisabled));
-
-        final ResponseEntity<GQLResponse<DashboardConfigurationListWrapper>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<DashboardConfigurationListWrapper>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getConfigurations();
-    }
-
-    public TemplateChangeStatus changeTemplate(DashboardSetting setting) throws IOException {
-
-        final URL queryFileUrl = Resources.getResource("ui-changeTemplate.gql");
-        final String queryString = Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                                            .stream()
-                                            .filter(it -> !it.startsWith("#"))
-                                            .collect(Collectors.joining())
-                                            .replace("{name}", setting.name())
-                                            .replace("{type}", String.valueOf(setting.type()))
-                                            .replace("{configuration}", setting.configuration())
-                                            .replace("{active}", String.valueOf(setting.active()));
-
-        final ResponseEntity<GQLResponse<TemplateChangeStatusWrapper>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<TemplateChangeStatusWrapper>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getChangeStatusResult();
-    }
-
-    public TemplateChangeStatus disableTemplate(String name) throws IOException {
-
-        final URL queryFileUrl = Resources.getResource("ui-disableTemplate.gql");
-        final String queryString =
-            Resources.readLines(queryFileUrl, StandardCharsets.UTF_8)
-                     .stream()
-                     .filter(it -> !it.startsWith("#"))
-                     .collect(Collectors.joining())
-                     .replace("{name}", name);
-
-        final ResponseEntity<GQLResponse<TemplateChangeStatusWrapper>> responseEntity = restTemplate.exchange(
-            new RequestEntity<>(queryString, HttpMethod.POST, URI.create(endpointUrl)),
-            new ParameterizedTypeReference<GQLResponse<TemplateChangeStatusWrapper>>() {
-            }
-        );
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            throw new RuntimeException("Response status != 200, actual: " + responseEntity.getStatusCode());
-        }
-
-        return Objects.requireNonNull(responseEntity.getBody()).getData().getChangeStatusResult();
-    }
-
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/Alarm.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/Alarm.java
deleted file mode 100644
index 95a29da..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/Alarm.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.e2e.alarm;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-import org.apache.skywalking.e2e.common.KeyValue;
-import org.apache.skywalking.e2e.event.Event;
-
-import java.util.List;
-
-@Data
-@Accessors(chain = true)
-public class Alarm {
-    private String startTime;
-    private String scope;
-    private String id;
-    private String message;
-    private List<KeyValue> tags;
-    private List<Event> events;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/AlarmMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/AlarmMatcher.java
deleted file mode 100644
index 28753e1..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/AlarmMatcher.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.e2e.alarm;
-
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.skywalking.e2e.common.KeyValue;
-import org.apache.skywalking.e2e.common.KeyValueMatcher;
-import org.apache.skywalking.e2e.event.Event;
-import org.apache.skywalking.e2e.event.EventMatcher;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-import org.springframework.util.CollectionUtils;
-
-import java.util.List;
-
-import static java.util.Objects.nonNull;
-import static org.assertj.core.api.Assertions.fail;
-
-@Slf4j
-@Data
-public class AlarmMatcher extends AbstractMatcher<Alarm> {
-    private String startTime;
-    private String scope;
-    private String id;
-    private String message;
-    private List<KeyValueMatcher> tags;
-    private List<EventMatcher> events;
-
-    @Override
-    public void verify(Alarm alarm) {
-        doVerify(this.scope, alarm.getScope());
-        doVerify(this.id, alarm.getId());
-        doVerify(this.message, alarm.getMessage());
-        if (nonNull(getTags())) {
-            for (final KeyValueMatcher matcher : getTags()) {
-                boolean matched = false;
-                for (final KeyValue keyValue : alarm.getTags()) {
-                    try {
-                        matcher.verify(keyValue);
-                        matched = true;
-                    } catch (Throwable ignore) {
-
-                    }
-                }
-                if (!matched) {
-                    fail("\nExpected: %s\n Actual: %s", getTags(), alarm.getTags());
-                }
-            }
-        }
-
-        if (!CollectionUtils.isEmpty(getEvents())) {
-            for (final EventMatcher matcher : getEvents()) {
-                boolean matched = false;
-                for (final Event event : alarm.getEvents()) {
-                    try {
-                        matcher.verify(event);
-                        matched = true;
-                    } catch (Throwable ignore) {
-                        //ignore.
-                    }
-                }
-                if (!matched) {
-                    fail("\nExpected: %s\n Actual: %s", getEvents(), alarm.getEvents());
-                }
-            }
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/AlarmQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/AlarmQuery.java
deleted file mode 100644
index 6011cd7..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/AlarmQuery.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.e2e.alarm;
-
-import org.apache.skywalking.e2e.AbstractQuery;
-import org.apache.skywalking.e2e.event.Event;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
-
-public class AlarmQuery extends AbstractQuery<AlarmQuery> {
-    private List<Map<String, String>> tags = Collections.emptyList();
-
-    private List<Event> events = Collections.emptyList();
-
-    public List<Map<String, String>> tags() {
-        return tags;
-    }
-
-    public List<Event> events() {
-        return events;
-    }
-
-    public AlarmQuery tags(List<Map<String, String>> tags) {
-        this.tags = tags;
-        return this;
-    }
-
-    public AlarmQuery events(List<Event> events) {
-        this.events = events;
-        return this;
-    }
-
-    public AlarmQuery addTag(String key, String value) {
-        if (Collections.EMPTY_LIST.equals(tags)) {
-            tags = new ArrayList<>();
-        }
-        Map<String, String> tag = new HashMap<>();
-        tag.put("key", key);
-        tag.put("value", value);
-        tags.add(tag);
-        return this;
-    }
-
-    public AlarmQuery addEvents(List<Event> events) {
-        if (Collections.EMPTY_LIST.equals(events)) {
-            events = new ArrayList<>();
-        }
-
-        events.addAll(events);
-        return this;
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/AlarmsMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/AlarmsMatcher.java
deleted file mode 100644
index 0b18865..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/AlarmsMatcher.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.e2e.alarm;
-
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.Assert;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.fail;
-
-@Data
-@Slf4j
-public class AlarmsMatcher {
-
-    private int total;
-
-    private List<AlarmMatcher> matchers;
-
-    public AlarmsMatcher() {
-        this.matchers = new LinkedList<>();
-    }
-
-    public void verify(final GetAlarm alarms) {
-        LOGGER.info("alarms:{} matchers:{}", alarms, this.matchers);
-        Assert.assertEquals(this.total, alarms.getTotal());
-
-        assertThat(this.matchers).hasSameSizeAs(alarms.getMsgs());
-
-        for (int i = 0; i < this.matchers.size(); i++) {
-            boolean matched = false;
-            for (Alarm alarm : alarms.getMsgs()) {
-                try {
-                    this.matchers.get(i).verify(alarm);
-                    matched = true;
-                } catch (Throwable ignored) {
-                }
-            }
-            if (!matched) {
-                fail("\nExpected: %s\nActual: %s", this.matchers, alarms);
-            }
-        }
-    }
-
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/GetAlarm.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/GetAlarm.java
deleted file mode 100644
index 650604a..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/GetAlarm.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.e2e.alarm;
-
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class GetAlarm {
-    private int total;
-    private List<Alarm> msgs;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/GetAlarmData.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/GetAlarmData.java
deleted file mode 100644
index 58e96b1..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/GetAlarmData.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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.e2e.alarm;
-
-import lombok.Data;
-
-@Data
-public class GetAlarmData {
-    private GetAlarm getAlarm;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/HookAlarm.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/HookAlarm.java
deleted file mode 100644
index 20b2b18..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/HookAlarm.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.e2e.alarm;
-
-import lombok.Data;
-import org.apache.skywalking.e2e.common.KeyValue;
-
-import java.util.List;
-
-@Data
-public class HookAlarm {
-    private String scopeId;
-    private String scope;
-    private String name;
-    private String id0;
-    private String id1;
-    private String ruleName;
-    private String alarmMessage;
-    private String startTime;
-    private List<KeyValue> tags;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/HookAlarmMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/HookAlarmMatcher.java
deleted file mode 100644
index 3401b8e..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/HookAlarmMatcher.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.e2e.alarm;
-
-import lombok.Data;
-import org.apache.skywalking.e2e.common.KeyValue;
-import org.apache.skywalking.e2e.common.KeyValueMatcher;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import java.util.List;
-
-import static java.util.Objects.nonNull;
-import static org.assertj.core.api.Assertions.fail;
-
-@Data
-public class HookAlarmMatcher extends AbstractMatcher<HookAlarm> {
-    private String scopeId;
-    private String scope;
-    private String name;
-    private String id0;
-    private String id1;
-    private String ruleName;
-    private String alarmMessage;
-    private String startTime;
-    private List<KeyValueMatcher> tags;
-
-    @Override
-    public void verify(HookAlarm hookAlarm) {
-        doVerify(this.scopeId, hookAlarm.getScopeId());
-        doVerify(this.scope, hookAlarm.getScope());
-        doVerify(this.name, hookAlarm.getName());
-        doVerify(this.id0, hookAlarm.getId0());
-        doVerify(this.id1, hookAlarm.getId1());
-        doVerify(this.ruleName, hookAlarm.getRuleName());
-        doVerify(this.alarmMessage, hookAlarm.getAlarmMessage());
-        doVerify(this.startTime, hookAlarm.getStartTime());
-        if (nonNull(getTags())) {
-            for (final KeyValueMatcher matcher : getTags()) {
-                boolean matched = false;
-                for (final KeyValue keyValue : hookAlarm.getTags()) {
-                    try {
-                        matcher.verify(keyValue);
-                        matched = true;
-                    } catch (Throwable ignore) {
-
-                    }
-                }
-                if (!matched) {
-                    fail("\nExpected: %s\n Actual: %s", getTags(), hookAlarm.getTags());
-                }
-            }
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/HookAlarms.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/HookAlarms.java
deleted file mode 100644
index 3809bc8..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/HookAlarms.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.e2e.alarm;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.ArrayList;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class HookAlarms {
-    private ArrayList<HookAlarm> messages;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/HookAlarmsMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/HookAlarmsMatcher.java
deleted file mode 100644
index 2b6ebc1..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/alarm/HookAlarmsMatcher.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.e2e.alarm;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import java.util.ArrayList;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.fail;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class HookAlarmsMatcher extends AbstractMatcher<HookAlarms> {
-    private ArrayList<HookAlarmMatcher> messages;
-
-    @Override
-    public void verify(HookAlarms hookAlarms) {
-        assertThat(this.messages).hasSameSizeAs(hookAlarms.getMessages());
-
-        for (int i = 0; i < this.messages.size(); i++) {
-            boolean matched = false;
-            for (HookAlarm hookAlarm : hookAlarms.getMessages()) {
-                try {
-                    this.messages.get(i).verify(hookAlarm);
-                    matched = true;
-                } catch (Throwable ignored) {
-                }
-            }
-            if (!matched) {
-                fail("\nExpected: %s\nActual: %s", this.messages.get(i), hookAlarms.getMessages());
-            }
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/assertor/VariableExpressParser.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/assertor/VariableExpressParser.java
deleted file mode 100644
index 6091536..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/assertor/VariableExpressParser.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.e2e.assertor;
-
-import java.util.List;
-import java.util.function.Function;
-import java.util.regex.Pattern;
-import org.apache.skywalking.e2e.assertor.exception.VariableNotFoundException;
-
-import static java.util.Objects.isNull;
-
-public class VariableExpressParser {
-
-    public static <T> T parse(final String express, List<T> actual, Function<T, String> getFiled) {
-        String variable = express.trim();
-        if (!(variable.startsWith("${") && variable.endsWith("}"))) {
-            return null;
-        }
-
-        variable = variable.substring(2, variable.length() - 1);
-
-        int startIndexOfIndex = variable.lastIndexOf("[");
-        String regex = variable.substring(0, startIndexOfIndex);
-        int endIndexOfIndex = variable.indexOf("]", startIndexOfIndex);
-        int expectedIndex = Integer.parseInt(variable.substring(startIndexOfIndex + 1, endIndexOfIndex));
-        int mappingIndex = 0;
-
-        T mapping = null;
-        for (T t : actual) {
-            if (Pattern.matches(regex, getFiled.apply(t))) {
-                if (mappingIndex++ == expectedIndex) {
-                    mapping = t;
-                    break;
-                }
-            }
-        }
-
-        if (isNull(mapping)) {
-            throw new VariableNotFoundException(express);
-        }
-        return mapping;
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/assertor/exception/VariableNotFoundException.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/assertor/exception/VariableNotFoundException.java
deleted file mode 100644
index 851ef4d..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/assertor/exception/VariableNotFoundException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.e2e.assertor.exception;
-
-import org.apache.skywalking.e2e.exception.AssertFailedException;
-
-public class VariableNotFoundException extends AssertFailedException {
-
-    private static final long serialVersionUID = 1337142072507388456L;
-
-    private final String express;
-
-    public VariableNotFoundException(String express) {
-        this.express = express;
-    }
-
-    @Override
-    public String getCauseMessage() {
-        return String.format("VariableNotFoundException\nexpected: %s\nactual: %s\n", express, "NOT FOUND");
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLog.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLog.java
deleted file mode 100644
index fea3b50..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLog.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.e2e.browser;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-@Accessors(chain = true)
-public class BrowserErrorLog {
-    private String service;
-    private String serviceVersion;
-    private Long time;
-    private String pagePath;
-    private String category;
-    private String grade;
-    private String message;
-    private Integer line;
-    private Integer col;
-    private String stack;
-    private String errorUrl;
-    private boolean firstReportedError;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogMatcher.java
deleted file mode 100644
index 7610aec..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogMatcher.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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.e2e.browser;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static java.util.Objects.nonNull;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class BrowserErrorLogMatcher extends AbstractMatcher<BrowserErrorLog> {
-    private String service;
-    private String serviceVersion;
-    private String time;
-    private String pagePath;
-    private String category;
-    private String grade;
-    private String message;
-    private String line;
-    private String col;
-    private String stack;
-    private String errorUrl;
-    private String firstReportedError;
-
-    @Override
-    public void verify(final BrowserErrorLog log) {
-        if (nonNull(getService())) {
-            doVerify(getService(), log.getService());
-        }
-
-        if (nonNull(getServiceVersion())) {
-            doVerify(getServiceVersion(), log.getServiceVersion());
-        }
-
-        if (nonNull(getTime())) {
-            doVerify(getTime(), String.valueOf(log.getTime()));
-        }
-
-        if (nonNull(getPagePath())) {
-            doVerify(getPagePath(), log.getPagePath());
-        }
-
-        if (nonNull(getCategory())) {
-            doVerify(getCategory(), log.getCategory());
-        }
-
-        if (nonNull(getGrade())) {
-            doVerify(getGrade(), log.getGrade());
-        }
-
-        if (nonNull(getMessage())) {
-            doVerify(getMessage(), log.getMessage());
-        }
-
-        if (nonNull(getLine())) {
-            doVerify(getLine(), log.getLine());
-        }
-
-        if (nonNull(getCol())) {
-            doVerify(getCol(), log.getCol());
-        }
-
-        if (nonNull(getStack())) {
-            doVerify(getStack(), log.getStack());
-        }
-
-        if (nonNull(getErrorUrl())) {
-            doVerify(getErrorUrl(), log.getErrorUrl());
-        }
-
-        if (nonNull(getFirstReportedError())) {
-            doVerify(getFirstReportedError(), log.isFirstReportedError());
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogQuery.java
deleted file mode 100644
index 4cdfda2..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogQuery.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.e2e.browser;
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.Accessors;
-import org.apache.skywalking.e2e.AbstractQuery;
-
-@Setter
-@Getter
-@Accessors(chain = true)
-public class BrowserErrorLogQuery extends AbstractQuery<BrowserErrorLogQuery> {
-    private String pageNum = "1";
-    private String pageSize = "15";
-    private String needTotal = "true";
-
-    public String pageNum() {
-        return pageNum;
-    }
-
-    public String pageSize() {
-        return pageSize;
-    }
-
-    public String needTotal() {
-        return needTotal;
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogs.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogs.java
deleted file mode 100644
index 4997e76..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogs.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.e2e.browser;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class BrowserErrorLogs {
-    private List<BrowserErrorLog> data;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogsData.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogsData.java
deleted file mode 100644
index d21d0ff..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogsData.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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.e2e.browser;
-
-import lombok.Data;
-
-@Data
-public class BrowserErrorLogsData {
-    private BrowserErrorLogs logs;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogsMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogsMatcher.java
deleted file mode 100644
index c3871ed..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/browser/BrowserErrorLogsMatcher.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.e2e.browser;
-
-import java.util.LinkedList;
-import java.util.List;
-import lombok.Data;
-
-import static org.assertj.core.api.Assertions.fail;
-
-@Data
-public class BrowserErrorLogsMatcher {
-    private List<BrowserErrorLogMatcher> logs;
-
-    public BrowserErrorLogsMatcher() {
-        this.logs = new LinkedList<>();
-    }
-
-    public void verifyLoosely(final List<BrowserErrorLog> logs) {
-        for (final BrowserErrorLogMatcher matcher : getLogs()) {
-            boolean matched = false;
-            for (final BrowserErrorLog log : logs) {
-                try {
-                    matcher.verify(log);
-                    matched = true;
-                } catch (Throwable throwable) {
-
-                }
-            }
-            if (!matched) {
-                fail("\nExpected: %s\n Actual: %s", getLogs(), logs);
-            }
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/common/KeyValue.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/common/KeyValue.java
deleted file mode 100644
index 1ca73de..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/common/KeyValue.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.e2e.common;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-@Accessors(chain = true)
-public class KeyValue {
-
-    private String key;
-    private String value;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/common/KeyValueMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/common/KeyValueMatcher.java
deleted file mode 100644
index 7ae538b..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/common/KeyValueMatcher.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.e2e.common;
-
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static java.util.Objects.nonNull;
-
-@Setter
-@Getter
-@ToString
-@EqualsAndHashCode(callSuper = true)
-public class KeyValueMatcher extends AbstractMatcher<KeyValue> {
-
-    private String key;
-    private String value;
-
-    @Override
-    public void verify(final KeyValue keyValue) {
-        if (nonNull(getKey())) {
-            doVerify(getKey(), keyValue.getKey());
-        }
-        if (nonNull(getValue())) {
-            doVerify(getValue(), keyValue.getValue());
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfiguration.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfiguration.java
deleted file mode 100644
index 778d5e9..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfiguration.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.e2e.dashboard;
-
-import lombok.Data;
-
-@Data
-public class DashboardConfiguration {
-    private String name;
-    private TemplateType type;
-    private String configuration;
-    private boolean activated;
-    private boolean disabled;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfigurationListWrapper.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfigurationListWrapper.java
deleted file mode 100644
index 61924b4..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfigurationListWrapper.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.e2e.dashboard;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class DashboardConfigurationListWrapper {
-
-    private List<DashboardConfiguration> configurations;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfigurationMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfigurationMatcher.java
deleted file mode 100644
index a47870e..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfigurationMatcher.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.e2e.dashboard;
-
-import lombok.Data;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-@Data
-public class DashboardConfigurationMatcher extends AbstractMatcher<DashboardConfiguration> {
-    private String name;
-    private String type;
-    private String configuration;
-    private String activated;
-    private String disabled;
-
-    @Override
-    public void verify(final DashboardConfiguration configuration) {
-        doVerify(this.name, configuration.getName());
-        doVerify(this.type, String.valueOf(configuration.getType()));
-        doVerify(this.configuration, configuration.getConfiguration());
-        doVerify(this.activated, configuration.isActivated());
-        doVerify(this.disabled, configuration.isDisabled());
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfigurations.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfigurations.java
deleted file mode 100644
index 128f08b..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfigurations.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.e2e.dashboard;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class DashboardConfigurations {
-    private List<DashboardConfiguration> configurations;
-
-    public int size() {
-        return configurations.size();
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfigurationsMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfigurationsMatcher.java
deleted file mode 100644
index e917bbe..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardConfigurationsMatcher.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.e2e.dashboard;
-
-import java.util.List;
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-@Getter
-@Setter
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class DashboardConfigurationsMatcher extends AbstractMatcher<DashboardConfigurations> {
-    private List<DashboardConfigurationMatcher> configurations;
-
-    @Override
-    public void verify(final DashboardConfigurations configurations) {
-        DashboardConfigurationMatcher matcher = this.configurations.get(0);
-        for (int i = 0; i < configurations.size(); i++) {
-            DashboardConfiguration configuration = configurations.getConfigurations().get(i);
-            if (matcher.getName().equals(configuration.getName())) {
-                matcher.verify(configuration);
-                return;
-            }
-        }
-        throw new RuntimeException("Assertion failed!");
-    }
-}
\ No newline at end of file
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardSetting.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardSetting.java
deleted file mode 100644
index bfff14c..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/DashboardSetting.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.e2e.dashboard;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-@Accessors(fluent = true)
-public class DashboardSetting {
-    private String name;
-    private TemplateType type;
-    private String configuration;
-    private boolean active;
-
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/TemplateChangeStatus.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/TemplateChangeStatus.java
deleted file mode 100644
index 80552d2..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/TemplateChangeStatus.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.e2e.dashboard;
-
-import lombok.Data;
-
-@Data
-public class TemplateChangeStatus {
-    private boolean status;
-    private String message;
-}
\ No newline at end of file
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/TemplateChangeStatusWrapper.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/TemplateChangeStatusWrapper.java
deleted file mode 100644
index ea2c9be..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/TemplateChangeStatusWrapper.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.e2e.dashboard;
-
-import lombok.Data;
-
-@Data
-public class TemplateChangeStatusWrapper {
-    private TemplateChangeStatus changeStatusResult;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/TemplateType.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/TemplateType.java
deleted file mode 100644
index 6a5a5d7..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/dashboard/TemplateType.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.e2e.dashboard;
-
-public enum TemplateType {
-    DASHBOARD,
-    TOPOLOGY_SERVICE,
-    TOPOLOGY_INSTANCE,
-    TOPOLOGY_ENDPOINT,
-    TOPOLOGY_SERVICE_RELATION,
-    TOPOLOGY_SERVICE_INSTANCE_RELATION,
-    TOPOLOGY_ENDPOINT_RELATION;
-
-    public static TemplateType forName(String name) {
-        return Enum.valueOf(TemplateType.class, name.toUpperCase());
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/Event.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/Event.java
deleted file mode 100644
index 375ea72..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/Event.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.e2e.event;
-
-import java.util.List;
-import lombok.Data;
-import lombok.experimental.Accessors;
-import org.apache.skywalking.e2e.common.KeyValue;
-
-@Data
-@Accessors(chain = true)
-public class Event {
-    private String uuid;
-
-    private Source source;
-
-    private String name;
-
-    private String type;
-
-    private String message;
-
-    private List<KeyValue> parameters;
-
-    private String startTime;
-
-    private String endTime;
-
-    @Data
-    @Accessors(chain = true)
-    static class Source {
-        private String service;
-
-        private String serviceInstance;
-
-        private String endpoint;
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/EventData.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/EventData.java
deleted file mode 100644
index 6eba6f4..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/EventData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.e2e.event;
-
-import java.util.List;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-public class EventData {
-    @Data
-    @Accessors(chain = true)
-    public static class Events {
-        private List<Event> data;
-    }
-
-    private Events events;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/EventMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/EventMatcher.java
deleted file mode 100644
index b063d90..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/EventMatcher.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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.e2e.event;
-
-import java.util.List;
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-import org.apache.skywalking.e2e.common.KeyValue;
-import org.apache.skywalking.e2e.common.KeyValueMatcher;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static java.util.Objects.nonNull;
-import static org.assertj.core.api.Assertions.fail;
-
-@Setter
-@Getter
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class EventMatcher extends AbstractMatcher<Event> {
-    private String uuid;
-
-    private Source source;
-
-    private String name;
-
-    private String type;
-
-    private String message;
-
-    private List<KeyValueMatcher> parameters;
-
-    private String startTime;
-
-    private String endTime;
-
-    @Override
-    public void verify(final Event event) {
-        if (nonNull(getUuid())) {
-            doVerify(getUuid(), event.getUuid());
-        }
-        if (nonNull(getSource())) {
-            if (nonNull(getSource().getService())) {
-                doVerify(getSource().getService(), event.getSource().getService());
-            }
-            if (nonNull(getSource().getServiceInstance())) {
-                doVerify(getSource().getServiceInstance(), event.getSource().getServiceInstance());
-            }
-            if (nonNull(getSource().getEndpoint())) {
-                doVerify(getSource().getEndpoint(), event.getSource().getEndpoint());
-            }
-        }
-        if (nonNull(getName())) {
-            doVerify(getName(), event.getName());
-        }
-        if (nonNull(getType())) {
-            doVerify(getType(), event.getType());
-        }
-        if (nonNull(getMessage())) {
-            doVerify(getMessage(), event.getMessage());
-        }
-        if (nonNull(getStartTime())) {
-            doVerify(getStartTime(), event.getStartTime());
-        }
-        if (nonNull(getEndTime())) {
-            doVerify(getEndTime(), event.getEndTime());
-        }
-        if (nonNull(getParameters())) {
-            for (final KeyValueMatcher matcher : getParameters()) {
-                boolean matched = false;
-                for (final KeyValue keyValue : event.getParameters()) {
-                    try {
-                        matcher.verify(keyValue);
-                        matched = true;
-                    } catch (Throwable ignore) {
-
-                    }
-                }
-                if (!matched) {
-                    fail("\nExpected: %s\n Actual: %s", getParameters(), event.getParameters());
-                }
-            }
-        }
-    }
-
-    @Getter
-    @Setter
-    @ToString
-    public static class Source {
-        private String service;
-
-        private String serviceInstance;
-
-        private String endpoint;
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/EventsMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/EventsMatcher.java
deleted file mode 100644
index 06c1322..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/EventsMatcher.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.e2e.event;
-
-import java.util.LinkedList;
-import java.util.List;
-import lombok.Data;
-
-import static org.assertj.core.api.Assertions.fail;
-
-@Data
-public class EventsMatcher {
-
-    private List<EventMatcher> events;
-
-    public EventsMatcher() {
-        this.events = new LinkedList<>();
-    }
-
-    public void verifyLoosely(final List<Event> events) {
-        for (final EventMatcher matcher : getEvents()) {
-            boolean matched = false;
-            for (final Event log : events) {
-                try {
-                    matcher.verify(log);
-                    matched = true;
-                } catch (Throwable e) {
-                    // ignore
-                }
-            }
-            if (!matched) {
-                fail("\nExpected: %s\n Actual: %s", getEvents(), events);
-            }
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/EventsQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/EventsQuery.java
deleted file mode 100644
index c0399ca..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/event/EventsQuery.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.e2e.event;
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.Accessors;
-import org.apache.skywalking.e2e.AbstractQuery;
-
-@Getter
-@Setter
-@Accessors(fluent = true)
-public class EventsQuery extends AbstractQuery<EventsQuery> {
-    private String uuid;
-    private String pageNum = "1";
-    private String pageSize = "20";
-    private String needTotal = "true";
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/exception/AssertFailedException.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/exception/AssertFailedException.java
deleted file mode 100644
index f0f5933..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/exception/AssertFailedException.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.e2e.exception;
-
-public abstract class AssertFailedException extends RuntimeException {
-
-    private static final long serialVersionUID = 8870675340514007954L;
-
-    protected AssertFailedException(String message) {
-        super(message);
-    }
-
-    protected AssertFailedException() {
-    }
-
-    public abstract String getCauseMessage();
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/Log.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/Log.java
deleted file mode 100644
index aa77b61..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/Log.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.e2e.log;
-
-import java.util.List;
-import lombok.Data;
-import lombok.experimental.Accessors;
-import org.apache.skywalking.e2e.common.KeyValue;
-
-@Data
-@Accessors(chain = true)
-public class Log {
-
-    private String serviceName;
-    private String serviceId;
-    private String serviceInstanceName;
-    private String serviceInstanceId;
-    private String endpointName;
-    private String endpointId;
-    private String traceId;
-    private Long timestamp;
-    private String contentType;
-    private String content;
-    private List<KeyValue> tags;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/LogData.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/LogData.java
deleted file mode 100644
index d58a8a5..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/LogData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.e2e.log;
-
-import java.util.List;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-public class LogData {
-    @Data
-    @Accessors(chain = true)
-    public static class Logs {
-        private List<Log> data;
-    }
-
-    private Logs logs;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/LogMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/LogMatcher.java
deleted file mode 100644
index 366880b..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/LogMatcher.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * 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.e2e.log;
-
-import java.util.List;
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-import org.apache.skywalking.e2e.common.KeyValue;
-import org.apache.skywalking.e2e.common.KeyValueMatcher;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static java.util.Objects.nonNull;
-import static org.assertj.core.api.Assertions.fail;
-
-@Setter
-@Getter
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class LogMatcher extends AbstractMatcher<Log> {
-    private String serviceName;
-    private String serviceId;
-    private String serviceInstanceName;
-    private String serviceInstanceId;
-    private String endpointName;
-    private String endpointId;
-    private String traceId;
-    private String timestamp;
-    private String contentType;
-    private String content;
-    private List<KeyValueMatcher> tags;
-
-    @Override
-    public void verify(final Log log) {
-        if (nonNull(getServiceName())) {
-            doVerify(getServiceName(), log.getServiceName());
-        }
-        if (nonNull(getServiceId())) {
-            doVerify(getServiceId(), log.getServiceId());
-        }
-        if (nonNull(getServiceInstanceName())) {
-            doVerify(getServiceInstanceName(), log.getServiceInstanceName());
-        }
-        if (nonNull(getServiceInstanceId())) {
-            doVerify(getServiceInstanceId(), log.getServiceInstanceId());
-        }
-        if (nonNull(getEndpointName())) {
-            doVerify(getEndpointName(), log.getEndpointName());
-        }
-        if (nonNull(getEndpointId())) {
-            doVerify(getEndpointId(), log.getEndpointId());
-        }
-        if (nonNull(getTraceId())) {
-            doVerify(getTraceId(), log.getTraceId());
-        }
-        if (nonNull(getTimestamp())) {
-            doVerify(getTimestamp(), log.getTimestamp());
-        }
-        if (nonNull(getContentType())) {
-            doVerify(getContentType(), log.getContentType());
-        }
-        if (nonNull(getContent())) {
-            doVerify(getContent(), log.getContent());
-        }
-        if (nonNull(getTags())) {
-            for (final KeyValueMatcher matcher : getTags()) {
-                boolean matched = false;
-                for (final KeyValue keyValue : log.getTags()) {
-                    try {
-                        matcher.verify(keyValue);
-                        matched = true;
-                    } catch (Throwable ignore) {
-
-                    }
-                }
-                if (!matched) {
-                    fail("\nExpected: %s\n Actual: %s", getTags(), log.getTags());
-                }
-            }
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/LogsMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/LogsMatcher.java
deleted file mode 100644
index d2851d1..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/LogsMatcher.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.e2e.log;
-
-import java.util.LinkedList;
-import java.util.List;
-import lombok.Data;
-
-import static org.assertj.core.api.Assertions.fail;
-
-@Data
-public class LogsMatcher {
-
-    private List<LogMatcher> logs;
-
-    public LogsMatcher() {
-        this.logs = new LinkedList<>();
-    }
-
-    public void verifyLoosely(final List<Log> logs) {
-        for (final LogMatcher matcher : getLogs()) {
-            boolean matched = false;
-            for (final Log log : logs) {
-                try {
-                    matcher.verify(log);
-                    matched = true;
-                } catch (Throwable e) {
-                    // ignore
-                }
-            }
-            if (!matched) {
-                fail("\nExpected: %s\n Actual: %s", getLogs(), logs);
-            }
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/LogsQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/LogsQuery.java
deleted file mode 100644
index f894456..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/LogsQuery.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * 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.e2e.log;
-
-import org.apache.skywalking.e2e.AbstractQuery;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class LogsQuery extends AbstractQuery<LogsQuery> {
-
-    private String serviceId;
-    private String endpointId = "";
-    private String pageNum = "1";
-    private String pageSize = "15";
-    private String needTotal = "true";
-    private String keywordsOfContent = "";
-    private String excludingKeywordsOfContent = "";
-    private List<Map<String, String>> tags = Collections.emptyList();
-
-    public String serviceId() {
-        return serviceId;
-    }
-
-    public LogsQuery serviceId(String serviceId) {
-        this.serviceId = serviceId;
-        return this;
-    }
-
-    public String endpointId() {
-        return endpointId;
-    }
-
-    public LogsQuery endpointId(String endpointId) {
-        this.endpointId = endpointId;
-        return this;
-    }
-
-    public String pageNum() {
-        return pageNum;
-    }
-
-    public LogsQuery pageNum(String pageNum) {
-        this.pageNum = pageNum;
-        return this;
-    }
-
-    public String pageSize() {
-        return pageSize;
-    }
-
-    public LogsQuery pageSize(String pageSize) {
-        this.pageSize = pageSize;
-        return this;
-    }
-
-    public String needTotal() {
-        return needTotal;
-    }
-
-    public LogsQuery needTotal(String needTotal) {
-        this.needTotal = needTotal;
-        return this;
-    }
-
-    public LogsQuery keywordsOfContent(String... keywords) {
-        this.keywordsOfContent = joinQuotes(keywords);
-        return this;
-    }
-
-    public String keywordsOfContent() {
-        return keywordsOfContent;
-    }
-
-    public LogsQuery excludingKeywordsOfContent(String... keywords) {
-        this.excludingKeywordsOfContent = joinQuotes(keywords);
-        return this;
-    }
-
-    public String excludingKeywordsOfContent() {
-        return excludingKeywordsOfContent;
-    }
-
-    private String joinQuotes(String... keywords) {
-        for (int i = 0; i < keywords.length; i++) {
-            String keyword = keywords[i];
-            keywords[i] = "\"" + keyword + "\"";
-        }
-        return String.join(",", keywords);
-    }
-
-    public List<Map<String, String>> tags() {
-        return tags;
-    }
-
-    public LogsQuery tags(List<Map<String, String>> tags) {
-        this.tags = tags;
-        return this;
-    }
-
-    public LogsQuery addTag(String key, String value) {
-        if (Collections.EMPTY_LIST.equals(tags)) {
-            tags = new ArrayList<>();
-        }
-        Map<String, String> tag = new HashMap<>();
-        tag.put("key", key);
-        tag.put("value", value);
-        tags.add(tag);
-        return this;
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/SupportQueryLogsByKeywords.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/SupportQueryLogsByKeywords.java
deleted file mode 100644
index e1f954b..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/log/SupportQueryLogsByKeywords.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.e2e.log;
-
-import lombok.Data;
-
-@Data
-public class SupportQueryLogsByKeywords {
-
-    private boolean support;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/AllOfMetricsMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/AllOfMetricsMatcher.java
deleted file mode 100644
index 7d76ebf..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/AllOfMetricsMatcher.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class AllOfMetricsMatcher extends AbstractMatcher<Metrics> {
-    private MetricsValueMatcher value;
-
-    @Override
-    public void verify(Metrics metrics) {
-        assertThat(metrics.getValues()).isNotEmpty();
-        assertThat(metrics.getValues()).allMatch(value -> {
-            try {
-                AllOfMetricsMatcher.this.getValue().verify(value);
-                return true;
-            } catch (Throwable t) {
-                return false;
-            }
-        });
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/AtLeastOneOfMetricsMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/AtLeastOneOfMetricsMatcher.java
deleted file mode 100644
index 0625392..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/AtLeastOneOfMetricsMatcher.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-import org.assertj.core.api.Condition;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class AtLeastOneOfMetricsMatcher extends AbstractMatcher<Metrics> {
-    private MetricsValueMatcher value;
-
-    @Override
-    public void verify(Metrics metrics) {
-        assertThat(metrics.getValues()).isNotEmpty();
-        assertThat(metrics.getValues()).areAtLeastOne(new Condition<MetricsValue>() {
-            @Override
-            public boolean matches(MetricsValue value) {
-                try {
-                    AtLeastOneOfMetricsMatcher.this.getValue().verify(value);
-                    return true;
-                } catch (Throwable t) {
-                    return false;
-                }
-            }
-        });
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/BrowserMetricsQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/BrowserMetricsQuery.java
deleted file mode 100644
index a8c910e..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/BrowserMetricsQuery.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.apache.skywalking.e2e.AbstractQuery;
-
-@Data
-@Accessors(fluent = true)
-@EqualsAndHashCode(callSuper = true)
-public class BrowserMetricsQuery extends AbstractQuery<BrowserMetricsQuery> {
-    public static final String BROWSER_APP_PV = "browser_app_pv";
-    public static final String BROWSER_APP_ERROR_RATE = "browser_app_error_rate";
-    public static final String BROWSER_APP_ERROR_SUM = "browser_app_error_sum";
-
-    public static final String[] ALL_BROWSER_METRICS = {
-        BROWSER_APP_PV,
-        BROWSER_APP_ERROR_SUM,
-        BROWSER_APP_ERROR_RATE
-    };
-
-    public static final String BROWSER_APP_SINGLE_VERSION_PV = "browser_app_single_version_pv";
-    public static final String BROWSER_APP_SINGLE_VERSION_ERROR_RATE = "browser_app_single_version_error_rate";
-    public static final String BROWSER_APP_SINGLE_VERSION_ERROR_SUM = "browser_app_single_version_error_sum";
-
-    public static final String[] ALL_BROWSER_SINGLE_VERSION_METRICS = {
-        BROWSER_APP_SINGLE_VERSION_PV,
-        BROWSER_APP_SINGLE_VERSION_ERROR_RATE,
-        BROWSER_APP_SINGLE_VERSION_ERROR_SUM
-    };
-
-    public static final String BROWSER_APP_PAGE_PV = "browser_app_page_pv";
-    public static final String BROWSER_APP_PAGE_ERROR_RATE = "browser_app_page_error_rate";
-    public static final String BROWSER_APP_PAGE_ERROR_SUM = "browser_app_page_error_sum";
-
-    public static final String BROWSER_APP_PAGE_AJAX_ERROR_SUM = "browser_app_page_ajax_error_sum";
-    public static final String BROWSER_APP_PAGE_RESOURCE_ERROR_SUM = "browser_app_page_resource_error_sum";
-    public static final String BROWSER_APP_PAGE_JS_ERROR_SUM = "browser_app_page_js_error_sum";
-    public static final String BROWSER_APP_PAGE_UNKNOWN_ERROR_SUM = "browser_app_page_unknown_error_sum";
-
-    public static final String BROWSER_APP_PAGE_REDIRECT_AVG = "browser_app_page_redirect_avg";
-    public static final String BROWSER_APP_PAGE_DNS_AVG = "browser_app_page_dns_avg";
-    public static final String BROWSER_APP_PAGE_TTFB_AVG = "browser_app_page_ttfb_avg";
-    public static final String BROWSER_APP_PAGE_TCP_AVG = "browser_app_page_tcp_avg";
-    public static final String BROWSER_APP_PAGE_TRANS_AVG = "browser_app_page_trans_avg";
-    public static final String BROWSER_APP_PAGE_DOM_ANALYSIS_AVG = "browser_app_page_dom_analysis_avg";
-    public static final String BROWSER_APP_PAGE_FPT_AVG = "browser_app_page_fpt_avg";
-    public static final String BROWSER_APP_PAGE_DOM_READY_AVG = "browser_app_page_dom_ready_avg";
-    public static final String BROWSER_APP_PAGE_LOAD_PAGE_AVG = "browser_app_page_load_page_avg";
-    public static final String BROWSER_APP_PAGE_RES_AVG = "browser_app_page_res_avg";
-    public static final String BROWSER_APP_PAGE_SSL_AVG = "browser_app_page_ssl_avg";
-    public static final String BROWSER_APP_PAGE_TTL_AVG = "browser_app_page_ttl_avg";
-    public static final String BROWSER_APP_PAGE_FIRST_PACK_AVG = "browser_app_page_first_pack_avg";
-    public static final String BROWSER_APP_PAGE_FMP_AVG = "browser_app_page_fmp_avg";
-
-    public static final String[] ALL_BROWSER_PAGE_METRICS = {
-        BROWSER_APP_PAGE_PV,
-        BROWSER_APP_PAGE_ERROR_RATE,
-        BROWSER_APP_PAGE_ERROR_SUM,
-        BROWSER_APP_PAGE_AJAX_ERROR_SUM,
-        BROWSER_APP_PAGE_RESOURCE_ERROR_SUM,
-        BROWSER_APP_PAGE_JS_ERROR_SUM,
-        BROWSER_APP_PAGE_UNKNOWN_ERROR_SUM,
-        BROWSER_APP_PAGE_REDIRECT_AVG,
-        BROWSER_APP_PAGE_DNS_AVG,
-        BROWSER_APP_PAGE_TTFB_AVG,
-        BROWSER_APP_PAGE_TCP_AVG,
-        BROWSER_APP_PAGE_TRANS_AVG,
-        BROWSER_APP_PAGE_DOM_ANALYSIS_AVG,
-        BROWSER_APP_PAGE_FPT_AVG,
-        BROWSER_APP_PAGE_DOM_READY_AVG,
-        BROWSER_APP_PAGE_LOAD_PAGE_AVG,
-        BROWSER_APP_PAGE_RES_AVG,
-        BROWSER_APP_PAGE_SSL_AVG,
-        BROWSER_APP_PAGE_TTL_AVG,
-        BROWSER_APP_PAGE_FIRST_PACK_AVG,
-        BROWSER_APP_PAGE_FMP_AVG
-    };
-
-    public static final String BROWSER_APP_PAGE_FPT_PERCENTILE = "browser_app_page_fpt_percentile";
-    public static final String BROWSER_APP_PAGE_DOM_READY_PERCENTILE = "browser_app_page_dom_ready_percentile";
-    public static final String BROWSER_APP_PAGE_LOAD_PAGE_PERCENTILE = "browser_app_page_load_page_percentile";
-    public static final String BROWSER_APP_PAGE_TTL_PERCENTILE = "browser_app_page_ttl_percentile";
-    public static final String BROWSER_APP_PAGE_FIRST_PACK_PERCENTILE = "browser_app_page_first_pack_percentile";
-    public static final String BROWSER_APP_PAGE_FMP_PERCENTILE = "browser_app_page_fmp_percentile";
-
-    public static final String[] ALL_BROWSER_PAGE_MULTIPLE_LINEAR_METRICS = {
-        BROWSER_APP_PAGE_FPT_PERCENTILE,
-        BROWSER_APP_PAGE_TTL_PERCENTILE,
-        BROWSER_APP_PAGE_DOM_READY_PERCENTILE,
-        BROWSER_APP_PAGE_LOAD_PAGE_PERCENTILE,
-        BROWSER_APP_PAGE_FIRST_PACK_PERCENTILE,
-        BROWSER_APP_PAGE_FMP_PERCENTILE
-    };
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/Metrics.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/Metrics.java
deleted file mode 100644
index 79f2600..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/Metrics.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import java.util.ArrayList;
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class Metrics {
-    private List<MetricsValue> values = new ArrayList<>();
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsData.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsData.java
deleted file mode 100644
index 8a629d6..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsData.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import lombok.Data;
-
-@Data
-public class MetricsData {
-    private Metrics metrics;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsMatcher.java
deleted file mode 100644
index 0ae938c..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsMatcher.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.skywalking.e2e.SimpleQueryClient;
-import org.apache.skywalking.e2e.utils.Times;
-
-@Slf4j
-public class MetricsMatcher {
-
-    public static void verifyMetrics(final SimpleQueryClient queryClient,
-                                     final String metricName,
-                                     final String id,
-                                     final LocalDateTime minutesAgo) throws Exception {
-        verifyMetrics(queryClient, metricName, id, minutesAgo, 0, null);
-    }
-
-    public static void verifyMetrics(final SimpleQueryClient queryClient,
-                                     final String metricName,
-                                     final String id,
-                                     final LocalDateTime minutesAgo,
-                                     final long retryInterval,
-                                     final Runnable generateTraffic) throws Exception {
-        boolean valid = false;
-        while (!valid) {
-            final Metrics metrics = queryClient.metrics(
-                new MetricsQuery().stepByMinute()
-                                  .metricsName(metricName)
-                                  .start(minutesAgo)
-                                  .end(Times.now().plusMinutes(1))
-                                  .id(id));
-            LOGGER.info("{}: {}", metricName, metrics);
-            AtLeastOneOfMetricsMatcher instanceRespTimeMatcher = new AtLeastOneOfMetricsMatcher();
-            MetricsValueMatcher greaterThanZero = new MetricsValueMatcher();
-            greaterThanZero.setValue("gt 0");
-            instanceRespTimeMatcher.setValue(greaterThanZero);
-            try {
-                instanceRespTimeMatcher.verify(metrics);
-                valid = true;
-            } catch (Throwable e) {
-                if (generateTraffic != null) {
-                    generateTraffic.run();
-                    Thread.sleep(retryInterval);
-                } else {
-                    throw e;
-                }
-            }
-        }
-    }
-
-    public static void verifyPercentileMetrics(final SimpleQueryClient queryClient,
-                                               final String metricName,
-                                               final String id,
-                                               final LocalDateTime minutesAgo) throws Exception {
-        verifyPercentileMetrics(queryClient, metricName, id, minutesAgo, 0, null);
-    }
-
-    public static void verifyPercentileMetrics(final SimpleQueryClient queryClient,
-                                               final String metricName,
-                                               final String id,
-                                               final LocalDateTime minutesAgo,
-                                               final long retryInterval,
-                                               final Runnable generateTraffic) throws Exception {
-        boolean valid = false;
-        while (!valid) {
-            final List<Metrics> metricsArray = queryClient.multipleLinearMetrics(
-                new MetricsQuery().stepByMinute()
-                                  .metricsName(metricName)
-                                  .start(minutesAgo)
-                                  .end(Times.now().plusMinutes(1))
-                                  .id(id), "5");
-            LOGGER.info("{}: {}", metricName, metricsArray);
-            AtLeastOneOfMetricsMatcher matcher = new AtLeastOneOfMetricsMatcher();
-            MetricsValueMatcher greaterThanZero = new MetricsValueMatcher();
-            greaterThanZero.setValue("gt 0");
-            matcher.setValue(greaterThanZero);
-            try {
-                metricsArray.forEach(matcher::verify);
-                valid = true;
-            } catch (Throwable e) {
-                if (generateTraffic != null) {
-                    generateTraffic.run();
-                    Thread.sleep(retryInterval);
-                } else {
-                    throw e;
-                }
-            }
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsQuery.java
deleted file mode 100644
index 320182b..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsQuery.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import com.google.common.collect.ImmutableMap;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.apache.skywalking.e2e.AbstractQuery;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-@Data
-@Accessors(fluent = true)
-@EqualsAndHashCode(callSuper = true)
-public class MetricsQuery extends AbstractQuery<MetricsQuery> {
-    public static String SERVICE_SLA = "service_sla";
-    public static String SERVICE_CPM = "service_cpm";
-    public static String SERVICE_RESP_TIME = "service_resp_time";
-    public static String SERVICE_APDEX = "service_apdex";
-    public static String[] ALL_SERVICE_METRICS = {
-        SERVICE_SLA,
-        SERVICE_CPM,
-        SERVICE_RESP_TIME,
-        SERVICE_APDEX
-    };
-    public static String SERVICE_PERCENTILE = "service_percentile";
-    public static String[] ALL_SERVICE_MULTIPLE_LINEAR_METRICS = {
-        SERVICE_PERCENTILE
-    };
-
-    public static String ENDPOINT_CPM = "endpoint_cpm";
-    public static String ENDPOINT_AVG = "endpoint_avg";
-    public static String ENDPOINT_SLA = "endpoint_sla";
-    public static String[] ALL_ENDPOINT_METRICS = {
-        ENDPOINT_CPM,
-        ENDPOINT_AVG,
-        ENDPOINT_SLA,
-        };
-    public static String ENDPOINT_PERCENTILE = "endpoint_percentile";
-    public static String[] ALL_ENDPOINT_MULTIPLE_LINEAR_METRICS = {
-        ENDPOINT_PERCENTILE
-    };
-
-    public static String SERVICE_INSTANCE_RESP_TIME = "service_instance_resp_time";
-    public static String SERVICE_INSTANCE_CPM = "service_instance_cpm";
-    public static String SERVICE_INSTANCE_SLA = "service_instance_sla";
-    public static String[] ALL_INSTANCE_METRICS = {
-        SERVICE_INSTANCE_RESP_TIME,
-        SERVICE_INSTANCE_CPM,
-        SERVICE_INSTANCE_SLA
-    };
-
-    public static String INSTANCE_JVM_MEMORY_HEAP = "instance_jvm_memory_heap";
-    public static String INSTANCE_JVM_MEMORY_HEAP_MAX = "instance_jvm_memory_heap_max";
-    public static String INSTANCE_JVM_MEMORY_NOHEAP = "instance_jvm_memory_noheap";
-    public static String INSTANCE_JVM_THREAD_LIVE_COUNT = "instance_jvm_thread_live_count";
-    public static String INSTANCE_JVM_THREAD_DAEMON_COUNT = "instance_jvm_thread_daemon_count";
-    public static String INSTANCE_JVM_THREAD_PEAK_COUNT = "instance_jvm_thread_peak_count";
-    public static String INSTANCE_JVM_THREAD_RUNNABLE_STATE_THREAD_COUNT = "instance_jvm_thread_runnable_state_thread_count";
-    public static String INSTANCE_JVM_CLASS_LOADED_CLASS_COUNT = "instance_jvm_class_loaded_class_count";
-    public static String INSTANCE_JVM_CLASS_TOTAL_LOADED_CLASS_COUNT = "instance_jvm_class_total_loaded_class_count";
-    public static String[] ALL_INSTANCE_JVM_METRICS = {
-        INSTANCE_JVM_CLASS_TOTAL_LOADED_CLASS_COUNT,
-        INSTANCE_JVM_CLASS_LOADED_CLASS_COUNT,
-        INSTANCE_JVM_THREAD_RUNNABLE_STATE_THREAD_COUNT,
-        INSTANCE_JVM_THREAD_LIVE_COUNT,
-        INSTANCE_JVM_THREAD_DAEMON_COUNT,
-        INSTANCE_JVM_THREAD_PEAK_COUNT,
-        INSTANCE_JVM_MEMORY_NOHEAP,
-        INSTANCE_JVM_MEMORY_HEAP_MAX,
-        INSTANCE_JVM_MEMORY_HEAP,
-        };
-
-    public static String[] ALL_INSTANCE_JVM_METRICS_COMPAT = {
-        INSTANCE_JVM_THREAD_LIVE_COUNT,
-        INSTANCE_JVM_THREAD_DAEMON_COUNT,
-        INSTANCE_JVM_THREAD_PEAK_COUNT,
-        INSTANCE_JVM_MEMORY_NOHEAP,
-        INSTANCE_JVM_MEMORY_HEAP_MAX,
-        INSTANCE_JVM_MEMORY_HEAP,
-        };
-
-    public static String SERVICE_RELATION_CLIENT_CPM = "service_relation_client_cpm";
-    public static String SERVICE_RELATION_SERVER_CPM = "service_relation_server_cpm";
-    public static String SERVICE_RELATION_CLIENT_CALL_SLA = "service_relation_client_call_sla";
-    public static String SERVICE_RELATION_SERVER_CALL_SLA = "service_relation_server_call_sla";
-    public static String SERVICE_RELATION_CLIENT_RESP_TIME = "service_relation_client_resp_time";
-    public static String SERVICE_RELATION_SERVER_RESP_TIME = "service_relation_server_resp_time";
-    public static String SERVICE_RELATION_CLIENT_P99 = "service_relation_client_p99";
-    public static String SERVICE_RELATION_SERVER_P99 = "service_relation_server_p99";
-    public static String[] ALL_SERVICE_RELATION_CLIENT_METRICS = {
-        SERVICE_RELATION_CLIENT_CPM
-    };
-    public static String[] ENVOY_METRICS_SERVICE_RELATION_CLIENT_METRICS = {
-        "envoy_sr_cluster_up_cx_active"
-    };
-
-    public static String[] ALL_SERVICE_RELATION_SERVER_METRICS = {
-        SERVICE_RELATION_SERVER_CPM
-    };
-
-    public static String SERVICE_INSTANCE_RELATION_CLIENT_CPM = "service_instance_relation_client_cpm";
-    public static String SERVICE_INSTANCE_RELATION_SERVER_CPM = "service_instance_relation_server_cpm";
-    public static String SERVICE_INSTANCE_RELATION_CLIENT_CALL_SLA = "service_instance_relation_client_call_sla";
-    public static String SERVICE_INSTANCE_RELATION_SERVER_CALL_SLA = "service_instance_relation_server_call_sla";
-    public static String SERVICE_INSTANCE_RELATION_CLIENT_RESP_TIME = "service_instance_relation_client_resp_time";
-    public static String SERVICE_INSTANCE_RELATION_SERVER_RESP_TIME = "service_instance_relation_server_resp_time";
-    public static String SERVICE_INSTANCE_RELATION_CLIENT_P99 = "service_instance_relation_client_p99";
-    public static String SERVICE_INSTANCE_RELATION_SERVER_P99 = "service_instance_relation_server_p99";
-    public static String[] ALL_SERVICE_INSTANCE_RELATION_CLIENT_METRICS = {
-        SERVICE_INSTANCE_RELATION_CLIENT_CPM
-    };
-
-    public static String[] ALL_SERVICE_INSTANCE_RELATION_SERVER_METRICS = {
-        SERVICE_INSTANCE_RELATION_SERVER_CPM
-    };
-
-    public static String METER_INSTANCE_CPU_PERCENTAGE = "meter_oap_instance_cpu_percentage";
-    public static String METER_INSTANCE_JVM_MEMORY_BYTES_USED = "meter_oap_instance_jvm_memory_bytes_used";
-    public static String METER_INSTANCE_TRACE_COUNT = "meter_oap_instance_trace_count";
-    public static String METER_INSTANCE_METRICS_FIRST_AGGREGATION = "meter_oap_instance_metrics_first_aggregation";
-    public static String METER_INSTANCE_PERSISTENCE_PREPARE_COUNT = "meter_oap_instance_persistence_prepare_count";
-    public static String METER_INSTANCE_PERSISTENCE_EXECUTE_COUNT = "meter_oap_instance_persistence_execute_count";
-    public static String METER_JVM_THREAD_LIVE_COUNT = "meter_oap_jvm_thread_live_count";
-    public static String METER_JVM_THREAD_RUNNABLE_COUNT = "meter_oap_jvm_thread_runnable_count";
-    public static String METER_JVM_CLASS_LOADED_COUNT = "meter_oap_jvm_class_loaded_count";
-    public static String METER_JVM_CLASS_TOTAL_LOADED_COUNT = "meter_oap_jvm_class_total_loaded_count";
-
-    public static String[] ALL_SO11Y_LINER_METRICS = {
-        METER_INSTANCE_CPU_PERCENTAGE,
-        METER_INSTANCE_JVM_MEMORY_BYTES_USED,
-        METER_INSTANCE_METRICS_FIRST_AGGREGATION,
-        METER_INSTANCE_PERSISTENCE_PREPARE_COUNT,
-        METER_INSTANCE_PERSISTENCE_EXECUTE_COUNT,
-        METER_JVM_THREAD_LIVE_COUNT,
-        METER_JVM_THREAD_RUNNABLE_COUNT,
-        METER_JVM_CLASS_LOADED_COUNT,
-        METER_JVM_CLASS_TOTAL_LOADED_COUNT
-    };
-
-    public static String[] ALL_ENVOY_LINER_METRICS = {
-        "envoy_heap_memory_used",
-        "envoy_heap_memory_max_used",
-        "envoy_memory_allocated",
-        "envoy_memory_allocated_max",
-        "envoy_memory_physical_size",
-        "envoy_memory_physical_size_max",
-        "envoy_worker_threads",
-        "envoy_worker_threads_max"
-    };
-
-    public static Map<String, List<String>> ALL_ENVOY_LABELED_METRICS =
-        ImmutableMap.<String, List<String>>builder()
-                    .put(
-                        "envoy_cluster_membership_healthy",
-                        Arrays.asList("e2e::details")
-                    )
-                    .build();
-
-    public static String[] ALL_SO11Y_LABELED_METRICS = {
-        // Nothing to check for now.
-    };
-    private String id;
-    private String metricsName;
-
-    public static String METER_JVM_MEMORY_MAX = "meter_jvm_memory_max";
-    public static String METER_JVM_THREADS_LIVE = "meter_jvm_threads_live";
-    public static String METER_PROCESS_FILES_MAX = "meter_process_files_max";
-    public static String[] SIMPLE_MICROMETER_METERS = {
-        METER_JVM_MEMORY_MAX,
-        METER_JVM_THREADS_LIVE,
-        METER_PROCESS_FILES_MAX
-    };
-
-    public static Map<String, List<String>> SIMPLE_ZABBIX_METERS = ImmutableMap.<String, List<String>>builder()
-                                                                               .put(
-                                                                                   "meter_agent_system_cpu_util",
-                                                                                   Arrays.asList("idle")
-                                                                               )
-                                                                               .put(
-                                                                                   "meter_agent_vm_memory_size",
-                                                                                   Arrays.asList("total")
-                                                                               )
-                                                                               .put(
-                                                                                   "meter_agent_vfs_fs_size",
-                                                                                   Arrays.asList("/-total")
-                                                                               )
-                                                                               .build();
-
-    public static String[] SIMPLE_PROM_VM_METERS = {
-        "meter_vm_memory_used",
-        "meter_vm_memory_total",
-        "meter_vm_memory_available",
-        "meter_vm_disk_written",
-        "meter_vm_network_transmit",
-        "meter_vm_tcp_curr_estab",
-        "meter_vm_tcp_alloc",
-        "meter_vm_sockets_used",
-        "meter_vm_udp_inuse",
-        "meter_vm_filefd_allocated"
-    };
-
-    public static Map<String, List<String>> SIMPLE_PROM_VM_LABELED_METERS = ImmutableMap.<String, List<String>>builder()
-                                                                                        .put(
-                                                                                            "meter_vm_cpu_average_used",
-                                                                                            Arrays.asList("idle")
-                                                                                        )
-                                                                                        .put(
-                                                                                            "meter_vm_filesystem_percentage",
-                                                                                            Arrays.asList("/etc/hosts")
-                                                                                        )
-                                                                                        .build();
-}
-
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsValue.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsValue.java
deleted file mode 100644
index 1063b15..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsValue.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-@Accessors(chain = true)
-public class MetricsValue {
-    private String value;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsValueMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsValueMatcher.java
deleted file mode 100644
index f53a809..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MetricsValueMatcher.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import java.util.Objects;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class MetricsValueMatcher extends AbstractMatcher<MetricsValue> {
-    private String value;
-
-    @Override
-    public void verify(MetricsValue metricsValue) {
-        if (Objects.nonNull(getValue())) {
-            doVerify(getValue(), metricsValue.getValue());
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MultiMetricsData.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MultiMetricsData.java
deleted file mode 100644
index 3fb2069..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/MultiMetricsData.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class MultiMetricsData {
-    private List<Metrics> metrics;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadLabeledMetricsData.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadLabeledMetricsData.java
deleted file mode 100644
index 98f4665..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadLabeledMetricsData.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import java.util.List;
-
-import lombok.Data;
-
-@Data
-public class ReadLabeledMetricsData {
-    private List<ReadMetrics> readLabeledMetricsValues;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadLabeledMetricsQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadLabeledMetricsQuery.java
deleted file mode 100644
index 4144efe..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadLabeledMetricsQuery.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.apache.skywalking.e2e.AbstractQuery;
-
-import java.util.List;
-
-@Data
-@Accessors(fluent = true)
-@EqualsAndHashCode(callSuper = true)
-public class ReadLabeledMetricsQuery extends AbstractQuery<ReadLabeledMetricsQuery>  {
-
-    private String metricsName;
-
-    private String serviceName;
-    private String instanceName;
-    private String scope = "ServiceInstance";
-
-    private List<String> labels;
-
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadMetrics.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadMetrics.java
deleted file mode 100644
index dd85079..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadMetrics.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import lombok.Data;
-
-@Data
-public class ReadMetrics {
-    private String label;
-    private Metrics values;
-}
\ No newline at end of file
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadMetricsData.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadMetricsData.java
deleted file mode 100644
index 140db40..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadMetricsData.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import lombok.Data;
-
-@Data
-public class ReadMetricsData {
-    private ReadMetrics readMetricsValues;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadMetricsQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadMetricsQuery.java
deleted file mode 100644
index da24191..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/metrics/ReadMetricsQuery.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.e2e.metrics;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.apache.skywalking.e2e.AbstractQuery;
-
-@Data
-@Accessors(fluent = true)
-@EqualsAndHashCode(callSuper = true)
-public class ReadMetricsQuery extends AbstractQuery<ReadMetricsQuery> {
-
-    public static String METER_INSTANCE_CPU_PERCENTAGE = "meter_oap_instance_cpu_percentage";
-
-    public static String[] ALL_SO11Y_LINER_METRICS = {
-        METER_INSTANCE_CPU_PERCENTAGE
-    };
-
-    private String metricsName;
-
-    private String serviceName;
-
-    private String instanceName;
-
-    private String scope = "ServiceInstance";
-
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/creation/ProfileTaskCreationRequest.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/creation/ProfileTaskCreationRequest.java
deleted file mode 100644
index 208e4d7..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/creation/ProfileTaskCreationRequest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.e2e.profile.creation;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-@Setter
-@Getter
-@NoArgsConstructor
-@AllArgsConstructor
-@Builder
-public class ProfileTaskCreationRequest {
-    private String serviceId;
-    private String endpointName;
-    private long startTime;
-    private int duration;
-    private int minDurationThreshold;
-    private int dumpPeriod;
-    private int maxSamplingCount;
-
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/creation/ProfileTaskCreationResult.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/creation/ProfileTaskCreationResult.java
deleted file mode 100644
index 213fb73..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/creation/ProfileTaskCreationResult.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.e2e.profile.creation;
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-
-/**
- * e2e profile, create profile task result entity
- */
-@Setter
-@Getter
-@ToString
-public class ProfileTaskCreationResult {
-    private String errorReason;
-    private String id;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/creation/ProfileTaskCreationResultMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/creation/ProfileTaskCreationResultMatcher.java
deleted file mode 100644
index d743d49..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/creation/ProfileTaskCreationResultMatcher.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.e2e.profile.creation;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class ProfileTaskCreationResultMatcher extends AbstractMatcher<ProfileTaskCreationResult> {
-    @Override
-    public void verify(ProfileTaskCreationResult profileTaskCreationResult) {
-        doVerify("not null", profileTaskCreationResult.getId());
-        assertThat(profileTaskCreationResult.getErrorReason()).isNullOrEmpty();
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/creation/ProfileTaskCreationResultWrapper.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/creation/ProfileTaskCreationResultWrapper.java
deleted file mode 100644
index da75773..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/creation/ProfileTaskCreationResultWrapper.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.e2e.profile.creation;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * wrap profile task create result, for profileTaskCreation.gql
- */
-@Setter
-@Getter
-public class ProfileTaskCreationResultWrapper {
-    private ProfileTaskCreationResult creationResult;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileAnalyzation.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileAnalyzation.java
deleted file mode 100644
index f01cd9d..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileAnalyzation.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class ProfileAnalyzation {
-    private ProfileStackTrees data;
-
-    @Data
-    public static class ProfileStackTrees {
-        private List<ProfileStackTree> trees;
-    }
-
-    @Data
-    public static class ProfileStackTree {
-        private List<ProfileStackElement> elements;
-    }
-
-    @Data
-    public static class ProfileStackElement {
-        private String id;
-        private String parentId;
-        private String codeSignature;
-        private String duration;
-        private String durationChildExcluded;
-        private String count;
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileStackElementMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileStackElementMatcher.java
deleted file mode 100644
index c32fd28..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileStackElementMatcher.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class ProfileStackElementMatcher extends AbstractMatcher<ProfileAnalyzation.ProfileStackElement> {
-    private String id;
-    private String parentId;
-    private String codeSignature;
-    private String duration;
-    private String durationChildExcluded;
-    private String count;
-
-    @Override
-    public void verify(ProfileAnalyzation.ProfileStackElement element) {
-        doVerify(id, element.getId());
-        doVerify(parentId, element.getParentId());
-        doVerify(codeSignature, element.getCodeSignature());
-        doVerify(duration, element.getDuration());
-        doVerify(durationChildExcluded, element.getDurationChildExcluded());
-        doVerify(count, element.getCount());
-    }
-}
\ No newline at end of file
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileStackTreeMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileStackTreeMatcher.java
deleted file mode 100644
index a59a7ad..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileStackTreeMatcher.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import java.util.List;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class ProfileStackTreeMatcher extends AbstractMatcher<ProfileAnalyzation.ProfileStackTree> {
-
-    private List<ProfileStackElementMatcher> elements;
-
-    @Override
-    public void verify(ProfileAnalyzation.ProfileStackTree profileStackTree) {
-        int size = this.elements.size();
-
-        for (int i = 0; i < size; i++) {
-            boolean hasVerified = false;
-            for (int dataElement = 0; dataElement < profileStackTree.getElements().size(); dataElement++) {
-                try {
-                    elements.get(i).verify(profileStackTree.getElements().get(dataElement));
-                    hasVerified = true;
-                    break;
-                } catch (Throwable e) {
-                }
-            }
-
-            if (!hasVerified) {
-                throw new IllegalStateException("Cannot found " + elements.get(i).getCodeSignature());
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTask.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTask.java
deleted file mode 100644
index f909863..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTask.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import java.util.List;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-
-@Setter
-@Getter
-@ToString
-public class ProfileTask {
-    private String id;
-    private String serviceId;
-    private String endpointName;
-    private String startTime;
-    private String duration;
-    private String minDurationThreshold;
-    private String dumpPeriod;
-    private String maxSamplingCount;
-
-    private List<ProfileTaskLog> logs;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTaskLog.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTaskLog.java
deleted file mode 100644
index 567190d..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTaskLog.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import lombok.Data;
-
-@Data
-public class ProfileTaskLog {
-    private String id;
-    private String instanceId;
-    private String operationType;
-    private String operationTime;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTaskLogMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTaskLogMatcher.java
deleted file mode 100644
index f3e3c8b..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTaskLogMatcher.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class ProfileTaskLogMatcher extends AbstractMatcher<ProfileTaskLog> {
-
-    private String id;
-    private String instanceId;
-    private String operationType;
-    private String operationTime;
-
-    @Override
-    public void verify(ProfileTaskLog profileTaskLog) {
-        doVerify(id, profileTaskLog.getId());
-        doVerify(instanceId, profileTaskLog.getInstanceId());
-        doVerify(operationType, profileTaskLog.getOperationType());
-        doVerify(operationTime, profileTaskLog.getOperationTime());
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTaskMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTaskMatcher.java
deleted file mode 100644
index fd8c6ef..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTaskMatcher.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import java.util.List;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-import org.assertj.core.api.Assertions;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class ProfileTaskMatcher extends AbstractMatcher<ProfileTask> {
-
-    private String id;
-    private String serviceId;
-    private String endpointName;
-    private String startTime;
-    private String duration;
-    private String minDurationThreshold;
-    private String dumpPeriod;
-    private String maxSamplingCount;
-
-    private List<ProfileTaskLogMatcher> logs;
-
-    @Override
-    public void verify(ProfileTask task) {
-        doVerify(id, task.getId());
-        doVerify(serviceId, task.getServiceId());
-        doVerify(endpointName, task.getEndpointName());
-        doVerify(startTime, task.getStartTime());
-        doVerify(duration, task.getDuration());
-        doVerify(minDurationThreshold, task.getMinDurationThreshold());
-        doVerify(dumpPeriod, task.getDumpPeriod());
-
-        // verify logs
-        Assertions.assertThat(task.getLogs()).hasSameSizeAs(this.logs);
-        int size = this.getLogs().size();
-        for (int i = 0; i < size; i++) {
-            this.getLogs().get(i).verify(task.getLogs().get(i));
-        }
-    }
-
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTaskQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTaskQuery.java
deleted file mode 100644
index ba1a151..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTaskQuery.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.Accessors;
-import org.apache.skywalking.e2e.AbstractQuery;
-
-@Getter
-@Setter
-@Accessors(fluent = true)
-public class ProfileTaskQuery extends AbstractQuery<ProfileTaskQuery> {
-    private String serviceId;
-    private String endpointName;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTasks.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTasks.java
deleted file mode 100644
index f938c84..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfileTasks.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class ProfileTasks {
-    private List<ProfileTask> tasks;
-
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSegment.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSegment.java
deleted file mode 100644
index 0207b14..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSegment.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import java.util.List;
-import lombok.Data;
-import lombok.ToString;
-
-@Data
-public class ProfiledSegment {
-    private ProfiledSegmentData segment;
-
-    @Data
-    @ToString
-    public static class ProfiledSegmentData {
-        private List<ProfiledSpan> spans;
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSegmentMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSegmentMatcher.java
deleted file mode 100644
index 12fe9c8..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSegmentMatcher.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import java.util.List;
-import java.util.stream.Collectors;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class ProfiledSegmentMatcher extends AbstractMatcher<ProfiledSegment.ProfiledSegmentData> {
-    private List<ProfiledSpanMatcher> spans;
-
-    @Override
-    public void verify(ProfiledSegment.ProfiledSegmentData profiledSegmentData) {
-        assertThat(spans).hasSameSizeAs(profiledSegmentData.getSpans());
-
-        profiledSegmentData.setSpans(profiledSegmentData.getSpans().stream().sorted().collect(Collectors.toList()));
-
-        for (int i = 0; i < profiledSegmentData.getSpans().size(); i++) {
-            spans.get(i).verify(profiledSegmentData.getSpans().get(i));
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSpan.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSpan.java
deleted file mode 100644
index b07e00e..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSpan.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import com.google.common.primitives.Ints;
-import lombok.Data;
-import lombok.ToString;
-
-import java.util.List;
-
-@Data
-@ToString
-public class ProfiledSpan implements Comparable<ProfiledSpan> {
-    private String spanId;
-    private String parentSpanId;
-    private String serviceCode;
-    private String startTime;
-    private String endTime;
-    private String endpointName;
-    private List<ProfiledSpanTag> tags;
-
-    @Override
-    public int compareTo(ProfiledSpan o) {
-        return Ints.compare(Integer.parseInt(spanId), Integer.parseInt(o.spanId));
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSpanMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSpanMatcher.java
deleted file mode 100644
index 82e244e..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSpanMatcher.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import java.util.Comparator;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class ProfiledSpanMatcher extends AbstractMatcher<ProfiledSpan> {
-    private String spanId;
-    private String parentSpanId;
-    private String serviceCode;
-    private String startTime;
-    private String endTime;
-    private String endpointName;
-    private List<ProfiledSpanTagMatcher> tags;
-
-    @Override
-    public void verify(ProfiledSpan span) {
-        doVerify(spanId, span.getSpanId());
-        doVerify(parentSpanId, span.getParentSpanId());
-        doVerify(serviceCode, span.getServiceCode());
-        doVerify(startTime, span.getStartTime());
-        doVerify(endTime, span.getEndTime());
-        doVerify(endpointName, span.getEndpointName());
-
-        assertThat(tags).hasSameSizeAs(span.getTags());
-
-        tags.sort(Comparator.comparing(ProfiledSpanTagMatcher::getKey));
-        span.getTags().sort(Comparator.comparing(ProfiledSpanTag::getKey));
-
-        for (int i = 0; i < tags.size(); i++) {
-            tags.get(i).verify(span.getTags().get(i));
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSpanTag.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSpanTag.java
deleted file mode 100644
index 62042bf..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSpanTag.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import lombok.Data;
-import lombok.ToString;
-
-@Data
-@ToString
-public class ProfiledSpanTag {
-    private String key;
-    private String value;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSpanTagMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSpanTagMatcher.java
deleted file mode 100644
index ef44436..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfiledSpanTagMatcher.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class ProfiledSpanTagMatcher extends AbstractMatcher<ProfiledSpanTag> {
-    private String key;
-    private String value;
-
-    @Override
-    public void verify(ProfiledSpanTag profiledSpanTag) {
-        if (value == null) {
-            value = "";
-        }
-
-        doVerify(key, profiledSpanTag.getKey());
-        doVerify(value, profiledSpanTag.getValue());
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfilesTasksMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfilesTasksMatcher.java
deleted file mode 100644
index 921fcb7..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/ProfilesTasksMatcher.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import java.util.List;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-import org.assertj.core.api.Assertions;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class ProfilesTasksMatcher extends AbstractMatcher<ProfileTasks> {
-
-    private List<ProfileTaskMatcher> tasks;
-
-    @Override
-    public void verify(ProfileTasks matcher) {
-        Assertions.assertThat(matcher.getTasks()).hasSameSizeAs(getTasks());
-
-        int size = getTasks().size();
-
-        for (int i = 0; i < size; i++) {
-            getTasks().get(i).verify(matcher.getTasks().get(i));
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/Traces.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/Traces.java
deleted file mode 100644
index c07b973..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/profile/query/Traces.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.e2e.profile.query;
-
-import java.util.List;
-import lombok.Data;
-import org.apache.skywalking.e2e.trace.Trace;
-
-@Data
-public class Traces {
-    private List<Trace> traces;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/Service.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/Service.java
deleted file mode 100644
index 1bf0673..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/Service.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.e2e.service;
-
-import lombok.Data;
-
-@Data
-public class Service {
-    private String key;
-    private String label;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/ServiceMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/ServiceMatcher.java
deleted file mode 100644
index 894505d..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/ServiceMatcher.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.e2e.service;
-
-import java.util.Objects;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class ServiceMatcher extends AbstractMatcher<Service> {
-
-    private String key;
-    private String label;
-
-    @Override
-    public void verify(final Service service) {
-        if (Objects.nonNull(getKey())) {
-            verifyKey(service);
-        }
-
-        if (Objects.nonNull(getLabel())) {
-            verifyLabel(service);
-        }
-    }
-
-    private void verifyKey(Service service) {
-        final String expected = getKey();
-        final String actual = service.getKey();
-
-        doVerify(expected, actual);
-    }
-
-    private void verifyLabel(Service service) {
-        final String expected = getLabel();
-        final String actual = service.getLabel();
-
-        doVerify(expected, actual);
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/ServicesData.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/ServicesData.java
deleted file mode 100644
index f8ede07..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/ServicesData.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.e2e.service;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class ServicesData {
-    private List<Service> services;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/ServicesMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/ServicesMatcher.java
deleted file mode 100644
index 38cc9d9..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/ServicesMatcher.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.e2e.service;
-
-import java.util.LinkedList;
-import java.util.List;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.fail;
-
-@Data
-@Slf4j
-public class ServicesMatcher {
-    private List<ServiceMatcher> services;
-
-    public ServicesMatcher() {
-        this.services = new LinkedList<>();
-    }
-
-    public void verify(final List<Service> services) {
-        
-        LOGGER.info("services:{} matchers:{}", services, this.getServices());
-        assertThat(services).hasSameSizeAs(this.getServices());
-
-        for (int i = 0; i < getServices().size(); i++) {
-            boolean matched = false;
-            for (Service service : services) {
-                try {
-                    this.getServices().get(i).verify(service);
-                    matched = true;
-                } catch (Throwable ignored) {
-                }
-            }
-            if (!matched) {
-                fail("\nExpected: %s\nActual: %s", getServices(), services);
-            }
-        }
-    }
-
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/ServicesQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/ServicesQuery.java
deleted file mode 100644
index 67fc88f..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/ServicesQuery.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.e2e.service;
-
-import org.apache.skywalking.e2e.AbstractQuery;
-
-public class ServicesQuery extends AbstractQuery<ServicesQuery> {
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/Endpoint.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/Endpoint.java
deleted file mode 100644
index b3f83f0..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/Endpoint.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.e2e.service.endpoint;
-
-import lombok.Data;
-
-@Data
-public class Endpoint {
-    private String key;
-    private String label;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/EndpointMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/EndpointMatcher.java
deleted file mode 100644
index 1a6ce50..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/EndpointMatcher.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.e2e.service.endpoint;
-
-import java.util.Objects;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class EndpointMatcher extends AbstractMatcher<Endpoint> {
-    private String key;
-    private String label;
-
-    @Override
-    public void verify(final Endpoint endpoint) {
-        if (Objects.equals("/health", endpoint.getKey())) {
-            return;
-        }
-        if (Objects.nonNull(getKey())) {
-            doVerify(getKey(), endpoint.getKey());
-        }
-        if (Objects.nonNull(getLabel())) {
-            doVerify(getLabel(), endpoint.getLabel());
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/EndpointQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/EndpointQuery.java
deleted file mode 100644
index 944cf8e..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/EndpointQuery.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.e2e.service.endpoint;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-@Accessors(fluent = true)
-public class EndpointQuery {
-    private String serviceId;
-    private String keyword;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/Endpoints.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/Endpoints.java
deleted file mode 100644
index 6cb9980..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/Endpoints.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.e2e.service.endpoint;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class Endpoints {
-    private List<Endpoint> endpoints;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/EndpointsMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/EndpointsMatcher.java
deleted file mode 100644
index d75540f..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/endpoint/EndpointsMatcher.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.e2e.service.endpoint;
-
-import java.util.List;
-import java.util.Objects;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static org.assertj.core.api.Assertions.fail;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class EndpointsMatcher extends AbstractMatcher<Endpoints> {
-    private List<EndpointMatcher> endpoints;
-
-    @Override
-    public void verify(Endpoints endpoints) {
-        if (Objects.nonNull(getEndpoints())) {
-            for (final EndpointMatcher matcher : getEndpoints()) {
-                boolean matched = false;
-                for (final Endpoint endpoint : endpoints.getEndpoints()) {
-                    try {
-                        matcher.verify(endpoint);
-                        matched = true;
-                    } catch (Throwable ignored) {
-                    }
-                }
-                if (!matched) {
-                    fail("\nExpected: %s\n Actual: %s", getEndpoints(), endpoints);
-                }
-            }
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/Attribute.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/Attribute.java
deleted file mode 100644
index fa391f8..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/Attribute.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.e2e.service.instance;
-
-import lombok.Data;
-
-@Data
-public class Attribute {
-    private String name;
-    private String value;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/AttributeMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/AttributeMatcher.java
deleted file mode 100644
index 41cc61d..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/AttributeMatcher.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.e2e.service.instance;
-
-import java.util.Objects;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class AttributeMatcher extends AbstractMatcher<Attribute> {
-    private String name;
-    private String value;
-
-    @Override
-    public void verify(final Attribute attribute) {
-        if (Objects.nonNull(attribute.getName())) {
-            doVerify(getName(), attribute.getName());
-            doVerify(getValue(), attribute.getValue());
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/Instance.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/Instance.java
deleted file mode 100644
index 8498733..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/Instance.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.e2e.service.instance;
-
-import java.util.List;
-
-public class Instance {
-    private String key;
-    private String label;
-    private List<Attribute> attributes;
-    private String instanceUUID;
-
-    public String getKey() {
-        return key;
-    }
-
-    public Instance setKey(String key) {
-        this.key = key;
-        return this;
-    }
-
-    public String getLabel() {
-        return label;
-    }
-
-    public Instance setLabel(String label) {
-        this.label = label;
-        return this;
-    }
-
-    public List<Attribute> getAttributes() {
-        return attributes;
-    }
-
-    public void setAttributes(List<Attribute> attributes) {
-        this.attributes = attributes;
-    }
-
-    public String getInstanceUUID() {
-        return instanceUUID;
-    }
-
-    public Instance setInstanceUUID(String instanceUUID) {
-        this.instanceUUID = instanceUUID;
-        return this;
-    }
-
-    @Override
-    public String toString() {
-        return "Instance{" + "key='" + key + '\'' + ", label='" + label + '\'' + ", attributes=" + attributes + ", instanceUUID=" + instanceUUID + '}';
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/InstanceMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/InstanceMatcher.java
deleted file mode 100644
index da457e9..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/InstanceMatcher.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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.e2e.service.instance;
-
-import java.util.List;
-import java.util.Objects;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * A simple matcher to verify the given {@code Service} is expected
- */
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class InstanceMatcher extends AbstractMatcher<Instance> {
-
-    private String key;
-    private String label;
-    private String instanceUUID;
-    private List<AttributeMatcher> attributes;
-
-    @Override
-    public void verify(final Instance instance) {
-        if (Objects.nonNull(getKey())) {
-            verifyKey(instance);
-        }
-
-        if (Objects.nonNull(getLabel())) {
-            verifyLabel(instance);
-        }
-
-        if (Objects.nonNull(getInstanceUUID())) {
-            verifyInstanceUUID(instance);
-        }
-
-        if (Objects.nonNull(getAttributes())) {
-            verifyAttributes(instance);
-        }
-    }
-
-    private void verifyKey(Instance instance) {
-        final String expected = this.getKey();
-        final String actual = instance.getKey();
-
-        doVerify(expected, actual);
-    }
-
-    private void verifyLabel(Instance instance) {
-        final String expected = this.getLabel();
-        final String actual = String.valueOf(instance.getLabel());
-
-        doVerify(expected, actual);
-    }
-
-    private void verifyInstanceUUID(Instance instance) {
-        final String expected = this.getInstanceUUID();
-        final String actual = instance.getInstanceUUID();
-
-        doVerify(expected, actual);
-    }
-
-    private void verifyAttributes(Instance instance) {
-        final List<AttributeMatcher> expected = this.getAttributes();
-        final List<Attribute> actual = instance.getAttributes();
-
-        assertThat(actual).hasSameSizeAs(expected);
-
-        int size = expected.size();
-
-        for (int i = 0; i < size; i++) {
-            expected.get(i).verify(actual.get(i));
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/Instances.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/Instances.java
deleted file mode 100644
index a17658b..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/Instances.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.e2e.service.instance;
-
-import java.util.ArrayList;
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class Instances {
-    private List<Instance> instances = new ArrayList<>();
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/InstancesMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/InstancesMatcher.java
deleted file mode 100644
index 256f6f3..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/InstancesMatcher.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.e2e.service.instance;
-
-import java.util.LinkedList;
-import java.util.List;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-import org.assertj.core.api.Assertions;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class InstancesMatcher extends AbstractMatcher<Instances> {
-    private List<InstanceMatcher> instances;
-
-    public InstancesMatcher() {
-        this.instances = new LinkedList<>();
-    }
-
-    @Override
-    public void verify(final Instances instances) {
-        Assertions.assertThat(instances.getInstances()).hasSameSizeAs(this.getInstances());
-
-        int size = this.getInstances().size();
-
-        for (int i = 0; i < size; i++) {
-            this.getInstances().get(i).verify(instances.getInstances().get(i));
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/InstancesQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/InstancesQuery.java
deleted file mode 100644
index ca39334..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/service/instance/InstancesQuery.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.e2e.service.instance;
-
-import java.time.LocalDateTime;
-import java.time.ZoneOffset;
-import java.time.format.DateTimeFormatter;
-
-public class InstancesQuery {
-    private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HHmmss");
-
-    private String start = LocalDateTime.now(ZoneOffset.UTC).format(TIME_FORMATTER);
-    private String end = LocalDateTime.now(ZoneOffset.UTC).minusMinutes(15).format(TIME_FORMATTER);
-    private String step = "SECOND";
-    private String serviceId;
-
-    public String serviceId() {
-        return serviceId;
-    }
-
-    public InstancesQuery serviceId(String serviceId) {
-        this.serviceId = serviceId;
-        return this;
-    }
-
-    public String start() {
-        return start;
-    }
-
-    public InstancesQuery start(String start) {
-        this.start = start;
-        return this;
-    }
-
-    public InstancesQuery start(LocalDateTime start) {
-        this.start = start.format(TIME_FORMATTER);
-        return this;
-    }
-
-    public String end() {
-        return end;
-    }
-
-    public InstancesQuery end(String end) {
-        this.end = end;
-        return this;
-    }
-
-    public InstancesQuery end(LocalDateTime end) {
-        this.end = end.format(TIME_FORMATTER);
-        return this;
-    }
-
-    public String step() {
-        return step;
-    }
-
-    public InstancesQuery step(String step) {
-        this.step = step;
-        return this;
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/Call.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/Call.java
deleted file mode 100644
index e2bcaac..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/Call.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import java.util.List;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-@Accessors(chain = true)
-public class Call {
-    private String id;
-    private String source;
-    private List<String> detectPoints;
-    private String target;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/CallMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/CallMatcher.java
deleted file mode 100644
index fe031fa..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/CallMatcher.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import java.util.List;
-import java.util.Objects;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class CallMatcher extends AbstractMatcher<Call> {
-    private String id;
-    private String source;
-    private List<String> detectPoints;
-    private String target;
-
-    @Override
-    public void verify(final Call call) {
-        if (Objects.nonNull(getId())) {
-            final String expected = this.getId();
-            final String actual = call.getId();
-
-            doVerify(expected, actual);
-        }
-
-        if (Objects.nonNull(getSource())) {
-            final String expected = this.getSource();
-            final String actual = call.getSource();
-
-            doVerify(expected, actual);
-        }
-
-        if (Objects.nonNull(getDetectPoints())) {
-            assertThat(getDetectPoints()).hasSameSizeAs(call.getDetectPoints());
-            int size = getDetectPoints().size();
-
-            for (int i = 0; i < size; i++) {
-                final String expected = getDetectPoints().get(i);
-                final String actual = call.getDetectPoints().get(i);
-
-                doVerify(expected, actual);
-            }
-        }
-
-        if (Objects.nonNull(getTarget())) {
-            final String expected = this.getTarget();
-            final String actual = call.getTarget();
-
-            doVerify(expected, actual);
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/Node.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/Node.java
deleted file mode 100644
index 27ea8d5..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/Node.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-@Accessors(chain = true)
-public class Node {
-    private String id;
-    private String name;
-    private String type;
-    private String isReal;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/NodeMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/NodeMatcher.java
deleted file mode 100644
index 0beddc1..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/NodeMatcher.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import java.util.Objects;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class NodeMatcher extends AbstractMatcher<Node> {
-    private String id;
-    private String name;
-    private String type;
-    private String isReal;
-
-    @Override
-    public void verify(final Node node) {
-        if (Objects.nonNull(getId())) {
-            final String expected = this.getId();
-            final String actual = node.getId();
-
-            doVerify(expected, actual);
-        }
-
-        if (Objects.nonNull(getName())) {
-            final String expected = this.getName();
-            final String actual = node.getName();
-
-            doVerify(expected, actual);
-        }
-
-        if (Objects.nonNull(getType())) {
-            final String expected = this.getType();
-            final String actual = node.getType();
-
-            doVerify(expected, actual);
-        }
-
-        if (Objects.nonNull(getIsReal())) {
-            final String expected = this.getIsReal();
-            final String actual = String.valueOf(node.getIsReal());
-
-            doVerify(expected, actual);
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceNode.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceNode.java
deleted file mode 100644
index 32b7ece..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceNode.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-@Accessors(chain = true)
-public class ServiceInstanceNode {
-    private String id;
-    private String name;
-    private String serviceId;
-    private String serviceName;
-    private String type;
-    private String isReal;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceNodeMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceNodeMatcher.java
deleted file mode 100644
index 39804ea..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceNodeMatcher.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static java.util.Objects.nonNull;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class ServiceInstanceNodeMatcher extends AbstractMatcher<ServiceInstanceNode> {
-
-    private String id;
-    private String name;
-    private String serviceId;
-    private String serviceName;
-    private String type;
-    private String isReal;
-
-    @Override
-    public void verify(ServiceInstanceNode node) {
-        if (nonNull(getId())) {
-            final String expected = this.getId();
-            final String actual = node.getId();
-
-            doVerify(expected, actual);
-        }
-
-        if (nonNull(getName())) {
-            final String expected = this.getName();
-            final String actual = node.getName();
-
-            doVerify(expected, actual);
-        }
-
-        if (nonNull(getServiceId())) {
-            final String expected = this.getServiceId();
-            final String actual = node.getServiceId();
-
-            doVerify(expected, actual);
-        }
-
-        if (nonNull(getServiceName())) {
-            final String expected = this.getServiceName();
-            final String actual = node.getServiceName();
-
-            doVerify(expected, actual);
-        }
-
-        if (nonNull(getType())) {
-            final String expected = this.getType();
-            final String actual = node.getType();
-
-            doVerify(expected, actual);
-        }
-
-        if (nonNull(getIsReal())) {
-            final String expected = this.getIsReal();
-            final String actual = String.valueOf(node.getIsReal());
-
-            doVerify(expected, actual);
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceTopology.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceTopology.java
deleted file mode 100644
index 5b45d89..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceTopology.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import java.util.ArrayList;
-import java.util.List;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-@Accessors(chain = true)
-public class ServiceInstanceTopology {
-
-    private List<ServiceInstanceNode> nodes;
-    private List<Call> calls;
-
-    public ServiceInstanceTopology() {
-        this.nodes = new ArrayList<>();
-        this.calls = new ArrayList<>();
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceTopologyMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceTopologyMatcher.java
deleted file mode 100644
index e37be46..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceTopologyMatcher.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import java.util.List;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.assertor.VariableExpressParser;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static java.util.Objects.nonNull;
-import static org.assertj.core.api.Assertions.fail;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class ServiceInstanceTopologyMatcher extends AbstractMatcher<ServiceInstanceTopology> {
-
-    private List<ServiceInstanceNodeMatcher> nodes;
-    private List<CallMatcher> calls;
-
-    @Override
-    public void verify(ServiceInstanceTopology topoData) {
-        if (nonNull(getNodes())) {
-            verifyNodes(topoData);
-        }
-
-        if (nonNull(getCalls())) {
-            convertNodeId(getCalls(), topoData.getNodes());
-            verifyCalls(topoData);
-        }
-    }
-
-    private void verifyNodes(ServiceInstanceTopology topoData) {
-        for (int i = 0; i < getNodes().size(); i++) {
-            boolean matched = false;
-            for (int j = 0; j < topoData.getNodes().size(); j++) {
-                try {
-                    getNodes().get(i).verify(topoData.getNodes().get(j));
-                    matched = true;
-                } catch (Throwable ignored) {
-                }
-            }
-            if (!matched) {
-                fail("\nExpected: %s\nActual: %s", getNodes(), topoData.getNodes());
-            }
-        }
-    }
-
-    private void verifyCalls(ServiceInstanceTopology topoData) {
-        for (int i = 0; i < getCalls().size(); i++) {
-            boolean matched = false;
-            for (int j = 0; j < topoData.getCalls().size(); j++) {
-                try {
-                    getCalls().get(i).verify(topoData.getCalls().get(j));
-                    matched = true;
-                } catch (Throwable ignored) {
-                }
-            }
-            if (!matched) {
-                fail("\nExpected: %s\nActual: %s", getCalls(), topoData.getCalls());
-            }
-        }
-    }
-
-    private static void convertNodeId(List<CallMatcher> callMatchers, List<ServiceInstanceNode> nodes) {
-        for (CallMatcher callMatcher : callMatchers) {
-            ServiceInstanceNode sourceNode = VariableExpressParser.parse(
-                callMatcher.getSource(), nodes, ServiceInstanceNode::getName);
-            ServiceInstanceNode targetNode = VariableExpressParser.parse(
-                callMatcher.getTarget(), nodes, ServiceInstanceNode::getName);
-
-            boolean convert = false;
-            if (nonNull(sourceNode)) {
-                callMatcher.setSource(sourceNode.getId());
-                convert = true;
-            }
-            if (nonNull(targetNode)) {
-                callMatcher.setTarget(targetNode.getId());
-                convert = true;
-            }
-
-            if (convert) {
-                callMatcher.setId(String.join("-", callMatcher.getSource(), callMatcher.getTarget()));
-            }
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceTopologyQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceTopologyQuery.java
deleted file mode 100644
index 18155b6..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceTopologyQuery.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.apache.skywalking.e2e.AbstractQuery;
-
-@Data
-@Accessors(fluent = true)
-@EqualsAndHashCode(callSuper = true)
-public class ServiceInstanceTopologyQuery extends AbstractQuery<ServiceInstanceTopologyQuery> {
-    private String clientServiceId;
-    private String serverServiceId;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceTopologyResponse.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceTopologyResponse.java
deleted file mode 100644
index c5ff0a9..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/ServiceInstanceTopologyResponse.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import lombok.Data;
-
-@Data
-public class ServiceInstanceTopologyResponse {
-    private ServiceInstanceTopology topo;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/TopoMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/TopoMatcher.java
deleted file mode 100644
index e01cab9..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/TopoMatcher.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import java.util.List;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.assertor.VariableExpressParser;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-import static java.util.Objects.nonNull;
-import static org.assertj.core.api.Assertions.fail;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class TopoMatcher extends AbstractMatcher<Topology> {
-
-    private List<NodeMatcher> nodes;
-    private List<CallMatcher> calls;
-
-    @Override
-    public void verify(final Topology topology) {
-        if (nonNull(getNodes())) {
-            verifyNodes(topology);
-        }
-
-        if (nonNull(getCalls())) {
-            convertNodeId(getCalls(), topology.getNodes());
-            verifyCalls(topology);
-        }
-    }
-
-    private void verifyNodes(Topology topology) {
-        for (int i = 0; i < getNodes().size(); i++) {
-            boolean matched = false;
-            for (int j = 0; j < topology.getNodes().size(); j++) {
-                try {
-                    getNodes().get(i).verify(topology.getNodes().get(j));
-                    matched = true;
-                } catch (Throwable ignore) {
-                }
-            }
-            if (!matched) {
-                fail("\nExpected: %s\nActual: %s", getNodes(), topology.getNodes());
-            }
-        }
-    }
-
-    private void verifyCalls(Topology topology) {
-        for (int i = 0; i < getCalls().size(); i++) {
-            boolean matched = false;
-            for (int j = 0; j < topology.getCalls().size(); j++) {
-                try {
-                    getCalls().get(i).verify(topology.getCalls().get(j));
-                    matched = true;
-                } catch (Throwable ignore) {
-                }
-            }
-            if (!matched) {
-                fail("\nExpected: %s\nActual: %s", getCalls(), topology.getCalls());
-            }
-        }
-    }
-
-    private static void convertNodeId(List<CallMatcher> callMatchers, List<Node> nodes) {
-        for (CallMatcher callMatcher : callMatchers) {
-            Node sourceNode = VariableExpressParser.parse(callMatcher.getSource(), nodes, Node::getName);
-            Node targetNode = VariableExpressParser.parse(callMatcher.getTarget(), nodes, Node::getName);
-
-            boolean convert = false;
-            if (nonNull(sourceNode)) {
-                callMatcher.setSource(sourceNode.getId());
-                convert = true;
-            }
-            if (nonNull(targetNode)) {
-                callMatcher.setTarget(targetNode.getId());
-                convert = true;
-            }
-
-            if (convert) {
-                callMatcher.setId(String.join("-", callMatcher.getSource(), callMatcher.getTarget()));
-            }
-        }
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/TopoQuery.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/TopoQuery.java
deleted file mode 100644
index 4ba3b82..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/TopoQuery.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import org.apache.skywalking.e2e.AbstractQuery;
-
-public class TopoQuery extends AbstractQuery<TopoQuery> {
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/Topology.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/Topology.java
deleted file mode 100644
index afbb396..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/Topology.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import java.util.ArrayList;
-import java.util.List;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-@Accessors(chain = true)
-public class Topology {
-    private List<Node> nodes;
-    private List<Call> calls;
-
-    public Topology() {
-        nodes = new ArrayList<>();
-        calls = new ArrayList<>();
-    }
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/TopologyResponse.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/TopologyResponse.java
deleted file mode 100644
index 77b0097..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/topo/TopologyResponse.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.e2e.topo;
-
-import lombok.Data;
-
-@Data
-public class TopologyResponse {
-    private Topology topo;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/trace/Span.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/trace/Span.java
deleted file mode 100644
index 19843de..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/trace/Span.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.e2e.trace;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class Span {
-    private String traceId;
-    private String segmentId;
-    private int spanId;
-    private int parentSpanId;
-    private String serviceCode;
-    private long startTime;
-    private long endTime;
-    private String endpointName;
-    private String type;
-    private String peer;
-    private String component;
-    private boolean isError;
-    private String layer;
-    private List<String> tags;
-}
diff --git a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/trace/SpanMatcher.java b/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/trace/SpanMatcher.java
deleted file mode 100644
index 690d0ad..0000000
--- a/test/e2e/e2e-data/src/main/java/org/apache/skywalking/e2e/trace/SpanMatcher.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * 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.e2e.trace;
-
-import com.google.common.base.Strings;
-import java.util.List;
-import java.util.Objects;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.apache.skywalking.e2e.verification.AbstractMatcher;
-
-@Data
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class SpanMatcher extends AbstractMatcher<Span> {
-    private String traceId;
-    private String segmentId;
-    private String spanId;
-    private String parentSpanId;
-    private String serviceCode;
-    private String startTime;
-    private String endTime;
-    private String endpointName;
-    private String type;
-    private String peer;
-    private String component;
-    private String isError;
-    private String layer;
-    private List<String> tags;
-
-    @Override
-    public void verify(final Span span) {
-        if (Objects.nonNull(traceId)) {
-            String expected = this.getTraceId();
-            String actual = span.getTraceId();
-            doVerify(expected, actual);
-        }
-        if (Objects.nonNull(segmentId)) {
-            String expected = this.getSegmentId();
-            String actual = span.getSegmentId();
-            doVerify(expected, actual);
-        }
-        if (Objects.nonNull(spanId)) {
-            String expected = String.valueOf(this.getSpanId());
-            String actual = String.valueOf(span.getSpanId());
-            doVerify(expected, actual);
-        }
-        if (Objects.nonNull(parentSpanId)) {
-            String expected = String.valueOf(this.getParentSpanId());
-            String actual = String.valueOf(span.getParentSpanId());
-            doVerify(expected, actual);
-        }
-        if (Objects.nonNull(serviceCode)) {
-            String expected = this.getServiceCode();
-            String actual = span.getServiceCode();
-            doVerify(expected, actual);
-        }
-        if (Objects.nonNull(startTime)) {
-            String expected = String.valueOf(this.getStartTime());
-            String actual = String.valueOf(span.getStartTime());
... 21573 lines suppressed ...