diff --git a/.github/workflows/ansible-test-plugins.yml b/.github/workflows/ansible-test-plugins.yml index d815335..7139c4b 100644 --- a/.github/workflows/ansible-test-plugins.yml +++ b/.github/workflows/ansible-test-plugins.yml @@ -40,7 +40,30 @@ jobs: strategy: fail-fast: false matrix: - include: + ansible: + - stable-2.12 + - stable-2.13 + - stable-2.14 + - devel + db_engine_name: + - mysql + - mariadb + db_engine_version: + - 5.7.40 + - 8.0.31 + - 10.4.27 + - 10.5.18 + - 10.6.11 + python: + - '3.8' + - '3.9' + - '3.10' + connector_name: + - pymysql + - mysqlclient + connector_version: + - 0.7.11 + - 0.9.3 # Before we can activate test with pymysql 1.0.2 we should debug the # following plugins: # @@ -49,279 +72,121 @@ jobs: # # mysql_replication: # test "Assert that startreplica is not changed" failed + # - 1.0.2 + - 2.0.1 + - 2.0.3 + - 2.1.1 + exclude: + - db_engine_name: mysql + db_engine_version: 10.4.27 - # ================================================================== - # mysql-client 5.7 + Python 3.8 - # ================================================================== - - ansible: stable-2.12 - db_engine_name: mysql + - db_engine_name: mysql + db_engine_version: 10.5.18 + + - db_engine_name: mysql + db_engine_version: 10.6.11 + + - db_engine_name: mariadb db_engine_version: 5.7.40 - python: '3.8' - connector_name: pymysql + + - db_engine_name: mariadb + db_engine_version: 8.0.31 + + - connector_name: pymysql + connector_version: 2.0.1 + + - connector_name: pymysql + connector_version: 2.0.3 + + - connector_name: pymysql + connector_version: 2.1.1 + + - connector_name: mysqlclient connector_version: 0.7.11 - - ansible: stable-2.12 - db_engine_name: mysql - db_engine_version: 5.7.40 - python: '3.8' - connector_name: pymysql + + - connector_name: mysqlclient connector_version: 0.9.3 - - ansible: stable-2.12 - db_engine_name: mysql - db_engine_version: 5.7.40 + + - connector_name: mysqlclient + connector_version: 1.0.2 + + - db_engine_version: 5.7.40 + python: '3.9' + + - db_engine_version: 5.7.40 + python: '3.10' + + - db_engine_version: 5.7.40 + ansible: stable-2.13 + + - db_engine_version: 5.7.40 + ansible: stable-2.14 + + - db_engine_version: 5.7.40 + ansible: devel + + - db_engine_version: 8.0.31 python: '3.8' - connector_name: mysqlclient + + - db_engine_version: 8.0.31 + python: '3.8' + + - db_engine_version: 10.4.27 + python: '3.10' + + - db_engine_version: 10.4.27 + ansible: devel + + - db_engine_version: 10.6.11 + python: '3.8' + + - db_engine_version: 10.6.11 + python: '3.9' + + - python: '3.8' + connector_version: 2.0.3 + + - python: '3.8' + connector_version: 2.1.1 + + - python: '3.9' + connector_version: 0.7.11 + + - python: '3.9' connector_version: 2.0.1 + - python: '3.9' + connector_version: 2.1.1 - # ================================================================== - # mysql-client 8 + Python 3.8 - # ================================================================== - - ansible: stable-2.12 - db_engine_name: mysql - db_engine_version: 8.0.31 - python: '3.8' - connector_name: pymysql + - python: '3.10' + connector_version: 0.7.11 + + - python: '3.10' connector_version: 0.9.3 - - ansible: stable-2.12 - db_engine_name: mysql - db_engine_version: 8.0.31 - python: '3.8' - connector_name: mysqlclient + + - python: '3.10' connector_version: 2.0.1 - - # ================================================================== - # mysql-client 8 + Python 3.9 - # ================================================================== - - ansible: stable-2.13 - db_engine_name: mysql - db_engine_version: 8.0.31 - python: '3.9' - connector_name: pymysql - connector_version: 0.9.3 - - ansible: stable-2.13 - db_engine_name: mysql - db_engine_version: 8.0.31 - python: '3.9' - connector_name: mysqlclient - connector_version: 2.0.3 - - - ansible: stable-2.14 - db_engine_name: mysql - db_engine_version: 8.0.31 - python: '3.9' - connector_name: pymysql - connector_version: 0.9.3 - - ansible: stable-2.14 - db_engine_name: mysql - db_engine_version: 8.0.31 - python: '3.9' - connector_name: mysqlclient - connector_version: 2.0.3 - - - # ================================================================== - # mysql-client 8 + Python 3.10 - # ================================================================== - # - ansible: stable-2.13 - # db_engine_name: mysql - # db_engine_version: 8.0.31 - # python: '3.10' - # connector_name: pymysql - # connector_version: 1.0.2 - - ansible: stable-2.13 - db_engine_name: mysql - db_engine_version: 8.0.31 - python: '3.10' - connector_name: mysqlclient + - python: '3.10' connector_version: 2.1.1 - # - ansible: stable-2.14 - # db_engine_name: mysql - # db_engine_version: 8.0.31 - # python: '3.10' - # connector_name: pymysql - # connector_version: 1.0.2 - - ansible: stable-2.14 - db_engine_name: mysql - db_engine_version: 8.0.31 - python: '3.10' - connector_name: mysqlclient - connector_version: 2.1.1 + - python: '3.8' + ansible: stable-2.13 - # - ansible: devel - # db_engine_name: mysql - # db_engine_version: 8.0.31 - # python: '3.10' - # connector_name: pymysql - # connector_version: 1.0.2 - - ansible: devel - db_engine_name: mysql - db_engine_version: 8.0.31 - python: '3.10' - connector_name: mysqlclient - connector_version: 2.1.1 + - python: '3.8' + ansible: stable-2.14 - # ================================================================== - # mariadb-client 10.3 + Python 3.8 - # ================================================================== - - ansible: stable-2.12 - db_engine_name: mariadb - db_engine_version: 10.4.27 - python: '3.8' - connector_name: pymysql - connector_version: 0.9.3 - - ansible: stable-2.12 - db_engine_name: mariadb - db_engine_version: 10.4.27 - python: '3.8' - connector_name: mysqlclient - connector_version: 2.0.1 - - ansible: stable-2.12 - db_engine_name: mariadb - db_engine_version: 10.5.18 - python: '3.8' - connector_name: pymysql - connector_version: 0.9.3 - - ansible: stable-2.12 - db_engine_name: mariadb - db_engine_version: 10.5.18 - python: '3.8' - connector_name: mysqlclient - connector_version: 2.0.1 + - python: '3.8' + ansible: devel + - python: '3.9' + ansible: stable-2.12 - # ================================================================== - # mariadb-client 10.3 + Python 3.9 - # ================================================================== - - ansible: stable-2.13 - db_engine_name: mariadb - db_engine_version: 10.4.27 - python: '3.9' - connector_name: pymysql - connector_version: 0.9.3 - - ansible: stable-2.13 - db_engine_name: mariadb - db_engine_version: 10.4.27 - python: '3.9' - connector_name: mysqlclient - connector_version: 2.0.3 - - ansible: stable-2.13 - db_engine_name: mariadb - db_engine_version: 10.5.18 - python: '3.9' - connector_name: pymysql - connector_version: 0.9.3 - - ansible: stable-2.13 - db_engine_name: mariadb - db_engine_version: 10.5.18 - python: '3.9' - connector_name: mysqlclient - connector_version: 2.0.3 + - python: '3.9' + ansible: devel - - ansible: stable-2.14 - db_engine_name: mariadb - db_engine_version: 10.4.27 - python: '3.9' - connector_name: pymysql - connector_version: 0.9.3 - - ansible: stable-2.14 - db_engine_name: mariadb - db_engine_version: 10.4.27 - python: '3.9' - connector_name: mysqlclient - connector_version: 2.0.3 - - ansible: stable-2.14 - db_engine_name: mariadb - db_engine_version: 10.5.18 - python: '3.9' - connector_name: pymysql - connector_version: 0.9.3 - - ansible: stable-2.14 - db_engine_name: mariadb - db_engine_version: 10.5.18 - python: '3.9' - connector_name: mysqlclient - connector_version: 2.0.3 - - - # ================================================================== - # mariadb-client 10.6 + Python 3.10 - # ================================================================== - # - ansible: stable-2.13 - # db_engine_name: mariadb - # db_engine_version: 10.5.18 - # python: '3.10' - # connector_name: pymysql - # connector_version: 1.0.2 - - ansible: stable-2.13 - db_engine_name: mariadb - db_engine_version: 10.5.18 - python: '3.10' - connector_name: mysqlclient - connector_version: 2.1.1 - # - ansible: stable-2.13 - # db_engine_name: mariadb - # db_engine_version: 10.6.11 - # python: '3.10' - # connector_name: pymysql - # connector_version: 1.0.2 - - ansible: stable-2.13 - db_engine_name: mariadb - db_engine_version: 10.6.11 - python: '3.10' - connector_name: mysqlclient - connector_version: 2.1.1 - - # - ansible: stable-2.14 - # db_engine_name: mariadb - # db_engine_version: 10.5.18 - # python: '3.10' - # connector_name: pymysql - # connector_version: 1.0.2 - - ansible: stable-2.14 - db_engine_name: mariadb - db_engine_version: 10.5.18 - python: '3.10' - connector_name: mysqlclient - connector_version: 2.1.1 - # - ansible: stable-2.14 - # db_engine_name: mariadb - # db_engine_version: 10.6.11 - # python: '3.10' - # connector_name: pymysql - # connector_version: 1.0.2 - - ansible: stable-2.14 - db_engine_name: mariadb - db_engine_version: 10.6.11 - python: '3.10' - connector_name: mysqlclient - connector_version: 2.1.1 - - # - ansible: devel - # db_engine_name: mariadb - # db_engine_version: 10.5.18 - # python: '3.10' - # connector_name: pymysql - # connector_version: 1.0.2 - - ansible: devel - db_engine_name: mariadb - db_engine_version: 10.5.18 - python: '3.10' - connector_name: mysqlclient - connector_version: 2.1.1 - # - ansible: devel - # db_engine_name: mariadb - # db_engine_version: 10.6.11 - # python: '3.10' - # connector_name: pymysql - # connector_version: 1.0.2 - - ansible: devel - db_engine_name: mariadb - db_engine_version: 10.6.11 - python: '3.10' - connector_name: mysqlclient - connector_version: 2.1.1 + - python: '3.10' + ansible: stable-2.12 services: db_primary: diff --git a/run_all_tests.py b/run_all_tests.py index b7fde72..94cf799 100755 --- a/run_all_tests.py +++ b/run_all_tests.py @@ -28,47 +28,66 @@ def extract_matrix(workflow_yaml): return matrix -# def is_exclude(exclude_list, test_suite): -# test_is_excluded = False -# for excl in exclude_list: -# match = 0 +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[0]: -# match += 1 + if 'ansible' in excl: + if excl.get('ansible') == test_suite.get('ansible'): + match += 1 -# if 'db_engine_version' in excl: -# if excl.get('db_engine_version') == test_suite[1]: -# match += 1 + if 'db_engine_name' in excl: + if excl.get('db_engine_name') == test_suite.get('db_engine_name'): + match += 1 -# if 'python' in excl: -# if excl.get('python') == test_suite[2]: -# match += 1 + if 'db_engine_version' in excl: + if excl.get('db_engine_version') == test_suite.get('db_engine_version'): + match += 1 -# if 'connector' in excl: -# if excl.get('connector') == test_suite[3]: -# match += 1 + if 'python' in excl: + if excl.get('python') == test_suite.get('python'): + match += 1 -# if match > 1: -# test_is_excluded = True + if 'connector_name' in excl: + if excl.get('connector_name') == test_suite.get('connector_name'): + match += 1 -# return test_is_excluded + 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 in tests_matrix_yaml.get('db_engine_version'): - # for python in tests_matrix_yaml.get('python'): - # for connector in tests_matrix_yaml.get('connector'): - # if not is_exclude(exclude_list, (ansible, db_engine, python, connector)): - # matrix.append((ansible, db_engine, python, connector)) + 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 tests_matrix_yaml.get('include'): + for tests in matrix: a = tests.get('ansible') dn = tests.get('db_engine_name') dv = tests.get('db_engine_version')