mirror of
https://github.com/ansible-collections/community.mysql.git
synced 2025-04-05 10:10:32 -07:00
* Add methods to retrieve connector name and version * Document that mysqlclient is also named MySQLdb * Document version_added * Add connector name and version in the returned block * Cut condition to display any name that is return In case of MySQLdb is renamed in mysqlclient. In that case, the integration tests will catch this the day we update the connector version. Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>
219 lines
5.8 KiB
YAML
219 lines
5.8 KiB
YAML
####################################################################
|
|
# WARNING: These are designed specifically for Ansible tests #
|
|
# and should not be used as examples of how to write Ansible roles #
|
|
####################################################################
|
|
|
|
# Test code for mysql_info module
|
|
# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
###################
|
|
# Prepare for tests
|
|
#
|
|
|
|
- vars:
|
|
mysql_parameters: &mysql_params
|
|
login_user: '{{ mysql_user }}'
|
|
login_password: '{{ mysql_password }}'
|
|
login_host: '{{ mysql_host }}'
|
|
login_port: '{{ mysql_primary_port }}'
|
|
|
|
block:
|
|
|
|
# Create default MySQL config file with credentials
|
|
- name: mysql_info - create default config file
|
|
template:
|
|
src: my.cnf.j2
|
|
dest: /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: /root/non-default_my.cnf
|
|
mode: '0400'
|
|
|
|
###############
|
|
# 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 }}'
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result is not changed
|
|
- "mysql_version in result.version.full or mariadb_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
|
|
|
|
# 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: /root/non-default_my.cnf
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result is not changed
|
|
- result.version != {}
|
|
|
|
# Remove cred files
|
|
- name: mysql_info - remove cred files
|
|
file:
|
|
path: '{{ item }}'
|
|
state: absent
|
|
with_items:
|
|
- /root/.my.cnf
|
|
- /root/non-default_my.cnf
|
|
|
|
# Access with password
|
|
- name: mysql_info - check access with password
|
|
mysql_info:
|
|
<<: *mysql_params
|
|
register: result
|
|
|
|
- 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
|
|
|
|
- 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
|
|
|
|
- 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
|
|
|
|
- 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
|
|
|
|
- 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 != {}
|
|
|
|
- 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 == {}
|
|
|
|
- name: Remove acme database
|
|
mysql_db:
|
|
<<: *mysql_params
|
|
name: acme
|
|
state: absent
|
|
|
|
- include: issue-28.yml
|
|
|
|
# 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: Fetch info
|
|
mysql_info:
|
|
<<: *mysql_params
|
|
register: result
|
|
|
|
- name: Check
|
|
assert:
|
|
that:
|
|
- result.databases.allviews.size == 0
|