From 3659abc62aae8f72cba50b23ae27b323ae4080f3 Mon Sep 17 00:00:00 2001 From: danfengliu Date: Wed, 14 Oct 2020 08:36:47 +0000 Subject: [PATCH] Migrate gitlab replication test to nightly Add 2 gitlab pull/push replication test scripts in replication pipeline. Signed-off-by: danfengliu --- tests/apitests/python/library/system.py | 2 +- .../resources/Harbor-Pages/Replication.robot | 79 +++++++------------ tests/resources/Harbor-Pages/Verify.robot | 2 +- tests/resources/TestCaseBody.robot | 10 +-- tests/resources/Util.robot | 6 +- .../Group1-Nightly/Replication.robot | 10 +-- 6 files changed, 44 insertions(+), 65 deletions(-) diff --git a/tests/apitests/python/library/system.py b/tests/apitests/python/library/system.py index 91398a186..73001f6b4 100644 --- a/tests/apitests/python/library/system.py +++ b/tests/apitests/python/library/system.py @@ -128,7 +128,7 @@ class System(base.Base): break stats = client.scans_all_metrics_get() print("Scan all status:", stats) - if stats.ongoing: + if stats.ongoing is False: return raise Exception("Error: Scan all job is timeout.") diff --git a/tests/resources/Harbor-Pages/Replication.robot b/tests/resources/Harbor-Pages/Replication.robot index 327d0f985..d857f30c1 100644 --- a/tests/resources/Harbor-Pages/Replication.robot +++ b/tests/resources/Harbor-Pages/Replication.robot @@ -20,11 +20,15 @@ Resource ../../resources/Util.robot *** Keywords *** Filter Replication Rule - [Arguments] ${ruleName} + [Arguments] ${ruleName} ${exist}=${true} ${rule_name_element}= Set Variable xpath=//clr-dg-cell[contains(.,'${ruleName}')] Retry Element Click ${filter_rules_btn} + Retry Clear Element Text ${filter_rules_input} Retry Text Input ${filter_rules_input} ${ruleName} - Retry Wait Until Page Contains Element ${rule_name_element} + Run Keyword If ${exist}==${true} Retry Wait Until Page Contains Element ${rule_name_element} + ... ELSE Retry Wait Element xpath=//clr-dg-placeholder[contains(.,\"We couldn\'t find any replication rules!\")] + + Filter Registry [Arguments] ${registry_name} @@ -152,19 +156,6 @@ Rename Rule Retry Text Input ${rule_name} ${newname} Retry Element Click ${rule_save_button} -Delete Rule - [Arguments] ${rule} - Retry Element Click ${rule_filter_search} - Retry Text Input ${rule_filter_input} ${rule} - Retry Element Click //clr-dg-row[contains(.,'${rule}')]//label - Retry Element Click ${replication_rule_action} - Retry Element Click ${replication_rule_action_bar_delete} - Retry Wait Until Page Contains Element ${dialog_delete} - #change from click to mouse down and up - Mouse Down ${dialog_delete} - Mouse Up ${dialog_delete} - Sleep 2 - Select Rule [Arguments] ${rule} Retry Double Keywords When Error Retry Element Click //clr-dg-row[contains(.,'${rule}')]/div/div[1]/div Retry Wait Element ${replication_rule_exec_id} @@ -184,40 +175,35 @@ Find Registry And Click Edit Button Retry Select Object ${name} Retry Element Click ${registry_edit_btn} -Find Rule And Click Edit Button - [Arguments] ${name} - Filter Object ${name} - Retry Select Object ${name} +Switch To Replication Manage Page + Switch To Registries + Switch To Replication Manage + +Click Edit Button Retry Element Click ${replication_rule_action} Retry Element Click ${replication_rule_action_bar_edit} -Find Rule And Click Delete Button - [Arguments] ${name} - Filter Object ${name} - Retry Select Object ${name} +Click Delete Button Retry Element Click ${replication_rule_action} Retry Element Click ${replication_rule_action_bar_delete} -Switch To Replication Manage Page +Edit Replication Rule [Arguments] ${name} - Switch To Registries - Switch To Replication Manage + Switch To Replication Manage Page + Filter Replication Rule ${name} + Select Rule ${name} + Click Edit Button + Retry Wait Until Page Contains Edit Replication Rule -Edit Replication Rule By Name - [Arguments] ${name} - Retry Double Keywords When Error Switch To Replication Manage Page "NULL" Find Rule And Click Edit Button ${name} - -Delete Replication Rule By Name - [Arguments] ${name} - Switch To Registries - Switch To Replication Manage - Find Rule And Click Delete Button ${name} - -Ensure Delete Replication Rule By Name - [Arguments] ${name} - Delete Replication Rule By Name ${name} - Retry Double Keywords When Error Retry Element Click ${delete_confirm_btn} Retry Wait Until Page Not Contains Element ${delete_confirm_btn} - Retry Wait Element xpath=//clr-dg-placeholder[contains(.,\"We couldn\'t find any replication rules!\")] +Delete Replication Rule + [Arguments] ${name} + Switch To Replication Manage Page + Filter Replication Rule ${name} + Select Rule ${name} + Click Delete Button + Wait Until Page Contains Element ${dialog_delete} + Retry Double Keywords When Error Retry Element Click ${dialog_delete} Retry Wait Until Page Not Contains Element ${dialog_delete} + Filter Replication Rule ${name} exist=${false} Rename Endpoint [arguments] ${name} ${newname} @@ -242,17 +228,6 @@ Select Rule And Replicate Retry Element Click ${replication_rule_exec_id} Retry Double Keywords When Error Retry Element Click xpath=${dialog_replicate} Retry Wait Until Page Not Contains Element xpath=${dialog_replicate} -Delete Replication Rule - [Arguments] ${name} - Retry Element Click ${endpoint_filter_search} - Retry Text Input ${endpoint_filter_input} ${name} - #click checkbox before target endpoint - Retry Element Click //clr-dg-row[contains(.,'${name}')]//label - Retry Element Click ${replication_rule_action} - Retry Element Click ${replication_rule_action_bar_delete} - Wait Until Page Contains Element ${dialog_delete} - Retry Element Click ${dialog_delete} - Image Should Be Replicated To Project [Arguments] ${project} ${image} ${period}=60 ${times}=3 FOR ${n} IN RANGE 0 ${times} diff --git a/tests/resources/Harbor-Pages/Verify.robot b/tests/resources/Harbor-Pages/Verify.robot index e7882be6b..d11b3d7dc 100644 --- a/tests/resources/Harbor-Pages/Verify.robot +++ b/tests/resources/Harbor-Pages/Verify.robot @@ -336,7 +336,7 @@ Verify Replicationrule Init Chrome Driver Log To Console -----replicationrule-----"${replicationrule}"------------ Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} - Edit Replication Rule By Name ${replicationrule} + Edit Replication Rule ${replicationrule} @{is_src_registry}= Get Value From Json ${json} $.replicationrule[?(@.rulename=${replicationrule})].is_src_registry @{trigger_type}= Get Value From Json ${json} $.replicationrule[?(@.rulename=${replicationrule})].trigger_type @{name_filters}= Get Value From Json ${json} $.replicationrule[?(@.rulename=${replicationrule})].name_filters diff --git a/tests/resources/TestCaseBody.robot b/tests/resources/TestCaseBody.robot index 8087c86cd..4da6b5ac6 100644 --- a/tests/resources/TestCaseBody.robot +++ b/tests/resources/TestCaseBody.robot @@ -332,11 +332,13 @@ Body Of Replication Of Push Images to Registry Triggered By Event Push Special Image To Project project${d} ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} ${image} tags=@{tags} size=12 Filter Replication Rule rule${d} Select Rule rule${d} - Run Keyword If '${provider}'=='docker-hub' Docker Image Can Be Pulled ${dest_namespace}/${image}:${tag1} times=3 + ${endpoint_body}= Fetch From Right ${endpoint} // + ${dest_namespace}= Set Variable If '${provider}'=='gitlab' ${endpoint_body}/${dest_namespace} ${dest_namespace} + Run Keyword If '${provider}'=='docker-hub' or '${provider}'=='gitlab' Docker Image Can Be Pulled ${dest_namespace}/${image}:${tag1} times=3 Executions Result Count Should Be Succeeded event_based 1 Go Into Project project${d} Delete Repo project${d} - Run Keyword If '${provider}'=='docker-hub' Docker Image Can Not Be Pulled ${dest_namespace}/${image}:${tag1} + Run Keyword If '${provider}'=='docker-hub' or '${provider}'=='gitlab' Docker Image Can Not Be Pulled ${dest_namespace}/${image}:${tag1} Switch To Replication Manage Filter Replication Rule rule${d} Select Rule rule${d} @@ -354,10 +356,8 @@ Body Of Replication Of Pull Images from Registry To Self Switch To Replication Manage Create A Rule With Existing Endpoint rule${d} pull ${project_name} image e${d} project${d} Select Rule And Replicate rule${d} - #In docker-hub, under repository danfengliu, there're only 2 images: centos,mariadb. - Image Should Be Replicated To Project project${d} centos - Image Should Be Replicated To Project project${d} mariadb FOR ${item} IN @{target_images} Log To Console Check image replicated to Project project${d} ${item} Image Should Be Replicated To Project project${d} ${item} times=2 + END Close Browser \ No newline at end of file diff --git a/tests/resources/Util.robot b/tests/resources/Util.robot index 06f5f972c..61ac44723 100644 --- a/tests/resources/Util.robot +++ b/tests/resources/Util.robot @@ -88,7 +88,7 @@ Wait Until Element Is Visible And Enabled Retry Action Keyword [Arguments] ${keyword} @{param} - Retry Keyword N Times When Error 8 ${keyword} @{param} + Retry Keyword N Times When Error 3 ${keyword} @{param} Retry Wait Element [Arguments] ${element_xpath} @@ -149,6 +149,10 @@ Retry Wait Until Page Contains [Arguments] ${element_xpath} @{param} Create List ${element_xpath} Retry Action Keyword Wait Until Page Contains @{param} +Retry Wait Until Page Does Not Contains + [Arguments] ${element_xpath} + @{param} Create List ${element_xpath} + Retry Action Keyword Wait Until Page Does Not Contain @{param} Retry Wait Until Page Contains Element [Arguments] ${element_xpath} diff --git a/tests/robot-cases/Group1-Nightly/Replication.robot b/tests/robot-cases/Group1-Nightly/Replication.robot index 51d1b6601..5aa9ea63e 100644 --- a/tests/robot-cases/Group1-Nightly/Replication.robot +++ b/tests/robot-cases/Group1-Nightly/Replication.robot @@ -110,7 +110,7 @@ Test Case - Replication Rule Edit Create A New Endpoint harbor ${endpoint2} https://${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} Y Switch To Replication Manage Create A Rule With Existing Endpoint ${rule_name_old} pull nightly/a* image ${endpoint1} project${d} - Edit Replication Rule By Name ${rule_name_old} + Edit Replication Rule ${rule_name_old} # Change rule-name, source-registry, filter, trigger-mode for edition verification Clear Field Of Characters ${rule_name_input} 30 Retry Text Input ${rule_name_input} ${rule_name_new} @@ -123,7 +123,7 @@ Test Case - Replication Rule Edit Retry Text Input ${targetCron_id} ${cron_str} Retry Double Keywords When Error Retry Element Click ${rule_save_button} Retry Wait Until Page Not Contains Element ${rule_save_button} # verify all items were changed as expected - Edit Replication Rule By Name ${rule_name_new} + Edit Replication Rule ${rule_name_new} Retry Textfield Value Should Be ${rule_name_input} ${rule_name_new} Retry List Selection Should Be ${src_registry_dropdown_list} ${endpoint2}-https://${ip} Retry Textfield Value Should Be ${filter_name_id} project${d} @@ -132,7 +132,7 @@ Test Case - Replication Rule Edit Retry List Selection Should Be ${rule_trigger_select} ${mode} Retry Textfield Value Should Be ${targetCron_id} ${cron_str} Retry Element Click ${rule_cancel_btn} - Ensure Delete Replication Rule By Name ${rule_name_new} + Delete Replication Rule ${rule_name_new} Close Browser Test Case - Replication Rule Delete @@ -145,7 +145,7 @@ Test Case - Replication Rule Delete Create A New Endpoint harbor ${endpoint1} https://${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} Y Switch To Replication Manage Create A Rule With Existing Endpoint ${rule_name} pull ${DOCKER_USER}/* image ${endpoint1} project${d} - Ensure Delete Replication Rule By Name ${rule_name} + Delete Replication Rule ${rule_name} Close Browser Test Case - Replication Of Pull Images from DockerHub To Self @@ -278,4 +278,4 @@ Test Case - Replication Of Pull Images from Gitlab To Self Body Of Replication Of Pull Images from Registry To Self gitlab https://registry.gitlab.com ${gitlab_id} ${gitlab_key} dannylunsa/test_replication/{photon,alpine} @{target_images} Test Case - Replication Of Push Images to Gitlab Triggered By Event - Body Of Replication Of Push Images to Registry Triggered By Event gitlab https://registry.gitlab.com ${gitlab_id} ${gitlab_key} bitsf/testci/replication-ci \ No newline at end of file + Body Of Replication Of Push Images to Registry Triggered By Event gitlab https://registry.gitlab.com ${gitlab_id} ${gitlab_key} dannylunsa/test_replication