From 29b6ad89a13866c5f43d88bc7a3ef8c0fcf2120b Mon Sep 17 00:00:00 2001 From: Laurent Indermuehle Date: Fri, 15 Sep 2023 15:31:29 +0200 Subject: [PATCH] add back all the tests steps disabled during development --- Makefile | 89 +++-- .../tasks/filter_users_privs.yml | 2 - .../targets/test_mysql_info/tasks/main.yml | 342 +++++++++--------- 3 files changed, 212 insertions(+), 221 deletions(-) diff --git a/Makefile b/Makefile index 80872c7..42e56e3 100644 --- a/Makefile +++ b/Makefile @@ -50,63 +50,56 @@ test-integration: --health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \ docker.io/library/$(db_engine_name):$(db_engine_version) \ mysqld -# podman run \ -# --detach \ -# --replace \ -# --name replica1 \ -# --env MARIADB_ROOT_PASSWORD=msandbox \ -# --env MYSQL_ROOT_PASSWORD=msandbox \ -# --network podman \ -# --publish 3308:3306 \ -# --health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \ -# docker.io/library/$(db_engine_name):$(db_engine_version) \ -# mysqld -# podman run \ -# --detach \ -# --replace \ -# --name replica2 \ -# --env MARIADB_ROOT_PASSWORD=msandbox \ -# --env MYSQL_ROOT_PASSWORD=msandbox \ -# --network podman \ -# --publish 3309:3306 \ -# --health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \ -# docker.io/library/$(db_engine_name):$(db_engine_version) \ -# mysqld -# # Setup replication and restart containers -# podman exec primary bash -c 'echo -e [mysqld]\\nserver-id=1\\nlog-bin=/var/lib/mysql/primary-bin > /etc/mysql/conf.d/replication.cnf' -# podman exec replica1 bash -c 'echo -e [mysqld]\\nserver-id=2\\nlog-bin=/var/lib/mysql/replica1-bin > /etc/mysql/conf.d/replication.cnf' -# podman exec replica2 bash -c 'echo -e [mysqld]\\nserver-id=3\\nlog-bin=/var/lib/mysql/replica2-bin > /etc/mysql/conf.d/replication.cnf' -# # Don't restart a container unless it is healthy + podman run \ + --detach \ + --replace \ + --name replica1 \ + --env MARIADB_ROOT_PASSWORD=msandbox \ + --env MYSQL_ROOT_PASSWORD=msandbox \ + --network podman \ + --publish 3308:3306 \ + --health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \ + docker.io/library/$(db_engine_name):$(db_engine_version) \ + mysqld + podman run \ + --detach \ + --replace \ + --name replica2 \ + --env MARIADB_ROOT_PASSWORD=msandbox \ + --env MYSQL_ROOT_PASSWORD=msandbox \ + --network podman \ + --publish 3309:3306 \ + --health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \ + docker.io/library/$(db_engine_name):$(db_engine_version) \ + mysqld + # Setup replication and restart containers + podman exec primary bash -c 'echo -e [mysqld]\\nserver-id=1\\nlog-bin=/var/lib/mysql/primary-bin > /etc/mysql/conf.d/replication.cnf' + podman exec replica1 bash -c 'echo -e [mysqld]\\nserver-id=2\\nlog-bin=/var/lib/mysql/replica1-bin > /etc/mysql/conf.d/replication.cnf' + podman exec replica2 bash -c 'echo -e [mysqld]\\nserver-id=3\\nlog-bin=/var/lib/mysql/replica2-bin > /etc/mysql/conf.d/replication.cnf' + # Don't restart a container unless it is healthy while ! podman healthcheck run primary && [[ "$$SECONDS" -lt 120 ]]; do sleep 1; done -# podman restart -t 30 primary -# while ! podman healthcheck run replica1 && [[ "$$SECONDS" -lt 120 ]]; do sleep 1; done -# podman restart -t 30 replica1 -# while ! podman healthcheck run replica2 && [[ "$$SECONDS" -lt 120 ]]; do sleep 1; done -# podman restart -t 30 replica2 -# while ! podman healthcheck run primary && [[ "$$SECONDS" -lt 120 ]]; do sleep 1; done -# mkdir -p .venv/$(ansible) -# python$(local_python_version) -m venv .venv/$(ansible) - -# # Start venv (use `; \` to keep the same shell) -# source .venv/$(ansible)/bin/activate; \ -# python$(local_python_version) -m ensurepip; \ -# python$(local_python_version) -m pip install --disable-pip-version-check \ -# https://github.com/ansible/ansible/archive/$(ansible).tar.gz; \ -# set -x; \ -# ansible-test integration $(target) -v --color --coverage --diff \ -# --docker ghcr.io/ansible-collections/community.mysql/test-container\ -# -$(db_client)-py$(python_version_flat)-$(connector_name)$(connector_version_flat):latest \ -# --docker-network podman $(_continue_on_errors) $(_keep_containers_alive) --python $(python); \ -# set +x - # End of venv + podman restart -t 30 primary + while ! podman healthcheck run replica1 && [[ "$$SECONDS" -lt 120 ]]; do sleep 1; done + podman restart -t 30 replica1 + while ! podman healthcheck run replica2 && [[ "$$SECONDS" -lt 120 ]]; do sleep 1; done + podman restart -t 30 replica2 + while ! podman healthcheck run primary && [[ "$$SECONDS" -lt 120 ]]; do sleep 1; done + mkdir -p .venv/$(ansible) + python$(local_python_version) -m venv .venv/$(ansible) + # Start venv (use `; \` to keep the same shell) source .venv/$(ansible)/bin/activate; \ + python$(local_python_version) -m ensurepip; \ + python$(local_python_version) -m pip install --disable-pip-version-check \ + https://github.com/ansible/ansible/archive/$(ansible).tar.gz; \ set -x; \ ansible-test integration $(target) -v --color --coverage --diff \ --docker ghcr.io/ansible-collections/community.mysql/test-container\ -$(db_client)-py$(python_version_flat)-$(connector_name)$(connector_version_flat):latest \ --docker-network podman $(_continue_on_errors) $(_keep_containers_alive) --python $(python); \ set +x + # End of venv + rm tests/integration/db_engine_name rm tests/integration/db_engine_version diff --git a/tests/integration/targets/test_mysql_info/tasks/filter_users_privs.yml b/tests/integration/targets/test_mysql_info/tasks/filter_users_privs.yml index 84675f1..6318866 100644 --- a/tests/integration/targets/test_mysql_info/tasks/filter_users_privs.yml +++ b/tests/integration/targets/test_mysql_info/tasks/filter_users_privs.yml @@ -150,8 +150,6 @@ - users_privs register: result - - debug: var=result - - name: Recreate users from mysql_info users_privs result community.mysql.mysql_user: name: "{{ item.user }}" diff --git a/tests/integration/targets/test_mysql_info/tasks/main.yml b/tests/integration/targets/test_mysql_info/tasks/main.yml index cf2a834..6357c42 100644 --- a/tests/integration/targets/test_mysql_info/tasks/main.yml +++ b/tests/integration/targets/test_mysql_info/tasks/main.yml @@ -21,204 +21,204 @@ block: - # # Create default MySQL config file with credentials - # - name: mysql_info - create default config file - # template: - # src: my.cnf.j2 - # dest: "{{ playbook_dir }}/root/.my.cnf" - # mode: '0400' + # Create default MySQL config file with credentials + - name: mysql_info - create default config file + template: + src: my.cnf.j2 + dest: "{{ playbook_dir }}/root/.my.cnf" + mode: '0400' - # # Create non-default MySQL config file with credentials - # - name: mysql_info - create non-default config file - # template: - # src: my.cnf.j2 - # dest: "{{ playbook_dir }}/root/non-default_my.cnf" - # mode: '0400' + # Create non-default MySQL config file with credentials + - name: mysql_info - create non-default config file + template: + src: my.cnf.j2 + dest: "{{ playbook_dir }}/root/non-default_my.cnf" + mode: '0400' - # ############### - # # Do tests + ############### + # Do tests - # # Access by default cred file - # - name: mysql_info - collect default cred file - # mysql_info: - # login_user: '{{ mysql_user }}' - # login_host: '{{ mysql_host }}' - # login_port: '{{ mysql_primary_port }}' - # config_file: "{{ playbook_dir }}/root/.my.cnf" - # register: result + # Access by default cred file + - name: mysql_info - collect default cred file + mysql_info: + login_user: '{{ mysql_user }}' + login_host: '{{ mysql_host }}' + login_port: '{{ mysql_primary_port }}' + config_file: "{{ playbook_dir }}/root/.my.cnf" + register: result - # - assert: - # that: - # - result is not changed - # - db_version in result.version.full - # - result.settings != {} - # - result.global_status != {} - # - result.databases != {} - # - result.engines != {} - # - result.users != {} + - assert: + that: + - result is not changed + - db_version in result.version.full + - result.settings != {} + - result.global_status != {} + - result.databases != {} + - result.engines != {} + - result.users != {} - # - name: mysql_info - Test connector informations display - # ansible.builtin.import_tasks: - # file: connector_info.yml + - name: mysql_info - Test connector informations display + ansible.builtin.import_tasks: + file: connector_info.yml - # # Access by non-default cred file - # - name: mysql_info - check non-default cred file - # mysql_info: - # login_user: '{{ mysql_user }}' - # login_host: '{{ mysql_host }}' - # login_port: '{{ mysql_primary_port }}' - # config_file: "{{ playbook_dir }}/root/non-default_my.cnf" - # register: result + # Access by non-default cred file + - name: mysql_info - check non-default cred file + mysql_info: + login_user: '{{ mysql_user }}' + login_host: '{{ mysql_host }}' + login_port: '{{ mysql_primary_port }}' + config_file: "{{ playbook_dir }}/root/non-default_my.cnf" + register: result - # - assert: - # that: - # - result is not changed - # - result.version != {} + - assert: + that: + - result is not changed + - result.version != {} - # # Remove cred files - # - name: mysql_info - remove cred files - # file: - # path: '{{ item }}' - # state: absent - # loop: - # - "{{ playbook_dir }}/.my.cnf" - # - "{{ playbook_dir }}/non-default_my.cnf" + # Remove cred files + - name: mysql_info - remove cred files + file: + path: '{{ item }}' + state: absent + loop: + - "{{ playbook_dir }}/.my.cnf" + - "{{ playbook_dir }}/non-default_my.cnf" - # # Access with password - # - name: mysql_info - check access with password - # mysql_info: - # <<: *mysql_params - # register: result + # Access with password + - name: mysql_info - check access with password + mysql_info: + <<: *mysql_params + register: result - # - assert: - # that: - # - result is not changed - # - result.version != {} + - assert: + that: + - result is not changed + - result.version != {} - # # Test excluding - # - name: Collect all info except settings and users - # mysql_info: - # <<: *mysql_params - # filter: '!settings,!users' - # register: result + # Test excluding + - name: Collect all info except settings and users + mysql_info: + <<: *mysql_params + filter: '!settings,!users' + register: result - # - assert: - # that: - # - result is not changed - # - result.version != {} - # - result.global_status != {} - # - result.databases != {} - # - result.engines != {} - # - result.settings is not defined - # - result.users is not defined + - assert: + that: + - result is not changed + - result.version != {} + - result.global_status != {} + - result.databases != {} + - result.engines != {} + - result.settings is not defined + - result.users is not defined - # # Test including - # - name: Collect info only about version and databases - # mysql_info: - # <<: *mysql_params - # filter: - # - version - # - databases - # register: result + # Test including + - name: Collect info only about version and databases + mysql_info: + <<: *mysql_params + filter: + - version + - databases + register: result - # - assert: - # that: - # - result is not changed - # - result.version != {} - # - result.databases != {} - # - result.engines is not defined - # - result.settings is not defined - # - result.global_status is not defined - # - result.users is not defined + - assert: + that: + - result is not changed + - result.version != {} + - result.databases != {} + - result.engines is not defined + - result.settings is not defined + - result.global_status is not defined + - result.users is not defined - # # Test exclude_fields: db_size - # # 'unsupported' element is passed to check that an unsupported value - # # won't break anything (will be ignored regarding to the module's documentation). - # - name: Collect info about databases excluding their sizes - # mysql_info: - # <<: *mysql_params - # filter: - # - databases - # exclude_fields: - # - db_size - # - unsupported - # register: result + # Test exclude_fields: db_size + # 'unsupported' element is passed to check that an unsupported value + # won't break anything (will be ignored regarding to the module's documentation). + - name: Collect info about databases excluding their sizes + mysql_info: + <<: *mysql_params + filter: + - databases + exclude_fields: + - db_size + - unsupported + register: result - # - assert: - # that: - # - result is not changed - # - result.databases != {} - # - result.databases.mysql == {} + - assert: + that: + - result is not changed + - result.databases != {} + - result.databases.mysql == {} - # ######################################################## - # # Issue #65727, empty databases must be in returned dict - # # - # - name: Create empty database acme - # mysql_db: - # <<: *mysql_params - # name: acme + ######################################################## + # Issue #65727, empty databases must be in returned dict + # + - name: Create empty database acme + mysql_db: + <<: *mysql_params + name: acme - # - name: Collect info about databases - # mysql_info: - # <<: *mysql_params - # filter: - # - databases - # return_empty_dbs: true - # register: result + - name: Collect info about databases + mysql_info: + <<: *mysql_params + filter: + - databases + return_empty_dbs: true + register: result - # # Check acme is in returned dict - # - assert: - # that: - # - result is not changed - # - result.databases.acme.size == 0 - # - result.databases.mysql != {} + # Check acme is in returned dict + - assert: + that: + - result is not changed + - result.databases.acme.size == 0 + - result.databases.mysql != {} - # - name: Collect info about databases excluding their sizes - # mysql_info: - # <<: *mysql_params - # filter: - # - databases - # exclude_fields: - # - db_size - # return_empty_dbs: true - # register: result + - name: Collect info about databases excluding their sizes + mysql_info: + <<: *mysql_params + filter: + - databases + exclude_fields: + - db_size + return_empty_dbs: true + register: result - # # Check acme is in returned dict - # - assert: - # that: - # - result is not changed - # - result.databases.acme == {} - # - result.databases.mysql == {} + # Check acme is in returned dict + - assert: + that: + - result is not changed + - result.databases.acme == {} + - result.databases.mysql == {} - # - name: Remove acme database - # mysql_db: - # <<: *mysql_params - # name: acme - # state: absent + - name: Remove acme database + mysql_db: + <<: *mysql_params + name: acme + state: absent - # - include_tasks: issue-28.yml + - include_tasks: issue-28.yml - # # https://github.com/ansible-collections/community.mysql/issues/204 - # - name: Create database containing only views - # mysql_db: - # <<: *mysql_params - # name: allviews + # https://github.com/ansible-collections/community.mysql/issues/204 + - name: Create database containing only views + mysql_db: + <<: *mysql_params + name: allviews - # - name: Create view - # mysql_query: - # <<: *mysql_params - # login_db: allviews - # query: 'CREATE VIEW v_today (today) AS SELECT CURRENT_DATE' + - name: Create view + mysql_query: + <<: *mysql_params + login_db: allviews + query: 'CREATE VIEW v_today (today) AS SELECT CURRENT_DATE' - # - name: Fetch info - # mysql_info: - # <<: *mysql_params - # register: result + - name: Fetch info + mysql_info: + <<: *mysql_params + register: result - # - name: Check - # assert: - # that: - # - result.databases.allviews.size == 0 + - name: Check + assert: + that: + - result.databases.allviews.size == 0 - name: Inport tasks file to tests users_privs filter ansible.builtin.import_tasks: