add back all the tests steps disabled during development

This commit is contained in:
Laurent Indermuehle 2023-09-15 15:31:29 +02:00
parent b3b7868079
commit 29b6ad89a1
No known key found for this signature in database
GPG key ID: 93FA944C9F34DD09
3 changed files with 212 additions and 221 deletions

View file

@ -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

View file

@ -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 }}"

View file

@ -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: