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

wu-sheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-graalvm-distro.git


The following commit(s) were added to refs/heads/main by this push:
     new be2b4e7  Add live-debugging e2e + fix native-image 404 on the 
unsupported-admin stub (#29)
be2b4e7 is described below

commit be2b4e76353f3390bb3fb076f18dce26fdd7b8b5
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Fri May 29 22:24:27 2026 +0800

    Add live-debugging e2e + fix native-image 404 on the unsupported-admin stub 
(#29)
    
      - live-debugging e2e case — boots the native OAP and asserts the admin 
server (:17128) returns the structured HTTP 501 for the DSL live debugger 
(/dsl-debugging/*) and
      runtime-rule (/runtime/*) endpoints, the features this distro 
pre-compiles away. 8 verify cases (6 response-body assertions across both 
prefixes/verbs + 2 HTTP-status-line
      checks); added to the CI matrix.
      - Real bug found + fixed — those endpoints were returning 404, not 501. 
UnsupportedAdminFeatureHandler is a distro-only Armeria handler the build-time 
precompiler can't scan
      (circular dependency), so its reflection metadata was never registered 
and Armeria silently built zero routes. The stub had been dead since written — 
no prior e2e touched
      port 17128. Fixed by registering it in reachability-metadata.json.
---
 .github/workflows/ci.yml                           |  2 +
 changes/changes.md                                 |  2 +
 .../oap-graalvm-native/reachability-metadata.json  |  1 +
 .../admin/UnsupportedAdminFeatureHandler.java      |  6 +++
 test/e2e/cases/live-debugging/docker-compose.yml   | 48 ++++++++++++++++++++++
 test/e2e/cases/live-debugging/e2e.yaml             | 39 ++++++++++++++++++
 .../expected/dsl-debugging-session.yml             | 20 +++++++++
 .../expected/dsl-debugging-sessions.yml            | 20 +++++++++
 .../expected/dsl-debugging-status.yml              | 20 +++++++++
 .../live-debugging/expected/http-status-501.yml    | 16 ++++++++
 .../live-debugging/expected/runtime-oal-files.yml  | 20 +++++++++
 .../expected/runtime-rule-addorupdate.yml          | 20 +++++++++
 .../live-debugging/expected/runtime-rule-list.yml  | 20 +++++++++
 .../cases/live-debugging/live-debugging-cases.yaml | 43 +++++++++++++++++++
 14 files changed, 277 insertions(+)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f7c43f3..2283cd5 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -380,6 +380,8 @@ jobs:
           #   case: envoy-ai-gateway
           - name: TraceQL SkyWalking
             case: traceql-skywalking
+          - name: Live Debugging
+            case: live-debugging
     steps:
       - name: Checkout with submodules
         uses: actions/checkout@v5
diff --git a/changes/changes.md b/changes/changes.md
index d3a773b..f0b5fe8 100644
--- a/changes/changes.md
+++ b/changes/changes.md
@@ -16,6 +16,7 @@
 - Port the new upstream runtime-rule DSL overloads into the same-FQCN 
replacements: meter `DSL.parse(..., ClassPool, ClassLoader)`, 
`FilterExpression(..., ClassPool, ClassLoader)`, and log `DSL.of(..., 
ClassPool, ClassLoader)`.
 - The precompiler and the MAL comparison tests now compose expressions via the 
real upstream `MetricConvert.formatExp` (ANTLR `injectExpPrefix`) instead of a 
hand-rolled replica, fixing pre-compiled class lookup for chained expressions 
(`.sum` / `.rate` / `.downsampling`).
 - Register protobuf descriptor **editions** classes 
(`com.google.protobuf.DescriptorProtos$*`, incl. `FeatureSet`) and 
**protoc-gen-validate** classes (`io.envoyproxy.pgv.validate.Validate$*`) for 
native-image reflection. protobuf-java 4.33 (pulled by the sync) reflects on 
these when parsing the BanyanDB measure descriptors (editions features + 
field-validation options); without the metadata, BanyanDB metrics queries 
failed at runtime with `Generated message class ... missing method` (e. [...]
+- Register `UnsupportedAdminFeatureHandler` for native-image reflection in 
`reachability-metadata.json`. Armeria builds its annotated routes by 
reflection, but this distro-only 501 stub is not on the build-time 
precompiler's classpath (it depends on the precompiler output), so its routes 
were never registered — the DSL live debugger (`/dsl-debugging/*`) and 
runtime-rule (`/runtime/*`) prefixes returned 404 instead of the intended 501. 
Caught by the new `live-debugging` e2e.
 
 ### Documentation
 
@@ -30,6 +31,7 @@
 - Bump pinned dependency images for the 11.0.0 sync: BanyanDB `84b919e`, 
Kubernetes `da0e267`, e2e java-test-service `7754e3e`.
 - Bump `skywalking-infra-e2e` to upstream's pin (`0d917694`) — the synced e2e 
expected-output templates use the `containsOnce` verify function, which the 
prior pin predated.
 - Remove the `menu` e2e case (CI matrix + wrapper): upstream dropped the 
bundled UI in 11.0.0 (#13877), deleting `test/e2e-v2/cases/menu/`, so the 
distro wrapper referenced a non-existent reuse file.
+- Add the `live-debugging` e2e case: boots the native OAP and asserts the 
admin-server (`:17128`) returns the structured HTTP 501 for the DSL live 
debugger (`/dsl-debugging/*`) and runtime-rule (`/runtime/*`) endpoints. The 
first e2e to exercise the admin port — it caught the missing reflection 
registration noted above (the stub had been returning 404).
 
 ## 0.3.0
 
diff --git 
a/oap-graalvm-native/src/main/resources/META-INF/native-image/org.apache.skywalking/oap-graalvm-native/reachability-metadata.json
 
b/oap-graalvm-native/src/main/resources/META-INF/native-image/org.apache.skywalking/oap-graalvm-native/reachability-metadata.json
index 1c4975a..813d2c4 100644
--- 
a/oap-graalvm-native/src/main/resources/META-INF/native-image/org.apache.skywalking/oap-graalvm-native/reachability-metadata.json
+++ 
b/oap-graalvm-native/src/main/resources/META-INF/native-image/org.apache.skywalking/oap-graalvm-native/reachability-metadata.json
@@ -1,5 +1,6 @@
 {
   "reflection": [
+    { "type": 
"org.apache.skywalking.oap.server.graalvm.admin.UnsupportedAdminFeatureHandler",
 "allDeclaredFields": true, "allDeclaredMethods": true, 
"allDeclaredConstructors": true },
     { "type": "io.envoyproxy.pgv.validate.Validate$AnyRules", 
"allDeclaredFields": true, "allDeclaredMethods": true, 
"allDeclaredConstructors": true },
     { "type": "io.envoyproxy.pgv.validate.Validate$AnyRules$Builder", 
"allDeclaredFields": true, "allDeclaredMethods": true, 
"allDeclaredConstructors": true },
     { "type": "io.envoyproxy.pgv.validate.Validate$BoolRules", 
"allDeclaredFields": true, "allDeclaredMethods": true, 
"allDeclaredConstructors": true },
diff --git 
a/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureHandler.java
 
b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureHandler.java
index 2ab57e8..da8a9fd 100644
--- 
a/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureHandler.java
+++ 
b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureHandler.java
@@ -38,6 +38,12 @@ import com.linecorp.armeria.server.annotation.Put;
  * <p>Routes are registered with Armeria {@code prefix:} patterns so every 
verb and sub-path
  * under the two roots resolves here, returning a structured payload the 
Horizon UI can render
  * instead of hitting a connection error.
+ *
+ * <p>This distro-only class is not on the build-time precompiler's classpath 
(it depends on the
+ * precompiler output), so the precompiler's Armeria-handler scan cannot 
register it. Its
+ * reflection metadata is maintained by hand in {@code oap-graalvm-native}'s
+ * {@code reachability-metadata.json}; without it Armeria silently builds zero 
routes and these
+ * prefixes return 404 instead of 501.
  */
 public class UnsupportedAdminFeatureHandler {
 
diff --git a/test/e2e/cases/live-debugging/docker-compose.yml 
b/test/e2e/cases/live-debugging/docker-compose.yml
new file mode 100644
index 0000000..84db014
--- /dev/null
+++ b/test/e2e/cases/live-debugging/docker-compose.yml
@@ -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.
+
+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
+      - 17128
+    networks:
+      - e2e
+    ports:
+      - 17128
+    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
+
+networks:
+  e2e:
diff --git a/test/e2e/cases/live-debugging/e2e.yaml 
b/test/e2e/cases/live-debugging/e2e.yaml
new file mode 100644
index 0000000..31f0c3b
--- /dev/null
+++ b/test/e2e/cases/live-debugging/e2e.yaml
@@ -0,0 +1,39 @@
+# 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.
+
+# Live Debugging E2E — native OAP with BanyanDB.
+# The SWIP-13 DSL live debugger (/dsl-debugging/*) and runtime-rule hot-update 
(/runtime/*)
+# generate fresh MAL/LAL/OAL bytecode with Javassist at runtime, which a 
closed-world native
+# image cannot do. This distro pre-compiles all DSL at build time and serves a 
structured
+# HTTP 501 for those admin-server endpoints. This case verifies that contract.
+# Verify-only (no trigger): infra-e2e's trigger step aborts on a non-2xx 
response, so the
+# 501 is asserted through verify cases that curl the admin-server (port 17128) 
directly.
+
+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
+
+verify:
+  retry:
+    count: 60
+    interval: 3s
+  cases:
+    - includes:
+        - live-debugging-cases.yaml
diff --git a/test/e2e/cases/live-debugging/expected/dsl-debugging-session.yml 
b/test/e2e/cases/live-debugging/expected/dsl-debugging-session.yml
new file mode 100644
index 0000000..804e503
--- /dev/null
+++ b/test/e2e/cases/live-debugging/expected/dsl-debugging-session.yml
@@ -0,0 +1,20 @@
+# 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.
+
+status: 501
+error: feature_not_available_in_graalvm_native
+feature: dsl-debugging
+path: /dsl-debugging/session
+message: "This feature requires runtime DSL (MAL/LAL/OAL) compilation, which 
is not available in the SkyWalking GraalVM native distribution. All DSL rules 
are pre-compiled at build time; runtime rule hot-update and the DSL live 
debugger are disabled. Use the standard JVM OAP distribution if you need these 
features."
diff --git a/test/e2e/cases/live-debugging/expected/dsl-debugging-sessions.yml 
b/test/e2e/cases/live-debugging/expected/dsl-debugging-sessions.yml
new file mode 100644
index 0000000..05e2420
--- /dev/null
+++ b/test/e2e/cases/live-debugging/expected/dsl-debugging-sessions.yml
@@ -0,0 +1,20 @@
+# 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.
+
+status: 501
+error: feature_not_available_in_graalvm_native
+feature: dsl-debugging
+path: /dsl-debugging/sessions
+message: "This feature requires runtime DSL (MAL/LAL/OAL) compilation, which 
is not available in the SkyWalking GraalVM native distribution. All DSL rules 
are pre-compiled at build time; runtime rule hot-update and the DSL live 
debugger are disabled. Use the standard JVM OAP distribution if you need these 
features."
diff --git a/test/e2e/cases/live-debugging/expected/dsl-debugging-status.yml 
b/test/e2e/cases/live-debugging/expected/dsl-debugging-status.yml
new file mode 100644
index 0000000..3581569
--- /dev/null
+++ b/test/e2e/cases/live-debugging/expected/dsl-debugging-status.yml
@@ -0,0 +1,20 @@
+# 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.
+
+status: 501
+error: feature_not_available_in_graalvm_native
+feature: dsl-debugging
+path: /dsl-debugging/status
+message: "This feature requires runtime DSL (MAL/LAL/OAL) compilation, which 
is not available in the SkyWalking GraalVM native distribution. All DSL rules 
are pre-compiled at build time; runtime rule hot-update and the DSL live 
debugger are disabled. Use the standard JVM OAP distribution if you need these 
features."
diff --git a/test/e2e/cases/live-debugging/expected/http-status-501.yml 
b/test/e2e/cases/live-debugging/expected/http-status-501.yml
new file mode 100644
index 0000000..94d39c3
--- /dev/null
+++ b/test/e2e/cases/live-debugging/expected/http-status-501.yml
@@ -0,0 +1,16 @@
+# 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.
+
+httpStatus: 501
diff --git a/test/e2e/cases/live-debugging/expected/runtime-oal-files.yml 
b/test/e2e/cases/live-debugging/expected/runtime-oal-files.yml
new file mode 100644
index 0000000..05f7b3a
--- /dev/null
+++ b/test/e2e/cases/live-debugging/expected/runtime-oal-files.yml
@@ -0,0 +1,20 @@
+# 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.
+
+status: 501
+error: feature_not_available_in_graalvm_native
+feature: runtime-rule
+path: /runtime/oal/files
+message: "This feature requires runtime DSL (MAL/LAL/OAL) compilation, which 
is not available in the SkyWalking GraalVM native distribution. All DSL rules 
are pre-compiled at build time; runtime rule hot-update and the DSL live 
debugger are disabled. Use the standard JVM OAP distribution if you need these 
features."
diff --git 
a/test/e2e/cases/live-debugging/expected/runtime-rule-addorupdate.yml 
b/test/e2e/cases/live-debugging/expected/runtime-rule-addorupdate.yml
new file mode 100644
index 0000000..71ea8b6
--- /dev/null
+++ b/test/e2e/cases/live-debugging/expected/runtime-rule-addorupdate.yml
@@ -0,0 +1,20 @@
+# 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.
+
+status: 501
+error: feature_not_available_in_graalvm_native
+feature: runtime-rule
+path: /runtime/rule/addOrUpdate
+message: "This feature requires runtime DSL (MAL/LAL/OAL) compilation, which 
is not available in the SkyWalking GraalVM native distribution. All DSL rules 
are pre-compiled at build time; runtime rule hot-update and the DSL live 
debugger are disabled. Use the standard JVM OAP distribution if you need these 
features."
diff --git a/test/e2e/cases/live-debugging/expected/runtime-rule-list.yml 
b/test/e2e/cases/live-debugging/expected/runtime-rule-list.yml
new file mode 100644
index 0000000..4bb4abd
--- /dev/null
+++ b/test/e2e/cases/live-debugging/expected/runtime-rule-list.yml
@@ -0,0 +1,20 @@
+# 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.
+
+status: 501
+error: feature_not_available_in_graalvm_native
+feature: runtime-rule
+path: /runtime/rule/list
+message: "This feature requires runtime DSL (MAL/LAL/OAL) compilation, which 
is not available in the SkyWalking GraalVM native distribution. All DSL rules 
are pre-compiled at build time; runtime rule hot-update and the DSL live 
debugger are disabled. Use the standard JVM OAP distribution if you need these 
features."
diff --git a/test/e2e/cases/live-debugging/live-debugging-cases.yaml 
b/test/e2e/cases/live-debugging/live-debugging-cases.yaml
new file mode 100644
index 0000000..8459563
--- /dev/null
+++ b/test/e2e/cases/live-debugging/live-debugging-cases.yaml
@@ -0,0 +1,43 @@
+# 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.
+
+# Asserts the GraalVM native distro returns a structured HTTP 501 for the DSL 
live debugger
+# (SWIP-13) and runtime-rule hot-update endpoints — both unsupported under a 
native image.
+# The response body carries status/error/feature/path/message; the message 
directs users to
+# the standard JVM OAP distribution. The body's `status: 501` is set by the 
same handler that
+# sets the HTTP 501 status line, which the dedicated httpStatus cases verify 
independently.
+cases:
+  # --- DSL live debugger (/dsl-debugging/*) -> 501, feature=dsl-debugging ---
+  - query: curl -s http://${oap_host}:${oap_17128}/dsl-debugging/status
+    expected: expected/dsl-debugging-status.yml
+  - query: curl -s -X POST 
http://${oap_host}:${oap_17128}/dsl-debugging/session
+    expected: expected/dsl-debugging-session.yml
+  - query: curl -s http://${oap_host}:${oap_17128}/dsl-debugging/sessions
+    expected: expected/dsl-debugging-sessions.yml
+
+  # --- runtime-rule hot-update (/runtime/*) -> 501, feature=runtime-rule ---
+  - query: curl -s -X POST 
http://${oap_host}:${oap_17128}/runtime/rule/addOrUpdate
+    expected: expected/runtime-rule-addorupdate.yml
+  - query: curl -s http://${oap_host}:${oap_17128}/runtime/rule/list
+    expected: expected/runtime-rule-list.yml
+  - query: curl -s http://${oap_host}:${oap_17128}/runtime/oal/files
+    expected: expected/runtime-oal-files.yml
+
+  # --- HTTP status line is exactly 501 (one per feature root) ---
+  # Quoted in YAML because the echoed "httpStatus:" carries a colon-space.
+  - query: "echo httpStatus: $(curl -s -o /dev/null -w '%{http_code}' 
http://${oap_host}:${oap_17128}/dsl-debugging/status)"
+    expected: expected/http-status-501.yml
+  - query: "echo httpStatus: $(curl -s -o /dev/null -w '%{http_code}' 
http://${oap_host}:${oap_17128}/runtime/rule/list)"
+    expected: expected/http-status-501.yml

Reply via email to