From 278747c31b6b2445030759d845bf2a9efc799f8d Mon Sep 17 00:00:00 2001 From: Stoyan Lachev Date: Thu, 29 Jun 2023 09:37:53 +0000 Subject: [PATCH 1/4] Fix for robot test on SUA --- .../leda-tests/30__self_update.robot | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot b/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot index bb3d7a2..f37b9f3 100644 --- a/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot +++ b/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot @@ -49,25 +49,30 @@ ${topic_currentstate} selfupdate/currentstate/get Wait for SUA alive Wait Until Keyword Succeeds 5m 3s Verify SUA is alive ${broker.uri} ${broker.port} ${topic_currentstate} ${get_state_filename} ${sua_alive_regex} -Self Update Agent Test - Log "Identify" - ${expected_version}= Trigger to start update ${broker.uri} ${broker.port} ${topic_pub} ${start_update_filename} - Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${identified_success_regex} 10 - Log "Download" +Self Update Test + Log To Console \nGet Version and Start Update... + ${EXPECTED_VERSION} = Trigger to start update ${broker.uri} ${broker.port} ${topic_pub} ${start_update_filename} + Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${identified_success_regex} 20 + # Download + Log To Console Download... Execute SUA command ${broker.uri} ${broker.port} ${topic_pub_commands} ${download_filename} Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${download_success_regex} 120 - Log "Update" + # Update + Log To Console Update... Execute SUA command ${broker.uri} ${broker.port} ${topic_pub_commands} ${update_filename} - Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${update_success_regex} 90 - Log "Activate" + Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${update_success_regex} 120 + # Activate + Log To Console Activate... Execute SUA command ${broker.uri} ${broker.port} ${topic_pub_commands} ${activate_filename} Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${activation_success_regex} 5 - Log "Cleanup" + # Cleanup + Log To Console Cleanup... Execute SUA command ${broker.uri} ${broker.port} ${topic_pub_commands} ${cleanup_filename} Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${cleanup_success_regex} 5 - Log "Finalize" - ${result}= Leda Execute OK echo VERSION_ID=${expected_version} > /etc/os-release + # Finalize + Log To console Finalize + ${result}= Leda Execute OK echo VERSION_ID=${EXPECTED_VERSION} > /etc/os-release ${result_status}= Leda Execute OK rauc status --detailed --output-format=json ${json}= Evaluate json.loads("""${result_status.stdout}""") ${installed_json}= Get Value From Json ${json} $..slots[*][?(@.slot_status.status=='ok')] fail_on_empty=${True} - Should Match ${installed_json[0]['slot_status']['bundle']['version']} ${expected_version} \ No newline at end of file + Should Match ${installed_json[0]['slot_status']['bundle']['version']} ${EXPECTED_VERSION} \ No newline at end of file From 5341c5d180911c1ae6e39a87f43ad5fa52d4f9a6 Mon Sep 17 00:00:00 2001 From: Stoyan Lachev Date: Thu, 29 Jun 2023 10:18:32 +0000 Subject: [PATCH 2/4] Added [Documentation] line --- .../dockerfiles/leda-tests/30__self_update.robot | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot b/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot index f37b9f3..c607e7e 100644 --- a/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot +++ b/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot @@ -50,8 +50,9 @@ Wait for SUA alive Wait Until Keyword Succeeds 5m 3s Verify SUA is alive ${broker.uri} ${broker.port} ${topic_currentstate} ${get_state_filename} ${sua_alive_regex} Self Update Test + [Documentation] Install update bundle Log To Console \nGet Version and Start Update... - ${EXPECTED_VERSION} = Trigger to start update ${broker.uri} ${broker.port} ${topic_pub} ${start_update_filename} + ${expected_version} = Trigger to start update ${broker.uri} ${broker.port} ${topic_pub} ${start_update_filename} Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${identified_success_regex} 20 # Download Log To Console Download... @@ -71,8 +72,8 @@ Self Update Test Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${cleanup_success_regex} 5 # Finalize Log To console Finalize - ${result}= Leda Execute OK echo VERSION_ID=${EXPECTED_VERSION} > /etc/os-release + ${result}= Leda Execute OK echo VERSION_ID=${expected_version} > /etc/os-release ${result_status}= Leda Execute OK rauc status --detailed --output-format=json ${json}= Evaluate json.loads("""${result_status.stdout}""") ${installed_json}= Get Value From Json ${json} $..slots[*][?(@.slot_status.status=='ok')] fail_on_empty=${True} - Should Match ${installed_json[0]['slot_status']['bundle']['version']} ${EXPECTED_VERSION} \ No newline at end of file + Should Match ${installed_json[0]['slot_status']['bundle']['version']} ${expected_version} \ No newline at end of file From 0b1141ec2148ecb0b8d2a1133852cc6c6409fc53 Mon Sep 17 00:00:00 2001 From: Stoyan Lachev Date: Mon, 3 Jul 2023 08:57:56 +0000 Subject: [PATCH 3/4] SUA Timeout tuning --- .../leda-tests/30__self_update.robot | 32 +++++++++---------- .../leda-tests/leda_keywords.resource | 16 +++++++--- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot b/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot index c607e7e..7b04277 100644 --- a/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot +++ b/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot @@ -29,8 +29,10 @@ ${leda.sshport} 2001 ${broker.uri} 127.0.0.1 ${broker.port} 1884 ${topic_pub} selfupdate/desiredstate -${topic_pub_commands} selfupdate/desiredstate/command -${topic_sub} selfupdate/# +${topic_pub_command} selfupdate/desiredstate/command +${topic_sub} selfupdate/desiredstatefeedback +${topic_pub_currentstate} selfupdate/currentstate/get +${topic_sub_currentstate} selfupdate/currentstate ${start_update_filename} robot-resources/start-update-example-x86.json ${download_filename} robot-resources/download-command.json ${update_filename} robot-resources/update-command.json @@ -42,35 +44,33 @@ ${download_success_regex} ([.\\s\\S]*)("DOWNLOAD_SUCCESS")([\\s\\S.]*) ${update_success_regex} ([.\\s\\S]*)("UPDATE_SUCCESS")([\\s\\S.]*) ${activation_success_regex} ([.\\s\\S]*)("ACTIVATION_SUCCESS")([\\s\\S.]*) ${cleanup_success_regex} ([.\\s\\S]*)("COMPLETE")([\\s\\S.]*) -${sua_alive_regex} ([.\\s\\S]*)(timestamp)([\\s\\S.]*) -${topic_currentstate} selfupdate/currentstate/get +${sua_alive_regex} ([.\\s\\S]*)("self-update-agent")([\\s\\S.]*) *** Test Cases *** Wait for SUA alive - Wait Until Keyword Succeeds 5m 3s Verify SUA is alive ${broker.uri} ${broker.port} ${topic_currentstate} ${get_state_filename} ${sua_alive_regex} + Wait Until Keyword Succeeds 5m 3s Verify SUA is alive ${broker.uri} ${broker.port} ${topic_pub_currentstate} ${topic_sub_currentstate} ${get_state_filename} ${sua_alive_regex} Self Update Test [Documentation] Install update bundle Log To Console \nGet Version and Start Update... - ${expected_version} = Trigger to start update ${broker.uri} ${broker.port} ${topic_pub} ${start_update_filename} - Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${identified_success_regex} 20 - # Download + ${expected_version}= Trigger to start update ${broker.uri} ${broker.port} ${topic_pub} ${topic_sub} ${start_update_filename} ${identified_success_regex} + Log To Console Download... - Execute SUA command ${broker.uri} ${broker.port} ${topic_pub_commands} ${download_filename} + Execute SUA command ${broker.uri} ${broker.port} ${topic_pub_command} ${download_filename} Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${download_success_regex} 120 - # Update + Log To Console Update... - Execute SUA command ${broker.uri} ${broker.port} ${topic_pub_commands} ${update_filename} + Execute SUA command ${broker.uri} ${broker.port} ${topic_pub_command} ${update_filename} Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${update_success_regex} 120 - # Activate + Log To Console Activate... - Execute SUA command ${broker.uri} ${broker.port} ${topic_pub_commands} ${activate_filename} + Execute SUA command ${broker.uri} ${broker.port} ${topic_pub_command} ${activate_filename} Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${activation_success_regex} 5 - # Cleanup + Log To Console Cleanup... - Execute SUA command ${broker.uri} ${broker.port} ${topic_pub_commands} ${cleanup_filename} + Execute SUA command ${broker.uri} ${broker.port} ${topic_pub_command} ${cleanup_filename} Connect and Subscribe to Listen ${broker.uri} ${broker.port} ${topic_sub} ${cleanup_success_regex} 5 - # Finalize + Log To console Finalize ${result}= Leda Execute OK echo VERSION_ID=${expected_version} > /etc/os-release ${result_status}= Leda Execute OK rauc status --detailed --output-format=json diff --git a/resources/docker-snapshot/dockerfiles/leda-tests/leda_keywords.resource b/resources/docker-snapshot/dockerfiles/leda-tests/leda_keywords.resource index 6af58f6..5a961f3 100644 --- a/resources/docker-snapshot/dockerfiles/leda-tests/leda_keywords.resource +++ b/resources/docker-snapshot/dockerfiles/leda-tests/leda_keywords.resource @@ -28,15 +28,21 @@ ${leda.sshport} 2222 *** Keywords *** Verify SUA is alive - [Arguments] ${broker.uri} ${broker.port} ${topic_pub} ${get_current_state_filename} ${payload_regex} - ${message}= Get File ${get_current_state_filename} + [Arguments] ${broker.uri} ${broker.port} ${topic_pub} ${topic_sub} ${filename} ${payload_regex} + ${message}= Get File ${filename} Connect ${broker.uri} ${broker.port} Publish Single topic=${topic_pub} payload=${message} hostname=${broker.uri} port=${broker.port} Log ${payload_regex} - Subscribe And Validate selfupdate/currentstate qos=1 payload=${payload_regex} timeout=10 + Subscribe And Validate ${topic_sub} qos=1 payload=${payload_regex} timeout=10 + +Publish until met + [Arguments] ${broker.uri} ${broker.port} ${topic_pub} ${topic_sub} ${message} ${payload_regex} + Connect ${broker.uri} ${broker.port} + Publish Single topic=${topic_pub} payload=${message} hostname=${broker.uri} port=${broker.port} + Subscribe And Validate ${topic_sub} qos=1 payload=${payload_regex} timeout=10 Trigger to start update - [Arguments] ${broker.uri} ${broker.port} ${topic_pub} ${start_update_filename} + [Arguments] ${broker.uri} ${broker.port} ${topic_pub} ${topic_sub} ${start_update_filename} ${payload_regex} ${version_id}= Leda Execute OK cat /etc/os-release | grep ^VERSION_ID= | cut -c12- ${template}= Get File ${start_update_filename} # Replace ${VERSION_ID} dynamically with the actual version on the device for easier testing @@ -44,7 +50,7 @@ Trigger to start update # Workaround for testing purposes - override current os-release version ${fakeversion}= Generate Random String 8 ${result}= Leda Execute OK echo VERSION_ID=${fakeversion} > /etc/os-release - Publish Single topic=${topic_pub} payload=${message} hostname=${broker.uri} port=${broker.port} + Wait Until Keyword Succeeds 3m 3s Publish until met ${broker.uri} ${broker.port} ${topic_pub} ${topic_sub} ${message} ${payload_regex} RETURN ${version_id.stdout} Execute SUA command From 19dbcd1fccbb04125c50b2f6f8ee3cadac65e9b6 Mon Sep 17 00:00:00 2001 From: Stoyan Lachev Date: Mon, 3 Jul 2023 09:07:37 +0000 Subject: [PATCH 4/4] Test timeot 10 minutes --- .../dockerfiles/leda-tests/30__self_update.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot b/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot index 7b04277..9a60bd8 100644 --- a/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot +++ b/resources/docker-snapshot/dockerfiles/leda-tests/30__self_update.robot @@ -19,7 +19,7 @@ Library OperatingSystem Library Process Library JSONLibrary -Test Timeout 5 minutes +Test Timeout 10 minutes *** Variables *** ${leda.target} local