Server IP : 85.214.239.14 / Your IP : 3.149.27.153 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/2/root/usr/lib/python3/dist-packages/ansible_collections/community/mysql/ |
Upload File : |
#!/usr/bin/env python import yaml import os github_workflow_file = '.github/workflows/ansible-test-plugins.yml' def read_github_workflow_file(): with open(github_workflow_file, 'r') as gh_file: try: return yaml.safe_load(gh_file) except yaml.YAMLError as exc: print(exc) def extract_value(target, dict_yaml): for key, value in dict_yaml.items(): if key == target: return value def extract_matrix(workflow_yaml): jobs = extract_value('jobs', workflow_yaml) integration = extract_value('integration', jobs) strategy = extract_value('strategy', integration) matrix = extract_value('matrix', strategy) return matrix def is_exclude(exclude_list, test_suite): test_is_excluded = False for excl in exclude_list: match = 0 if 'ansible' in excl: if excl.get('ansible') == test_suite.get('ansible'): match += 1 if 'db_engine_name' in excl: if excl.get('db_engine_name') == test_suite.get('db_engine_name'): match += 1 if 'db_engine_version' in excl: if excl.get('db_engine_version') == test_suite.get('db_engine_version'): match += 1 if 'python' in excl: if excl.get('python') == test_suite.get('python'): match += 1 if 'connector_name' in excl: if excl.get('connector_name') == test_suite.get('connector_name'): match += 1 if 'connector_version' in excl: if excl.get('connector_version') == test_suite.get('connector_version'): match += 1 if match > 1: test_is_excluded = True return test_is_excluded return test_is_excluded def main(): workflow_yaml = read_github_workflow_file() tests_matrix_yaml = extract_matrix(workflow_yaml) matrix = [] exclude_list = tests_matrix_yaml.get('exclude') for ansible in tests_matrix_yaml.get('ansible'): for db_engine_name in tests_matrix_yaml.get('db_engine_name'): for db_engine_version in tests_matrix_yaml.get('db_engine_version'): for python in tests_matrix_yaml.get('python'): for connector_name in tests_matrix_yaml.get('connector_name'): for connector_version in tests_matrix_yaml.get('connector_version'): test_suite = { 'ansible': ansible, 'db_engine_name': db_engine_name, 'db_engine_version': db_engine_version, 'python': python, 'connector_name': connector_name, 'connector_version': connector_version } if not is_exclude(exclude_list, test_suite): matrix.append(test_suite) for tests in matrix: a = tests.get('ansible') dn = tests.get('db_engine_name') dv = tests.get('db_engine_version') p = tests.get('python') cn = tests.get('connector_name') cv = tests.get('connector_version') make_cmd = ( f'make ' f'ansible="{a}" ' f'db_engine_name="{dn}" ' f'db_engine_version="{dv}" ' f'python="{p}" ' f'connector_name="{cn}" ' f'connector_version="{cv}" ' f'test-integration' ) print(f'Run tests for: Ansible: {a}, DB: {dn} {dv}, Python: {p}, Connector: {cn} {cv}') os.system(make_cmd) # TODO, allow for CTRL+C to break the loop more easily # TODO, store the failures from this iteration # TODO, display a summary of failures from every iterations if __name__ == '__main__': main()