harbor/tests/resources/Harbor-Pages/Job_Service_Dashboard.robot
Yang Jiao 0da12250ce
Add Job Service Dashboard Workers testcase (#18580)
Fix #17949

Signed-off-by: Yang Jiao <jiaoya@vmware.com>
2023-04-23 21:26:44 +08:00

209 lines
11 KiB
Plaintext

# Copyright Project Harbor Authors
#
# Licensed 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
*** Settings ***
Documentation This resource provides any keywords related to the Harbor private registry appliance
*** Keywords ***
Switch To Job Queues
Retry Double Keywords When Error Retry Element Click //clr-main-container//clr-vertical-nav-group//span[contains(.,'Job Service Dashboard')] Retry Wait Until Page Contains Element ${job_service_stop_btn}
Switch To Job Schedules
Retry Element Click //clr-main-container//clr-vertical-nav-group//span[contains(.,'Job Service Dashboard')]
Retry Double Keywords When Error Retry Button Click ${job_service_schedules_btn} Retry Wait Until Page Contains Vendor Type
Switch To Job Workers
Retry Element Click //clr-main-container//clr-vertical-nav-group//span[contains(.,'Job Service Dashboard')]
Retry Double Keywords When Error Retry Button Click ${job_service_workers_btn} Retry Wait Until Page Contains Worker Pools
Select Jobs
[Arguments] @{job_types}
FOR ${job_type} IN @{job_types}
Retry Double Keywords When Error Retry Element Click //clr-datagrid//clr-dg-row[contains(.,'${job_type}')]//div[contains(@class,'clr-checkbox-wrapper')] Retry Checkbox Should Be Selected //clr-datagrid//clr-dg-row[contains(.,'${job_type}')]//input
END
Stop Pending Jobs
[Arguments] @{job_types}
Select Jobs @{job_types}
Retry Double Keywords When Error Retry Button Click ${job_service_stop_btn} Retry Button Click ${confirm_btn}
Retry Wait Until Page Contains Stopped jobs successfully
Stop All Pending Jobs
Retry Double Keywords When Error Retry Button Click ${job_service_stop_all_btn} Retry Button Click ${confirm_btn}
Retry Wait Until Page Contains Stopped all the job queues successfully
Pause Jobs
[Arguments] @{job_types}
Select Jobs @{job_types}
Retry Double Keywords When Error Retry Button Click ${job_service_pause_btn} Retry Button Click ${confirm_btn}
Retry Wait Until Page Contains Paused jobs successfully
Check Jobs Paused Yes @{job_types}
Resume Jobs
[Arguments] @{job_types}
Select Jobs @{job_types}
Retry Double Keywords When Error Retry Button Click ${job_service_resume_btn} Retry Button Click ${confirm_btn}
Retry Wait Until Page Contains Resumed jobs successfully
Check Jobs Paused No @{job_types}
Check Jobs Paused
[Arguments] ${paused}=No @{job_types}
FOR ${job_type} IN @{job_types}
Retry Double Keywords When Error Retry Element Click ${job_service_refresh_btn} Retry Wait Element Visible //clr-datagrid//clr-dg-row[contains(.,'${job_type}')]//clr-dg-cell[4][contains(.,'${paused}')]
Select Jobs ${job_type}
Run Keyword If '${paused}' == 'No' Run Keywords
... Retry Wait Element Should Be Disabled ${job_service_resume_btn}
... AND Retry Wait Element ${job_service_pause_btn}
... ELSE Run Keywords
... Retry Wait Element Should Be Disabled ${job_service_pause_btn}
... AND Retry Wait Element ${job_service_resume_btn}
END
Check Jobs Pending Count
[Arguments] &{jobs_type_pending_count}
FOR ${job_type} IN @{jobs_type_pending_count.keys()}
Retry Wait Element Visible //clr-datagrid//clr-dg-row[contains(.,'${job_type}')]//clr-dg-cell[2][contains(.,'${jobs_type_pending_count['${job_type}']}')]
END
Check Pending Job Card
[Arguments] &{jobs_type_pending_count}
${total}= Set Variable ${jobs_type_pending_count['Total']}
Remove From Dictionary ${jobs_type_pending_count} Total
${total_pending_count}= Set Variable 0
${index}= Set Variable 1
FOR ${job_type} IN @{jobs_type_pending_count.keys()}
Run Keyword If '${total}' != '0' Retry Wait Until Page Contains Element //app-pending-job-card//div[contains(@class,'clr-row ng-star-inserted')][${index}]//div[1][contains(.,'${job_type}')]
Retry Wait Until Page Contains Element //app-pending-job-card//div[contains(@class,'clr-row ng-star-inserted')][${index}]//div[2][contains(.,'${jobs_type_pending_count['${job_type}']}')]
${index}= Evaluate ${index} + 1
${total_pending_count}= Evaluate ${total_pending_count} + ${jobs_type_pending_count['${job_type}']}
END
Retry Wait Element Visible //app-pending-job-card//div[contains(text(),'Total: ${total_pending_count}')]
Check Jobs Latency
[Arguments] &{jobs_type_is_zore}
FOR ${job_type} IN @{jobs_type_is_zore.keys()}
${latency_xpath}= Set Variable //clr-datagrid//clr-dg-row[contains(.,'${job_type}')]//clr-dg-cell[3]//span[text()='0']
Run Keyword If ${jobs_type_is_zore['${job_type}']}==${true} Retry Wait Until Page Contains Element ${latency_xpath}
... ELSE Retry Wait Until Page Not Contains Element ${latency_xpath}
END
Check Button Status
# Pause is Yes
Select Jobs GARBAGE_COLLECTION
Retry Wait Element ${job_service_resume_btn}
Retry Wait Element Should Be Disabled ${job_service_pause_btn}
# Pause is Yes
Select Jobs PURGE_AUDIT_LOG
Retry Wait Element ${job_service_resume_btn}
Retry Wait Element Should Be Disabled ${job_service_pause_btn}
# Pause is No
Select Jobs SCAN_DATA_EXPORT
Retry Wait Element Should Be Disabled ${job_service_resume_btn}
Retry Wait Element Should Be Disabled ${job_service_pause_btn}
# Refresh
Retry Element Click ${job_service_refresh_btn}
# Pause is No
Select Jobs REPLICATION
Retry Wait Element ${job_service_pause_btn}
Retry Wait Element Should Be Disabled ${job_service_resume_btn}
# Pause is No
Select Jobs P2P_PREHEAT
Retry Wait Element ${job_service_pause_btn}
Retry Wait Element Should Be Disabled ${job_service_resume_btn}
# Pause is Yes
Select Jobs IMAGE_SCAN
Retry Wait Element Should Be Disabled ${job_service_resume_btn}
Retry Wait Element Should Be Disabled ${job_service_pause_btn}
Check Schedule List
[Arguments] ${schedule_cron}
# Check retention policy schedule
Retry Wait Until Page Contains Element //clr-dg-row[.//clr-dg-cell[text()='RETENTION'] and .//clr-dg-cell[text()='${schedule_cron}']]
# Check preheat policy schedule
Retry Wait Until Page Contains Element //clr-dg-row[.//clr-dg-cell[text()='P2P_PREHEAT'] and .//clr-dg-cell[text()='${schedule_cron}']]
# Check replication policy schedule
Retry Wait Until Page Contains Element //clr-dg-row[.//clr-dg-cell[text()='REPLICATION'] and .//clr-dg-cell[text()='${schedule_cron}']]
# Check scan all schedule
Retry Wait Until Page Contains Element //clr-dg-row[.//clr-dg-cell[text()='SCAN_ALL'] and .//clr-dg-cell[text()='${schedule_cron}']]
# Check GC schedule
Retry Wait Until Page Contains Element //clr-dg-row[.//clr-dg-cell[text()='GARBAGE_COLLECTION'] and .//clr-dg-cell[text()='${schedule_cron}']]
# Check log rotation schedule
Retry Wait Until Page Contains Element //clr-dg-row[.//clr-dg-cell[text()='PURGE_AUDIT_LOG'] and .//clr-dg-cell[text()='${schedule_cron}']]
# Check execution sweep schedule
Retry Wait Until Page Contains Element //clr-dg-row[.//clr-dg-cell[text()='EXECUTION_SWEEP'] and .//clr-dg-cell[text()='0 0 * * * *']]
# Check system artifact cleanup schedule
Retry Wait Until Page Contains Element //clr-dg-row[.//clr-dg-cell[text()='SYSTEM_ARTIFACT_CLEANUP'] and .//clr-dg-cell[text()='0 0 0 * * *']]
Pause All Schedules
Retry Double Keywords When Error Retry Button Click ${job_service_schedules_pause_all_btn} Retry Button Click ${confirm_btn}
Retry Wait Until Page Contains Paused all the schedules successfully
Retry Wait Until Page Contains Element //app-schedule-card//span[text()='Paused']
Resume All Schedules
Retry Double Keywords When Error Retry Button Click ${job_service_schedules_resume_all_btn} Retry Button Click ${confirm_btn}
Retry Wait Until Page Contains Resumed all the schedules successfully
Retry Wait Until Page Contains Element //app-schedule-card//span[text()='Running']
Check Schedules Status Is Pause
[Arguments] ${project_name} ${replication_rule_name} ${p2p_policy_name}
# Check that the retention policy schedule is Pause
Go Into Project ${project_name}
Switch To Tag Retention
Retry Wait Until Page Contains Element //span[text()='Schedule has been paused']
# Check that the preheat policy schedule is Pause
Switch To P2P Preheat
Retry Wait Until Page Contains Element //clr-dg-row[.//clr-dg-cell[text()='${p2p_policy_name}'] and .//clr-dg-cell[text()=' Scheduled(Paused) ']]
# Check that the replication policy schedule is Pause
Switch To Replication Manage
Retry Wait Until Page Contains Element //clr-dg-row[.//clr-dg-cell[text()='${replication_rule_name}'] and .//clr-dg-cell[text()=' Scheduled(Paused) ']]
# Check that the scan all schedule is Pause
Switch To Vulnerability Page
Retry Wait Until Page Contains Element //span[text()='Schedule to scan all has been paused']
# Check that the GC schedule is Pause
Switch To Garbage Collection
Retry Wait Until Page Contains Element //span[text()='Schedule to GC has been paused']
# Check that the log rotation schedule is Pause
Switch To Log Rotation
Retry Wait Until Page Contains Element //span[text()='Schedule to purge has been paused']
Check Schedules Status Is Not Pause
[Arguments] ${project_name} ${replication_rule_name} ${p2p_policy_name}
# Check that the retention policy schedule is not Pause
Go Into Project ${project_name}
Switch To Tag Retention
Retry Wait Until Page Not Contains Element //span[text()='Schedule has been paused']
# Check that the preheat policy schedule is not Pause
Switch To P2P Preheat
Retry Wait Until Page Not Contains Element //clr-dg-row[.//clr-dg-cell[text()='${p2p_policy_name}'] and .//clr-dg-cell[text()=' Scheduled(Paused) ']]
# Check that the replication policy schedule is not Pause
Switch To Replication Manage
Retry Wait Until Page Not Contains Element //clr-dg-row[.//clr-dg-cell[text()='${replication_rule_name}'] and .//clr-dg-cell[text()=' Scheduled(Paused) ']]
# Check that the scan all schedule is not Pause
Switch To Vulnerability Page
Retry Wait Until Page Not Contains Element //span[text()='Schedule to scan all has been paused']
# Check that the GC schedule is not Pause
Switch To Garbage Collection
Retry Wait Until Page Not Contains Element //span[text()='Schedule to GC has been paused']
# Check that the log rotation schedule is not Pause
Switch To Log Rotation
Retry Wait Until Page Not Contains Element //span[text()='Schedule to purge has been paused']
Check Worker Log
[Arguments] ${job_name} ${expected_log}
Retry Link Click //clr-datagrid[.//button[text()='Worker ID']]//clr-dg-row[.//clr-dg-cell[text()='${job_name}']]//a
Switch Window locator=NEW
Retry Wait Until Page Contains ${expected_log}
Switch Window locator=MAIN