This is an automated email from the ASF dual-hosted git repository. wusheng pushed a commit to branch feature/add-traceql-promql-logql-e2e in repository https://gitbox.apache.org/repos/asf/skywalking-graalvm-distro.git
commit cc6f71ca96be87af9ffe0f063d1cbd9322585b35 Author: Wu Sheng <[email protected]> AuthorDate: Mon Mar 16 10:44:39 2026 +0800 Add TraceQL module and PromQL/LogQL/TraceQL e2e tests - Integrate TraceQL module (Tempo-compatible trace query API) into the distro: application.yml, GraalVMOAPServerStartUp, POM dependencies, precompiler handler scan, distro-policy docs. - Fix Armeria handler scan to use getMethods() instead of getDeclaredMethods() so handlers with inherited @Get/@Path annotations (like TraceQL) are detected for reflect-config. - Add 3 new e2e test cases: PromQL, LogQL, TraceQL. - Update changes/changes.md with 0.2.0 entries. --- .github/workflows/ci.yml | 6 + build-tools/precompiler/pom.xml | 4 + .../server/buildtools/precompiler/Precompiler.java | 4 +- changes/changes.md | 11 ++ docs/distro-policy.md | 4 +- oap-graalvm-server/pom.xml | 4 + .../server/graalvm/GraalVMOAPServerStartUp.java | 5 + .../src/main/resources/application.yml | 12 ++ pom.xml | 5 + test/e2e/cases/logql/docker-compose.yml | 162 +++++++++++++++++++++ test/e2e/cases/logql/e2e.yaml | 51 +++++++ test/e2e/cases/promql/docker-compose.yml | 130 +++++++++++++++++ test/e2e/cases/promql/e2e.yaml | 51 +++++++ test/e2e/cases/traceql/docker-compose.yml | 74 ++++++++++ test/e2e/cases/traceql/e2e.yaml | 48 ++++++ 15 files changed, 567 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a86a61a..1879cc3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -321,6 +321,12 @@ jobs: case: vm-zabbix - name: Zipkin case: zipkin + - name: PromQL + case: promql + - name: LogQL + case: logql + - name: TraceQL + case: traceql - name: Baseline case: baseline steps: diff --git a/build-tools/precompiler/pom.xml b/build-tools/precompiler/pom.xml index 816c205..c520b68 100644 --- a/build-tools/precompiler/pom.xml +++ b/build-tools/precompiler/pom.xml @@ -111,6 +111,10 @@ <groupId>org.apache.skywalking</groupId> <artifactId>logql-plugin</artifactId> </dependency> + <dependency> + <groupId>org.apache.skywalking</groupId> + <artifactId>traceql-plugin</artifactId> + </dependency> <!-- Health checker (HealthCheckerHttpService) --> <dependency> diff --git a/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/server/buildtools/precompiler/Precompiler.java b/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/server/buildtools/precompiler/Precompiler.java index 25e4878..a1bfc56 100644 --- a/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/server/buildtools/precompiler/Precompiler.java +++ b/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/server/buildtools/precompiler/Precompiler.java @@ -837,8 +837,8 @@ public class Precompiler { if (aClass.isInterface() || Modifier.isAbstract(aClass.getModifiers())) { continue; } - // Check if any method has Armeria routing annotations - for (Method method : aClass.getDeclaredMethods()) { + // Check if any method (including inherited) has Armeria routing annotations + for (Method method : aClass.getMethods()) { if ((postAnno != null && method.isAnnotationPresent(postAnno)) || (getAnno != null && method.isAnnotationPresent(getAnno)) || (pathAnno != null && method.isAnnotationPresent(pathAnno))) { diff --git a/changes/changes.md b/changes/changes.md index 9836004..a31ea23 100644 --- a/changes/changes.md +++ b/changes/changes.md @@ -32,16 +32,27 @@ Upgrade to the latest Apache SkyWalking OAP server, with documentation restructu - `release/full-release.sh`: end-to-end release script. - Generate vote email template with GPG signer info and submodule commit IDs. +### New Module + +- Add TraceQL module (Tempo-compatible trace query API) with Zipkin and SkyWalking datasource support. + ### Testing - Replacement class staleness detector: add auto-discovery coverage check for untracked same-FQCN replacements in `oap-libs-for-graalvm/`. ### E2E Tests +- Add PromQL e2e test case (Prometheus-compatible query API). +- Add LogQL e2e test case (Loki-compatible log query API). +- Add TraceQL e2e test case (Tempo-compatible trace query API with Zipkin datasource). - Update BanyanDB to `e1ba421` (fixes Zipkin `minDuration` trace query). - Bump Istio to 1.28.0. - Add Baseline e2e test case. +### Build + +- Fix Armeria handler scan to detect inherited `@Get`/`@Path` annotations (precompiler). + ## 0.1.0 ### Highlights diff --git a/docs/distro-policy.md b/docs/distro-policy.md index 6168eb4..dcbd9e5 100644 --- a/docs/distro-policy.md +++ b/docs/distro-policy.md @@ -18,7 +18,7 @@ Build and package Apache SkyWalking OAP server as a GraalVM native image on JDK | **Configuration** | ConfigurationModule | Kubernetes | | **Receivers** | SharingServerModule, TraceModule, JVMModule, MeterReceiverModule, LogModule, RegisterModule, ProfileModule, BrowserModule, EventModule, OtelMetricReceiverModule, MeshReceiverModule, EnvoyMetricReceiverModule, ZipkinReceiverModule, ZabbixReceiverModule, TelegrafReceiverModule, AWSFirehoseReceiverModule, CiliumFetcherModule, EBPFReceiverModule, AsyncProfilerModule, PprofModule, CLRModule, ConfigurationDiscoveryModule, KafkaFetcherModule | default providers | | **Analyzers** | AnalyzerModule, LogAnalyzerModule, EventAnalyzerModule | default providers | -| **Query** | QueryModule (GraphQL), PromQLModule, LogQLModule, ZipkinQueryModule, StatusQueryModule | default providers | +| **Query** | QueryModule (GraphQL), PromQLModule, LogQLModule, TraceQLModule, ZipkinQueryModule, StatusQueryModule | default providers | | **Alarm** | AlarmModule | default | | **Telemetry** | TelemetryModule | Prometheus | | **Other** | ExporterModule, HealthCheckerModule, AIPipelineModule | default providers | @@ -289,7 +289,7 @@ All four DSL compilers (OAL/MAL/LAL/Hierarchy) use ANTLR4 + Javassist v2 engines ### Remaining Verification - Verify all receiver plugins work (gRPC + HTTP endpoints) -- Verify all query APIs work (GraphQL, PromQL, LogQL, Zipkin) +- Verify all query APIs work (GraphQL, PromQL, LogQL, TraceQL, Zipkin) - Verify cluster mode (K8s) - Verify alarm module - Performance benchmarking vs JVM diff --git a/oap-graalvm-server/pom.xml b/oap-graalvm-server/pom.xml index ef5ed9b..ec00bdc 100644 --- a/oap-graalvm-server/pom.xml +++ b/oap-graalvm-server/pom.xml @@ -316,6 +316,10 @@ <groupId>org.apache.skywalking</groupId> <artifactId>zipkin-query-plugin</artifactId> </dependency> + <dependency> + <groupId>org.apache.skywalking</groupId> + <artifactId>traceql-plugin</artifactId> + </dependency> <!-- Alarm --> <dependency> <groupId>org.apache.skywalking</groupId> diff --git a/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/GraalVMOAPServerStartUp.java b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/GraalVMOAPServerStartUp.java index ff31bd3..be81a02 100644 --- a/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/GraalVMOAPServerStartUp.java +++ b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/GraalVMOAPServerStartUp.java @@ -111,6 +111,8 @@ import org.apache.skywalking.oap.query.promql.PromQLModule; import org.apache.skywalking.oap.query.promql.PromQLProvider; import org.apache.skywalking.oap.query.logql.LogQLModule; import org.apache.skywalking.oap.query.logql.LogQLProvider; +import org.apache.skywalking.oap.query.traceql.TraceQLModule; +import org.apache.skywalking.oap.query.traceql.TraceQLProvider; import org.apache.skywalking.oap.query.debug.StatusQueryModule; import org.apache.skywalking.oap.query.debug.StatusQueryProvider; // Exporter @@ -252,6 +254,9 @@ public class GraalVMOAPServerStartUp { } manager.register(new PromQLModule(), new PromQLProvider()); manager.register(new LogQLModule(), new LogQLProvider()); + if (configuration.has("traceQL")) { + manager.register(new TraceQLModule(), new TraceQLProvider()); + } manager.register(new StatusQueryModule(), new StatusQueryProvider()); // Alarm diff --git a/oap-graalvm-server/src/main/resources/application.yml b/oap-graalvm-server/src/main/resources/application.yml index 1248b0a..ab08eaf 100644 --- a/oap-graalvm-server/src/main/resources/application.yml +++ b/oap-graalvm-server/src/main/resources/application.yml @@ -300,6 +300,18 @@ logql: restIdleTimeOut: ${SW_LOGQL_REST_IDLE_TIMEOUT:30000} restAcceptQueueSize: ${SW_LOGQL_REST_QUEUE_SIZE:0} +traceQL: + selector: ${SW_TRACEQL:-} + default: + restHost: ${SW_TRACEQL_REST_HOST:0.0.0.0} + restPort: ${SW_TRACEQL_REST_PORT:3200} + enableDatasourceZipkin: ${SW_TRACEQL_ENABLE_DATASOURCE_ZIPKIN:false} + enableDatasourceSkywalking: ${SW_TRACEQL_ENABLE_DATASOURCE_SKYWALKING:false} + restContextPathZipkin: ${SW_TRACEQL_REST_CONTEXT_PATH_ZIPKIN:/zipkin} + restContextPathSkywalking: ${SW_TRACEQL_REST_CONTEXT_PATH_SKYWALKING:/skywalking} + restIdleTimeOut: ${SW_TRACEQL_REST_IDLE_TIMEOUT:30000} + restAcceptQueueSize: ${SW_TRACEQL_REST_QUEUE_SIZE:0} + alarm: selector: ${SW_ALARM:default} default: diff --git a/pom.xml b/pom.xml index e0d97d6..e8733c1 100644 --- a/pom.xml +++ b/pom.xml @@ -295,6 +295,11 @@ <artifactId>logql-plugin</artifactId> <version>${skywalking.version}</version> </dependency> + <dependency> + <groupId>org.apache.skywalking</groupId> + <artifactId>traceql-plugin</artifactId> + <version>${skywalking.version}</version> + </dependency> <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>zipkin-query-plugin</artifactId> diff --git a/test/e2e/cases/logql/docker-compose.yml b/test/e2e/cases/logql/docker-compose.yml new file mode 100644 index 0000000..cfa4b50 --- /dev/null +++ b/test/e2e/cases/logql/docker-compose.yml @@ -0,0 +1,162 @@ +# 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. + +services: + banyandb: + extends: + file: ../../../../skywalking/test/e2e-v2/script/docker-compose/base-compose.yml + service: banyandb + ports: + - 17912 + + oap: + image: skywalking-oap-native:latest + expose: + - 11800 + - 12800 + - 3100 + networks: + - e2e + ports: + - 12800 + - 3100 + environment: + SW_HEALTH_CHECKER: default + SW_STORAGE_BANYANDB_TARGETS: banyandb:17912 + SW_CONFIGURATION: none + SW_LOG_LAL_FILES: default + SW_LOG_MAL_FILES: "" + depends_on: + banyandb: + condition: service_healthy + healthcheck: + test: ["CMD-SHELL", "nc -nz 127.0.0.1 11800 || exit 1"] + interval: 5s + timeout: 60s + retries: 120 + + # Init containers: copy pre-built service JARs into a shared volume + provider-jar: + image: "ghcr.io/apache/skywalking/e2e-service-provider:${SW_E2E_SERVICE_COMMIT}" + entrypoint: ["cp", "/app.jar", "/jars/services_provider.jar"] + volumes: + - service-jars:/jars + networks: + - e2e + + consumer-jar: + image: "ghcr.io/apache/skywalking/e2e-service-consumer:${SW_E2E_SERVICE_COMMIT}" + entrypoint: ["cp", "/app.jar", "/jars/services_consumer.jar"] + volumes: + - service-jars:/jars + networks: + - e2e + + provider: + image: "ghcr.io/apache/skywalking-java/skywalking-java:${SW_AGENT_JAVA_COMMIT}-java${SW_AGENT_JDK_VERSION}" + command: ["java", "-jar", "/jars/services_provider.jar"] + volumes: + - service-jars:/jars + networks: + - e2e + expose: + - 9090 + ports: + - 9090 + environment: + SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800 + SW_LOGGING_OUTPUT: CONSOLE + SW_AGENT_NAME: e2e-service-provider + SW_AGENT_INSTANCE_NAME: provider1 + SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL: 1 + SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL: 1 + SW_METER_ACTIVE: 'false' + healthcheck: + test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9090"] + interval: 5s + timeout: 60s + retries: 120 + depends_on: + oap: + condition: service_healthy + provider-jar: + condition: service_completed_successfully + + provider2: + image: "ghcr.io/apache/skywalking-java/skywalking-java:${SW_AGENT_JAVA_COMMIT}-java${SW_AGENT_JDK_VERSION}" + command: ["java", "-jar", "/jars/services_provider.jar"] + volumes: + - service-jars:/jars + networks: + - e2e + expose: + - 9090 + ports: + - 9090 + environment: + SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800 + SW_LOGGING_OUTPUT: CONSOLE + SW_AGENT_NAME: e2e-service-provider + SW_AGENT_INSTANCE_NAME: provider2 + SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL: 1 + SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL: 1 + SW_METER_ACTIVE: 'false' + healthcheck: + test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9090"] + interval: 5s + timeout: 60s + retries: 120 + depends_on: + oap: + condition: service_healthy + provider-jar: + condition: service_completed_successfully + + consumer: + image: "ghcr.io/apache/skywalking-java/skywalking-java:${SW_AGENT_JAVA_COMMIT}-java${SW_AGENT_JDK_VERSION}" + command: ["java", "-jar", "/jars/services_consumer.jar"] + volumes: + - service-jars:/jars + networks: + - e2e + expose: + - 9092 + ports: + - 9092 + environment: + SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800 + SW_LOGGING_OUTPUT: CONSOLE + PROVIDER_URL: http://provider:9090 + SW_AGENT_NAME: e2e-service-consumer + SW_AGENT_INSTANCE_NAME: consumer1 + SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL: 1 + SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL: 1 + SW_METER_ACTIVE: 'false' + healthcheck: + test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9092"] + interval: 5s + timeout: 60s + retries: 120 + depends_on: + provider: + condition: service_healthy + consumer-jar: + condition: service_completed_successfully + +volumes: + service-jars: + +networks: + e2e: diff --git a/test/e2e/cases/logql/e2e.yaml b/test/e2e/cases/logql/e2e.yaml new file mode 100644 index 0000000..1e76432 --- /dev/null +++ b/test/e2e/cases/logql/e2e.yaml @@ -0,0 +1,51 @@ +# 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. + +# LogQL E2E — native OAP with BanyanDB +# Tests the Loki-compatible log query API (LogQL module). +# Upstream uses Elasticsearch but LogQL is storage-agnostic; +# BanyanDB supports the same log query operations. +# Reuses upstream verification cases and expected files. + +setup: + env: compose + file: docker-compose.yml + timeout: 20m + init-system-environment: ../../script/env + steps: + - name: set PATH + command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH + - name: install yq + command: bash skywalking/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq + - name: install swctl + command: bash skywalking/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl + +trigger: + action: http + interval: 3s + times: -1 + url: http://${consumer_host}:${consumer_9092}/users + method: POST + body: '{"id":"123","name":"skywalking"}' + headers: + "Content-Type": "application/json" + +verify: + retry: + count: 20 + interval: 3s + cases: + - includes: + - ../../../../skywalking/test/e2e-v2/cases/logql/logql-cases.yaml diff --git a/test/e2e/cases/promql/docker-compose.yml b/test/e2e/cases/promql/docker-compose.yml new file mode 100644 index 0000000..7d334ac --- /dev/null +++ b/test/e2e/cases/promql/docker-compose.yml @@ -0,0 +1,130 @@ +# 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. + +services: + banyandb: + extends: + file: ../../../../skywalking/test/e2e-v2/script/docker-compose/base-compose.yml + service: banyandb + ports: + - 17912 + + oap: + image: skywalking-oap-native:latest + expose: + - 11800 + - 12800 + - 9090 + networks: + - e2e + ports: + - 12800 + - 9090 + environment: + SW_HEALTH_CHECKER: default + SW_STORAGE_BANYANDB_TARGETS: banyandb:17912 + SW_CONFIGURATION: none + depends_on: + banyandb: + condition: service_healthy + healthcheck: + test: ["CMD-SHELL", "nc -nz 127.0.0.1 11800 || exit 1"] + interval: 5s + timeout: 60s + retries: 120 + + # Init containers: copy pre-built service JARs into a shared volume + provider-jar: + image: "ghcr.io/apache/skywalking/e2e-service-provider:${SW_E2E_SERVICE_COMMIT}" + entrypoint: ["cp", "/app.jar", "/jars/services_provider.jar"] + volumes: + - service-jars:/jars + networks: + - e2e + + consumer-jar: + image: "ghcr.io/apache/skywalking/e2e-service-consumer:${SW_E2E_SERVICE_COMMIT}" + entrypoint: ["cp", "/app.jar", "/jars/services_consumer.jar"] + volumes: + - service-jars:/jars + networks: + - e2e + + provider: + image: "ghcr.io/apache/skywalking-java/skywalking-java:${SW_AGENT_JAVA_COMMIT}-java${SW_AGENT_JDK_VERSION}" + command: ["java", "-jar", "/jars/services_provider.jar"] + volumes: + - service-jars:/jars + networks: + - e2e + expose: + - 9090 + ports: + - 9090 + environment: + SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800 + SW_LOGGING_OUTPUT: CONSOLE + SW_AGENT_NAME: e2e-service-provider + SW_AGENT_INSTANCE_NAME: provider1 + SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL: 1 + SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL: 1 + SW_METER_ACTIVE: 'false' + healthcheck: + test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9090"] + interval: 5s + timeout: 60s + retries: 120 + depends_on: + oap: + condition: service_healthy + provider-jar: + condition: service_completed_successfully + + consumer: + image: "ghcr.io/apache/skywalking-java/skywalking-java:${SW_AGENT_JAVA_COMMIT}-java${SW_AGENT_JDK_VERSION}" + command: ["java", "-jar", "/jars/services_consumer.jar"] + volumes: + - service-jars:/jars + networks: + - e2e + expose: + - 9092 + ports: + - 9092 + environment: + SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800 + SW_LOGGING_OUTPUT: CONSOLE + PROVIDER_URL: http://provider:9090 + SW_AGENT_NAME: e2e-service-consumer + SW_AGENT_INSTANCE_NAME: consumer1 + SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL: 1 + SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL: 1 + SW_METER_ACTIVE: 'false' + healthcheck: + test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9092"] + interval: 5s + timeout: 60s + retries: 120 + depends_on: + provider: + condition: service_healthy + consumer-jar: + condition: service_completed_successfully + +volumes: + service-jars: + +networks: + e2e: diff --git a/test/e2e/cases/promql/e2e.yaml b/test/e2e/cases/promql/e2e.yaml new file mode 100644 index 0000000..bcf66e9 --- /dev/null +++ b/test/e2e/cases/promql/e2e.yaml @@ -0,0 +1,51 @@ +# 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. + +# PromQL E2E — native OAP with BanyanDB +# Tests the Prometheus-compatible query API (PromQL module). +# Reuses upstream verification cases and expected files. +# Note: upstream mounts a custom core.oal but our native image uses +# pre-compiled OAL which is a superset — all queried metrics exist. + +setup: + env: compose + file: docker-compose.yml + timeout: 20m + init-system-environment: ../../script/env + steps: + - name: set PATH + command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH + - name: install yq + command: bash skywalking/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq + - name: install swctl + command: bash skywalking/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl + +trigger: + action: http + interval: 3s + times: -1 + url: http://${consumer_host}:${consumer_9092}/users + method: POST + body: '{"id":"123","name":"skywalking"}' + headers: + "Content-Type": "application/json" + +verify: + retry: + count: 20 + interval: 3s + cases: + - includes: + - ../../../../skywalking/test/e2e-v2/cases/promql/promql-cases.yaml diff --git a/test/e2e/cases/traceql/docker-compose.yml b/test/e2e/cases/traceql/docker-compose.yml new file mode 100644 index 0000000..5a1ad54 --- /dev/null +++ b/test/e2e/cases/traceql/docker-compose.yml @@ -0,0 +1,74 @@ +# 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. + +services: + banyandb: + extends: + file: ../../../../skywalking/test/e2e-v2/script/docker-compose/base-compose.yml + service: banyandb + ports: + - 17912 + + oap: + image: skywalking-oap-native:latest + expose: + - 11800 + - 12800 + - 9411 + - 3200 + networks: + - e2e + ports: + - 9412 + - 3200 + environment: + SW_HEALTH_CHECKER: default + SW_STORAGE_BANYANDB_TARGETS: banyandb:17912 + SW_CONFIGURATION: none + SW_QUERY_ZIPKIN: default + SW_RECEIVER_ZIPKIN: default + SW_TRACEQL: default + SW_TRACEQL_ENABLE_DATASOURCE_ZIPKIN: "true" + depends_on: + banyandb: + condition: service_healthy + healthcheck: + test: ["CMD-SHELL", "nc -nz 127.0.0.1 11800 || exit 1"] + interval: 5s + timeout: 60s + retries: 120 + + frontend: + extends: + file: ../../../../skywalking/test/e2e-v2/cases/zipkin/docker-compose-brave.yml + service: frontend + depends_on: + backend: + condition: service_healthy + oap: + condition: service_healthy + ports: + - 8081 + + backend: + extends: + file: ../../../../skywalking/test/e2e-v2/cases/zipkin/docker-compose-brave.yml + service: backend + depends_on: + oap: + condition: service_healthy + +networks: + e2e: diff --git a/test/e2e/cases/traceql/e2e.yaml b/test/e2e/cases/traceql/e2e.yaml new file mode 100644 index 0000000..ca9046c --- /dev/null +++ b/test/e2e/cases/traceql/e2e.yaml @@ -0,0 +1,48 @@ +# 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. + +# TraceQL E2E — native OAP with BanyanDB +# Tests the Tempo-compatible TraceQL query API with Zipkin datasource. +# Reuses upstream verification cases and expected files. + +setup: + env: compose + file: docker-compose.yml + timeout: 20m + init-system-environment: ../../script/env + steps: + - name: set PATH + command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH + - name: install yq + command: bash skywalking/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq + - name: install swctl + command: bash skywalking/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl + - name: install jq + command: bash skywalking/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh jq + +trigger: + action: http + interval: 3s + times: -1 + url: http://${frontend_host}:${frontend_8081}/ + method: POST + +verify: + retry: + count: 20 + interval: 10s + cases: + - includes: + - ../../../../skywalking/test/e2e-v2/cases/traceql/zipkin/traceql-cases.yaml
