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

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


The following commit(s) were added to refs/heads/master by this push:
     new 4c1c6cf630 HDDS-12714. Create acceptance test framework for debug and 
repair tools (#8510)
4c1c6cf630 is described below

commit 4c1c6cf6302afddc996bffccd4b0cf3a0b2faa07
Author: Zita Dombi <[email protected]>
AuthorDate: Tue May 27 19:47:55 2025 +0200

    HDDS-12714. Create acceptance test framework for debug and repair tools 
(#8510)
---
 .../dist/src/main/compose/ozonesecure-ha/.env      |   1 +
 .../main/compose/ozonesecure-ha/debug-tools.yaml   | 162 +++++++++++++++++++++
 .../compose/ozonesecure-ha/test-debug-tools.sh     |  55 +++++++
 .../smoketest/debug/ozone-debug-tests-ec3-2.robot  |   9 +-
 .../smoketest/debug/ozone-debug-tests-ec6-3.robot  |   5 +-
 .../main/smoketest/debug/ozone-debug-tests.robot   |   9 +-
 .../src/main/smoketest/debug/ozone-debug.robot     |   5 +-
 7 files changed, 235 insertions(+), 11 deletions(-)

diff --git a/hadoop-ozone/dist/src/main/compose/ozonesecure-ha/.env 
b/hadoop-ozone/dist/src/main/compose/ozonesecure-ha/.env
index c3a2c5329a..df30e9989a 100644
--- a/hadoop-ozone/dist/src/main/compose/ozonesecure-ha/.env
+++ b/hadoop-ozone/dist/src/main/compose/ozonesecure-ha/.env
@@ -20,4 +20,5 @@ HADOOP_VERSION=${hadoop.version}
 OZONE_RUNNER_VERSION=${docker.ozone-runner.version}
 OZONE_RUNNER_IMAGE=apache/ozone-runner
 OZONE_TESTKRB5_IMAGE=${docker.ozone-testkr5b.image}
+OZONE_VOLUME=./data
 OZONE_OPTS=
diff --git a/hadoop-ozone/dist/src/main/compose/ozonesecure-ha/debug-tools.yaml 
b/hadoop-ozone/dist/src/main/compose/ozonesecure-ha/debug-tools.yaml
new file mode 100644
index 0000000000..e07b41ad89
--- /dev/null
+++ b/hadoop-ozone/dist/src/main/compose/ozonesecure-ha/debug-tools.yaml
@@ -0,0 +1,162 @@
+#!/usr/bin/env bash
+# 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.
+
+x-debug-tools-config:
+  &common-env-file
+  dns_search: .
+  image: ${OZONE_RUNNER_IMAGE}:${OZONE_RUNNER_VERSION}
+  env_file:
+    - ./docker-config
+
+x-volumes:
+  - &keytabs ../_keytabs:/etc/security/keytabs
+  - &krb5conf ./krb5.conf:/etc/krb5.conf
+  - &ozone-dir ../..:/opt/hadoop
+  - &transformation 
../../libexec/transformation.py:/opt/hadoop/libexec/transformation.py
+
+services:
+  kdc:
+    volumes:
+      - *keytabs
+      - *ozone-dir
+  kms:
+    volumes:
+      - ${OZONE_VOLUME}/kms:/data
+      - *keytabs
+      - *krb5conf
+      - *transformation
+  datanode1:
+    <<: *common-env-file
+    volumes:
+      - ${OZONE_VOLUME}/dn1:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+  datanode2:
+    <<: *common-env-file
+    volumes:
+      - ${OZONE_VOLUME}/dn2:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+  datanode3:
+    <<: *common-env-file
+    volumes:
+      - ${OZONE_VOLUME}/dn3:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+  datanode4:
+    <<: *common-env-file
+    ports:
+      - 9870:9999
+    command: ["/opt/hadoop/bin/ozone","datanode"]
+    extra_hosts:
+      - "scm1.org=172.25.0.116"
+      - "scm2.org=172.25.0.117"
+      - "scm3.org=172.25.0.118"
+      - "recon=172.25.0.115"
+    environment:
+      WAITFOR: scm3.org:9894
+      OZONE_OPTS:
+    networks:
+      ozone_net:
+        ipv4_address: 172.25.0.105
+    volumes:
+      - ${OZONE_VOLUME}/dn4:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+  datanode5:
+    <<: *common-env-file
+    ports:
+      - 9872:9999
+    command: [ "/opt/hadoop/bin/ozone","datanode" ]
+    extra_hosts:
+      - "scm1.org=172.25.0.116"
+      - "scm2.org=172.25.0.117"
+      - "scm3.org=172.25.0.118"
+      - "recon=172.25.0.115"
+    environment:
+      WAITFOR: scm3.org:9894
+      OZONE_OPTS:
+    networks:
+      ozone_net:
+        ipv4_address: 172.25.0.106
+    volumes:
+      - ${OZONE_VOLUME}/dn5:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+  om1:
+    <<: *common-env-file
+    volumes:
+      - ${OZONE_VOLUME}/om1:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+  om2:
+    <<: *common-env-file
+    volumes:
+      - ${OZONE_VOLUME}/om2:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+  om3:
+    <<: *common-env-file
+    volumes:
+      - ${OZONE_VOLUME}/om3:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+  s3g:
+    <<: *common-env-file
+    volumes:
+      - ${OZONE_VOLUME}/s3g:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+  scm1.org:
+    <<: *common-env-file
+    volumes:
+      - ${OZONE_VOLUME}/scm1:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+  scm2.org:
+    <<: *common-env-file
+    volumes:
+      - ${OZONE_VOLUME}/scm2:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+  scm3.org:
+    <<: *common-env-file
+    volumes:
+      - ${OZONE_VOLUME}/scm3:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+  recon:
+    <<: *common-env-file
+    volumes:
+      - ${OZONE_VOLUME}/recon:/data
+      - *keytabs
+      - *krb5conf
+      - *ozone-dir
+
+
diff --git 
a/hadoop-ozone/dist/src/main/compose/ozonesecure-ha/test-debug-tools.sh 
b/hadoop-ozone/dist/src/main/compose/ozonesecure-ha/test-debug-tools.sh
new file mode 100644
index 0000000000..c54c17425b
--- /dev/null
+++ b/hadoop-ozone/dist/src/main/compose/ozonesecure-ha/test-debug-tools.sh
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+# 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.
+
+#suite:HA-secure
+
+set -u -o pipefail
+
+COMPOSE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+export COMPOSE_DIR
+
+export SECURITY_ENABLED=true
+export OM_SERVICE_ID=omservice
+export SCM=scm1.org
+export COMPOSE_FILE=docker-compose.yaml:debug-tools.yaml
+export OZONE_DIR=/opt/hadoop
+
+: "${OZONE_VOLUME_OWNER:=}"
+: "${OZONE_VOLUME:="${COMPOSE_DIR}/data"}"
+
+export OZONE_VOLUME
+
+# Clean up saved internal state from each container's volume for the next run.
+rm -rf "${OZONE_VOLUME}"
+mkdir -p 
"${OZONE_VOLUME}"/{dn1,dn2,dn3,dn4,dn5,om1,om2,om3,scm1,scm2,scm3,recon,s3g,kms}
+
+if [[ -n "${OZONE_VOLUME_OWNER}" ]]; then
+  current_user=$(whoami)
+  if [[ "${OZONE_VOLUME_OWNER}" != "${current_user}" ]]; then
+    chown -R "${OZONE_VOLUME_OWNER}" "${OZONE_VOLUME}" \
+      || sudo chown -R "${OZONE_VOLUME_OWNER}" "${OZONE_VOLUME}"
+  fi
+fi
+
+# shellcheck source=/dev/null
+source "$COMPOSE_DIR/../testlib.sh"
+
+start_docker_env
+
+execute_robot_test ${SCM} kinit.robot
+
+source "$COMPOSE_DIR/../common/replicas-test.sh"
diff --git 
a/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug-tests-ec3-2.robot 
b/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug-tests-ec3-2.robot
index 0c310f62e8..e10e03443d 100644
--- a/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug-tests-ec3-2.robot
+++ b/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug-tests-ec3-2.robot
@@ -29,17 +29,18 @@ ${BUCKET}           cli-debug-bucket
 ${TESTFILE}         testfile
 ${EC_DATA}          3
 ${EC_PARITY}        2
+${OM_SERVICE_ID}    %{OM_SERVICE_ID}
 
 *** Keywords ***
 Create Volume Bucket
-    Execute             ozone sh volume create o3://om/${VOLUME}
-    Execute             ozone sh bucket create o3://om/${VOLUME}/${BUCKET}
+    Execute             ozone sh volume create o3://${OM_SERVICE_ID}/${VOLUME}
+    Execute             ozone sh bucket create 
o3://${OM_SERVICE_ID}/${VOLUME}/${BUCKET}
 
 Create EC key
     [arguments]       ${bs}    ${count}    
 
     Execute           dd if=/dev/urandom of=${TEMP_DIR}/testfile bs=${bs} 
count=${count}
-    Execute           ozone sh key put o3://om/${VOLUME}/${BUCKET}/testfile 
${TEMP_DIR}/testfile -r rs-${EC_DATA}-${EC_PARITY}-1024k -t EC
+    Execute           ozone sh key put 
o3://${OM_SERVICE_ID}/${VOLUME}/${BUCKET}/testfile ${TEMP_DIR}/testfile -r 
rs-${EC_DATA}-${EC_PARITY}-1024k -t EC
 
 *** Test Cases ***
 0 data block
@@ -87,5 +88,5 @@ Create EC key
 
 Test ozone debug replicas chunk-info
     Create EC key     1048576    3
-    ${count} =        Execute           ozone debug replicas chunk-info 
o3://om/${VOLUME}/${BUCKET}/testfile | jq '[.keyLocations[0][] | select(.file | 
test("\\\\.block$")) | .file] | length'
+    ${count} =        Execute           ozone debug replicas chunk-info 
o3://${OM_SERVICE_ID}/${VOLUME}/${BUCKET}/testfile | jq '[.keyLocations[0][] | 
select(.file | test("\\\\.block$")) | .file] | length'
     Should Be Equal As Integers         ${count}          5
diff --git 
a/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug-tests-ec6-3.robot 
b/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug-tests-ec6-3.robot
index 9c83cad697..c3b8c7ad1a 100644
--- a/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug-tests-ec6-3.robot
+++ b/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug-tests-ec6-3.robot
@@ -28,13 +28,14 @@ ${BUCKET}           cli-debug-bucket
 ${TESTFILE}         testfile
 ${EC_DATA}          6
 ${EC_PARITY}        3
+${OM_SERVICE_ID}    %{OM_SERVICE_ID}
 
 *** Keywords ***
 Create EC key
     [arguments]       ${bs}    ${count}
 
     Execute           dd if=/dev/urandom of=${TEMP_DIR}/testfile bs=${bs} 
count=${count}
-    Execute           ozone sh key put o3://om/${VOLUME}/${BUCKET}/testfile 
${TEMP_DIR}/testfile -r rs-${EC_DATA}-${EC_PARITY}-1024k -t EC
+    Execute           ozone sh key put 
o3://${OM_SERVICE_ID}/${VOLUME}/${BUCKET}/testfile ${TEMP_DIR}/testfile -r 
rs-${EC_DATA}-${EC_PARITY}-1024k -t EC
 
 *** Test Cases ***
 0 data block
@@ -95,5 +96,5 @@ Create EC key
 
 Test ozone debug replicas chunk-info
     Create EC key     1048576    6
