From 714a605677e244fea39ef5c46ede5d23758adc9b Mon Sep 17 00:00:00 2001 From: yerkennz Date: Fri, 22 May 2026 13:28:22 +0500 Subject: [PATCH 01/10] fix: [CPCAP-9876] change master deletion logic check --- .../check_delete_master.robot | 66 ++++++++++++++----- 1 file changed, 49 insertions(+), 17 deletions(-) diff --git a/tests/robot/check_delete_master/check_delete_master.robot b/tests/robot/check_delete_master/check_delete_master.robot index b1b1d8f9..97c45aa9 100644 --- a/tests/robot/check_delete_master/check_delete_master.robot +++ b/tests/robot/check_delete_master/check_delete_master.robot @@ -1,8 +1,9 @@ *** Settings *** -Documentation Check scaledown replica +Documentation Check delete master Library Collections Library OperatingSystem Library String +Library Process Resource ../Lib/lib.robot @@ -10,25 +11,56 @@ Resource ../Lib/lib.robot Check Delete Master [Tags] patroni full check_delete_master Run Keyword Checks Before Tests + ${MASTER}= Get Master Pod - # insert test records + ${OLD_MASTER_NAME}= Set Variable ${MASTER.metadata.name} + ${OLD_MASTER_STS}= Get Statefulset Name From Pod Name ${OLD_MASTER_NAME} + + # insert test records before failover ${RID} ${EXPECTED}= Insert Test Record ${MASTER.status.pod_ip} - # delete mater pod - Log To Console Deleting Master Pod "${MASTER.metadata.name}" - Run Keyword Delete Pod ${MASTER.metadata.name} 30 - # wait new master - Log To Console Wait new master election keyword - Wait Until Keyword Succeeds 120 sec 1 sec Check If New Master Elected ${MASTER.metadata.name} - # wait while all replicas back - Wait Until Keyword Succeeds 120 sec 1 sec Check Replica Count + + Log To Console Scaling down old master StatefulSet "${OLD_MASTER_STS}" + Scale Statefulset ${OLD_MASTER_STS} 0 + + Log To Console Deleting Master Pod "${OLD_MASTER_NAME}" + Delete Pod ${OLD_MASTER_NAME} 30 + + Log To Console Wait old master pod deletion + Wait Until Keyword Succeeds 120 sec 2 sec Pod Should Not Exist ${OLD_MASTER_NAME} + + Log To Console Wait new master election + Wait Until Keyword Succeeds 180 sec 2 sec Check If New Master Elected ${OLD_MASTER_NAME} + ${NEW_MASTER}= Get Master Pod Log To Console New Master ${NEW_MASTER.metadata.name} - # wait new replica pod is up - Wait Until Keyword Succeeds 120 sec 2 sec Wait Replica Pods In Up State - # check master not read-only + + Log To Console Scaling old master StatefulSet "${OLD_MASTER_STS}" back to 1 + Scale Statefulset ${OLD_MASTER_STS} 1 + + # wait while all replicas are back + Wait Until Keyword Succeeds 180 sec 2 sec Check Replica Count + Wait Until Keyword Succeeds 180 sec 2 sec Wait Replica Pods In Up State + + # check new master is writable Log To Console Test New Master Works - Wait Until Keyword Succeeds ${120} 1 sec Insert Test Record ${NEW_MASTER.status.pod_ip} - # check existance unavaliabled replicas + Wait Until Keyword Succeeds 120 sec 1 sec Insert Test Record ${NEW_MASTER.status.pod_ip} + Run Keyword Check Replica Count - # check replication again, becouse it is simple! :) - Run Keyword Replication Works + Run Keyword Replication Works + + +*** Keywords *** +Get Statefulset Name From Pod Name + [Arguments] ${pod_name} + ${sts_name}= Evaluate "${pod_name}".rsplit("-", 1)[0] + RETURN ${sts_name} + +Scale Statefulset + [Arguments] ${sts_name} ${replicas} + ${result}= Run Process kubectl -n %{POD_NAMESPACE} scale statefulset ${sts_name} --replicas=${replicas} + Should Be Equal As Integers ${result.rc} 0 + +Pod Should Not Exist + [Arguments] ${pod_name} + ${result}= Run Process kubectl -n %{POD_NAMESPACE} get pod ${pod_name} + Should Not Be Equal As Integers ${result.rc} 0 \ No newline at end of file From dbdfce0d1058ce9704b1f943ac6b5ff9b44396b1 Mon Sep 17 00:00:00 2001 From: yerkennz Date: Fri, 22 May 2026 14:36:05 +0500 Subject: [PATCH 02/10] fix: replicas error --- tests/robot/check_delete_master/check_delete_master.robot | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/robot/check_delete_master/check_delete_master.robot b/tests/robot/check_delete_master/check_delete_master.robot index 97c45aa9..f23ea880 100644 --- a/tests/robot/check_delete_master/check_delete_master.robot +++ b/tests/robot/check_delete_master/check_delete_master.robot @@ -57,10 +57,12 @@ Get Statefulset Name From Pod Name Scale Statefulset [Arguments] ${sts_name} ${replicas} - ${result}= Run Process kubectl -n %{POD_NAMESPACE} scale statefulset ${sts_name} --replicas=${replicas} + ${result}= Run Process kubectl -n %{POD_NAMESPACE} scale statefulset ${sts_name} --replicas ${replicas} stdout=PIPE stderr=PIPE + Log ${result.stdout} + Log ${result.stderr} Should Be Equal As Integers ${result.rc} 0 Pod Should Not Exist [Arguments] ${pod_name} - ${result}= Run Process kubectl -n %{POD_NAMESPACE} get pod ${pod_name} + ${result}= Run Process kubectl -n %{POD_NAMESPACE} get pod ${pod_name} stdout=PIPE stderr=PIPE Should Not Be Equal As Integers ${result.rc} 0 \ No newline at end of file From 4c69b7138f802b660cd02cff35d797159bdf7388 Mon Sep 17 00:00:00 2001 From: yerkennz Date: Fri, 22 May 2026 15:16:35 +0500 Subject: [PATCH 03/10] fix: test without scaledown --- .../check_delete_master.robot | 53 ++++--------------- 1 file changed, 11 insertions(+), 42 deletions(-) diff --git a/tests/robot/check_delete_master/check_delete_master.robot b/tests/robot/check_delete_master/check_delete_master.robot index f23ea880..5fc2f434 100644 --- a/tests/robot/check_delete_master/check_delete_master.robot +++ b/tests/robot/check_delete_master/check_delete_master.robot @@ -3,7 +3,6 @@ Documentation Check delete master Library Collections Library OperatingSystem Library String -Library Process Resource ../Lib/lib.robot @@ -14,55 +13,25 @@ Check Delete Master ${MASTER}= Get Master Pod ${OLD_MASTER_NAME}= Set Variable ${MASTER.metadata.name} - ${OLD_MASTER_STS}= Get Statefulset Name From Pod Name ${OLD_MASTER_NAME} - # insert test records before failover + # insert test records before deleting master ${RID} ${EXPECTED}= Insert Test Record ${MASTER.status.pod_ip} - Log To Console Scaling down old master StatefulSet "${OLD_MASTER_STS}" - Scale Statefulset ${OLD_MASTER_STS} 0 - Log To Console Deleting Master Pod "${OLD_MASTER_NAME}" - Delete Pod ${OLD_MASTER_NAME} 30 - - Log To Console Wait old master pod deletion - Wait Until Keyword Succeeds 120 sec 2 sec Pod Should Not Exist ${OLD_MASTER_NAME} + Run Keyword Delete Pod ${OLD_MASTER_NAME} 30 - Log To Console Wait new master election - Wait Until Keyword Succeeds 180 sec 2 sec Check If New Master Elected ${OLD_MASTER_NAME} + # wait until cluster is healthy again + Log To Console Wait until cluster recovers after master deletion + Wait Until Keyword Succeeds 300 sec 2 sec Wait Replica Pods In Up State + Wait Until Keyword Succeeds 300 sec 2 sec Check Replica Count ${NEW_MASTER}= Get Master Pod - Log To Console New Master ${NEW_MASTER.metadata.name} - - Log To Console Scaling old master StatefulSet "${OLD_MASTER_STS}" back to 1 - Scale Statefulset ${OLD_MASTER_STS} 1 - - # wait while all replicas are back - Wait Until Keyword Succeeds 180 sec 2 sec Check Replica Count - Wait Until Keyword Succeeds 180 sec 2 sec Wait Replica Pods In Up State + Log To Console Current Master ${NEW_MASTER.metadata.name} - # check new master is writable - Log To Console Test New Master Works + # check current master is writable + Log To Console Test Current Master Works Wait Until Keyword Succeeds 120 sec 1 sec Insert Test Record ${NEW_MASTER.status.pod_ip} + # check replication after recovery Run Keyword Check Replica Count - Run Keyword Replication Works - - -*** Keywords *** -Get Statefulset Name From Pod Name - [Arguments] ${pod_name} - ${sts_name}= Evaluate "${pod_name}".rsplit("-", 1)[0] - RETURN ${sts_name} - -Scale Statefulset - [Arguments] ${sts_name} ${replicas} - ${result}= Run Process kubectl -n %{POD_NAMESPACE} scale statefulset ${sts_name} --replicas ${replicas} stdout=PIPE stderr=PIPE - Log ${result.stdout} - Log ${result.stderr} - Should Be Equal As Integers ${result.rc} 0 - -Pod Should Not Exist - [Arguments] ${pod_name} - ${result}= Run Process kubectl -n %{POD_NAMESPACE} get pod ${pod_name} stdout=PIPE stderr=PIPE - Should Not Be Equal As Integers ${result.rc} 0 \ No newline at end of file + Run Keyword Replication Works \ No newline at end of file From ee4be21aede32596eece5d807f7511224fc204bf Mon Sep 17 00:00:00 2001 From: yerkennz Date: Fri, 22 May 2026 15:46:07 +0500 Subject: [PATCH 04/10] fix: add wait time for checking --- .../check_delete_master/check_delete_master.robot | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/tests/robot/check_delete_master/check_delete_master.robot b/tests/robot/check_delete_master/check_delete_master.robot index 5fc2f434..543133ad 100644 --- a/tests/robot/check_delete_master/check_delete_master.robot +++ b/tests/robot/check_delete_master/check_delete_master.robot @@ -20,18 +20,15 @@ Check Delete Master Log To Console Deleting Master Pod "${OLD_MASTER_NAME}" Run Keyword Delete Pod ${OLD_MASTER_NAME} 30 - # wait until cluster is healthy again Log To Console Wait until cluster recovers after master deletion - Wait Until Keyword Succeeds 300 sec 2 sec Wait Replica Pods In Up State - Wait Until Keyword Succeeds 300 sec 2 sec Check Replica Count + Wait Until Keyword Succeeds 300 sec 5 sec Wait Replica Pods In Up State + Wait Until Keyword Succeeds 300 sec 5 sec Check Replica Count ${NEW_MASTER}= Get Master Pod Log To Console Current Master ${NEW_MASTER.metadata.name} - # check current master is writable Log To Console Test Current Master Works - Wait Until Keyword Succeeds 120 sec 1 sec Insert Test Record ${NEW_MASTER.status.pod_ip} + Wait Until Keyword Succeeds 300 sec 5 sec Insert Test Record ${NEW_MASTER.status.pod_ip} - # check replication after recovery - Run Keyword Check Replica Count - Run Keyword Replication Works \ No newline at end of file + Wait Until Keyword Succeeds 300 sec 5 sec Check Replica Count + Wait Until Keyword Succeeds 300 sec 5 sec Replication Works \ No newline at end of file From 6dfd7df6dbcb7e9a5a9a8eba89c11192df888b68 Mon Sep 17 00:00:00 2001 From: yerkennz Date: Fri, 22 May 2026 16:59:04 +0500 Subject: [PATCH 05/10] fix: add time for copying reports --- tests/docker/robot-entrypoint.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/docker/robot-entrypoint.sh b/tests/docker/robot-entrypoint.sh index 0d0a107d..82700b9a 100644 --- a/tests/docker/robot-entrypoint.sh +++ b/tests/docker/robot-entrypoint.sh @@ -1,4 +1,11 @@ #!/bin/bash + export TAGS="${TESTS_TAGS:-$TAGS}" cd "${ROBOT_HOME:-/opt/robot}" || exit 1 -exec /docker-entrypoint.sh "$@" \ No newline at end of file + +/docker-entrypoint.sh "$@" +robot_exit=$? + +sleep "${RESULT_COPY_GRACE_PERIOD:-60}" + +exit "$robot_exit" \ No newline at end of file From fe561ff7639c695ce1bfc27cfc5276e5d736f0ba Mon Sep 17 00:00:00 2001 From: yerkennz Date: Fri, 22 May 2026 17:35:06 +0500 Subject: [PATCH 06/10] fix: increase sleep time --- tests/docker/robot-entrypoint.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/docker/robot-entrypoint.sh b/tests/docker/robot-entrypoint.sh index 82700b9a..8368f706 100644 --- a/tests/docker/robot-entrypoint.sh +++ b/tests/docker/robot-entrypoint.sh @@ -6,6 +6,7 @@ cd "${ROBOT_HOME:-/opt/robot}" || exit 1 /docker-entrypoint.sh "$@" robot_exit=$? -sleep "${RESULT_COPY_GRACE_PERIOD:-60}" +echo "Robot finished with exit code ${robot_exit}. Waiting for result copy..." +sleep "${RESULT_COPY_GRACE_PERIOD:-120}" -exit "$robot_exit" \ No newline at end of file +exit "${robot_exit}" \ No newline at end of file From 0d58be620176d8f48e5f427aca243f0d8d6589c1 Mon Sep 17 00:00:00 2001 From: yerkennz Date: Fri, 22 May 2026 18:23:02 +0500 Subject: [PATCH 07/10] fix: increase wait time --- tests/docker/robot-entrypoint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/docker/robot-entrypoint.sh b/tests/docker/robot-entrypoint.sh index 8368f706..b2193c09 100644 --- a/tests/docker/robot-entrypoint.sh +++ b/tests/docker/robot-entrypoint.sh @@ -6,7 +6,7 @@ cd "${ROBOT_HOME:-/opt/robot}" || exit 1 /docker-entrypoint.sh "$@" robot_exit=$? -echo "Robot finished with exit code ${robot_exit}. Waiting for result copy..." -sleep "${RESULT_COPY_GRACE_PERIOD:-120}" +echo "Robot finished with exit code ${robot_exit}. Waiting before pod exit to allow result copy..." +sleep "${RESULT_COPY_GRACE_PERIOD:-300}" exit "${robot_exit}" \ No newline at end of file From 4b8374e4407ffbded9b1ae080b13becb34aa06fb Mon Sep 17 00:00:00 2001 From: yerkennz Date: Fri, 22 May 2026 19:16:50 +0500 Subject: [PATCH 08/10] fix: check --- tests/Dockerfile | 2 +- tests/docker/robot-entrypoint.sh | 10 +--------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/tests/Dockerfile b/tests/Dockerfile index 42abdb2a..37bb9fbf 100644 --- a/tests/Dockerfile +++ b/tests/Dockerfile @@ -38,4 +38,4 @@ USER 1001 WORKDIR /app ENTRYPOINT [ "/opt/uid_entrypoint" ] -CMD ["/opt/robot-entrypoint.sh", "run-robot-without-ttyd"] +CMD ["/opt/robot-entrypoint.sh", "run-robot"] diff --git a/tests/docker/robot-entrypoint.sh b/tests/docker/robot-entrypoint.sh index b2193c09..0d0a107d 100644 --- a/tests/docker/robot-entrypoint.sh +++ b/tests/docker/robot-entrypoint.sh @@ -1,12 +1,4 @@ #!/bin/bash - export TAGS="${TESTS_TAGS:-$TAGS}" cd "${ROBOT_HOME:-/opt/robot}" || exit 1 - -/docker-entrypoint.sh "$@" -robot_exit=$? - -echo "Robot finished with exit code ${robot_exit}. Waiting before pod exit to allow result copy..." -sleep "${RESULT_COPY_GRACE_PERIOD:-300}" - -exit "${robot_exit}" \ No newline at end of file +exec /docker-entrypoint.sh "$@" \ No newline at end of file From 4dccd532ddf76ea62c5e5c6cf68bc49207cd3d5c Mon Sep 17 00:00:00 2001 From: yerkennz Date: Mon, 25 May 2026 11:49:16 +0500 Subject: [PATCH 09/10] fix: run robot test without ttyd --- tests/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Dockerfile b/tests/Dockerfile index 37bb9fbf..42abdb2a 100644 --- a/tests/Dockerfile +++ b/tests/Dockerfile @@ -38,4 +38,4 @@ USER 1001 WORKDIR /app ENTRYPOINT [ "/opt/uid_entrypoint" ] -CMD ["/opt/robot-entrypoint.sh", "run-robot"] +CMD ["/opt/robot-entrypoint.sh", "run-robot-without-ttyd"] From 4b0e841c3585a10dd5a046493c20538639d86e1d Mon Sep 17 00:00:00 2001 From: yerkennz Date: Mon, 25 May 2026 13:42:39 +0500 Subject: [PATCH 10/10] fix: test timeout --- .github/workflows/run_tests.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index cf0a1653..a9037266 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -28,11 +28,11 @@ jobs: Pgskipper-Pipeline: if: ${{ github.actor != 'dependabot[bot]' && github.event.pull_request.user.login != 'dependabot[bot]' }} needs: Wait-for-images - uses: Netcracker/qubership-test-pipelines/.github/workflows/pgskipper.yaml@34e86efe815cb03fea20efa760989cd21ca0c776 #master + uses: Netcracker/qubership-test-pipelines/.github/workflows/pgskipper.yaml@timeout_pg #master with: repository_name: ${{ github.repository }} service_branch: '${{ github.head_ref || github.ref_name }}' - pipeline_branch: '34e86efe815cb03fea20efa760989cd21ca0c776' #this value must match the value after '@' in 'uses' + pipeline_branch: 'timeout_pg' #this value must match the value after '@' in 'uses' secrets: AWS_S3_ACCESS_KEY_ID: ${{secrets.AWS_S3_ACCESS_KEY_ID}} AWS_S3_ACCESS_KEY_SECRET: ${{secrets.AWS_S3_ACCESS_KEY_SECRET}}