-    ${count} =        Execute           ozone debug replicas chunk-info 
o3://om/${VOLUME}/${BUCKET}/testfile | jq '[.keyLocations[0][] | select(.file | 
test("\\\\.block$")) | .file] | length'
+    ${count} =        Execute           ozone debug replicas chunk-info 
o3://${OM_SERVICE_ID}/${VOLUME}/${BUCKET}/testfile | jq '[.keyLocations[0][] | 
select(.file | test("\\\\.block$")) | .file] | length'
     Should Be Equal As Integers         ${count}           9
diff --git a/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug-tests.robot 
b/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug-tests.robot
index 97fe36d2c5..532f931bb5 100644
--- a/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug-tests.robot
+++ b/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug-tests.robot
@@ -27,17 +27,18 @@ ${VOLUME}           cli-debug-volume${PREFIX}
 ${BUCKET}           cli-debug-bucket
 ${DEBUGKEY}         debugKey
 ${TESTFILE}         testfile
+${OM_SERVICE_ID}    %{OM_SERVICE_ID}
 
 *** Keywords ***
 Write keys
-    Execute             ozone sh volume create o3://om/${VOLUME} --space-quota 
100TB --namespace-quota 100
-    Execute             ozone sh bucket create o3://om/${VOLUME}/${BUCKET} 
--space-quota 1TB
+    Execute             ozone sh volume create o3://${OM_SERVICE_ID}/${VOLUME} 
--space-quota 100TB --namespace-quota 100
+    Execute             ozone sh bucket create 
o3://${OM_SERVICE_ID}/${VOLUME}/${BUCKET} --space-quota 1TB
     Execute             dd if=/dev/urandom of=${TEMP_DIR}/${TESTFILE} 
bs=100000 count=15
-    Execute             ozone sh key put 
o3://om/${VOLUME}/${BUCKET}/${TESTFILE} ${TEMP_DIR}/${TESTFILE}
+    Execute             ozone sh key put 
o3://${OM_SERVICE_ID}/${VOLUME}/${BUCKET}/${TESTFILE} ${TEMP_DIR}/${TESTFILE}
 
 *** Test Cases ***
 Test ozone debug replicas verify checksums
-    ${output} =    Execute   ozone debug replicas verify --checksums 
o3://om/${VOLUME}/${BUCKET}/${TESTFILE} --output-dir ${TEMP_DIR}
+    ${output} =    Execute   ozone debug replicas verify --checksums 
o3://${OM_SERVICE_ID}/${VOLUME}/${BUCKET}/${TESTFILE} --output-dir ${TEMP_DIR}
     ${json} =      Evaluate  json.loads('''${output}''')      json
 
     # 'keys' array should be empty if all keys and their replicas passed 
checksum verification
diff --git a/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug.robot 
b/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug.robot
index b042f606cf..c8eb089247 100644
--- a/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug.robot
+++ b/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug.robot
@@ -18,9 +18,12 @@ Documentation       Keyword definitions for Ozone Debug CLI 
tests
 Library             Collections
 Resource            ../lib/os.robot
 
+*** Variables ***
+${OM_SERVICE_ID}                    %{OM_SERVICE_ID}
+
 *** Keywords ***
 Execute replicas verify checksums CLI tool
-    Execute                         ozone debug 
-Dozone.network.topology.aware.read=true replicas verify --checksums 
--output-dir ${TEMP_DIR} o3://om/${VOLUME}/${BUCKET}/${TESTFILE}
+    Execute                         ozone debug 
-Dozone.network.topology.aware.read=true replicas verify --checksums 
--output-dir ${TEMP_DIR} o3://${OM_SERVICE_ID}/${VOLUME}/${BUCKET}/${TESTFILE}
     ${directory} =                  Execute     ls -d 
${TEMP_DIR}/${VOLUME}_${BUCKET}_${TESTFILE}_*/ | tail -n 1
     Directory Should Exist          ${directory}
     File Should Exist               ${directory}/${TESTFILE}_manifest


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to