2019-05-28 09:10:12 +02:00
|
|
|
# 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
|
|
|
|
#
|
|
|
|
|
|
|
|
# Create role for tests
|
|
|
|
- name: mysql_info - create mysql user {{ user_name }}
|
|
|
|
mysql_user:
|
|
|
|
name: '{{ user_name }}'
|
|
|
|
password: '{{ user_pass }}'
|
|
|
|
state: present
|
|
|
|
priv: '*.*:ALL'
|
|
|
|
login_unix_socket: '{{ mysql_socket }}'
|
|
|
|
|
|
|
|
# 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: '{{ user_name }}'
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- result.changed == false
|
|
|
|
- result.version != {}
|
|
|
|
- result.settings != {}
|
2019-10-10 12:14:49 +02:00
|
|
|
- result.global_status != {}
|
2019-05-28 09:10:12 +02:00
|
|
|
- result.databases != {}
|
|
|
|
- result.engines != {}
|
|
|
|
- result.users != {}
|
|
|
|
|
|
|
|
# Access by non-default cred file
|
|
|
|
- name: mysql_info - check non-default cred file
|
|
|
|
mysql_info:
|
|
|
|
login_user: '{{ user_name }}'
|
|
|
|
config_file: '/root/non-default_my.cnf'
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- result.changed == false
|
|
|
|
- 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:
|
|
|
|
login_user: '{{ user_name }}'
|
|
|
|
login_password: '{{ user_pass }}'
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- result.changed == false
|
|
|
|
- result.version != {}
|
|
|
|
|
|
|
|
# Test excluding
|
|
|
|
- name: Collect all info except settings and users
|
|
|
|
mysql_info:
|
|
|
|
login_user: '{{ user_name }}'
|
|
|
|
login_password: '{{ user_pass }}'
|
|
|
|
filter: "!settings,!users"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- result.changed == false
|
|
|
|
- result.version != {}
|
2019-10-10 12:14:49 +02:00
|
|
|
- result.global_status != {}
|
2019-05-28 09:10:12 +02:00
|
|
|
- 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:
|
|
|
|
login_user: '{{ user_name }}'
|
|
|
|
login_password: '{{ user_pass }}'
|
|
|
|
filter:
|
|
|
|
- version
|
|
|
|
- databases
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- result.changed == false
|
|
|
|
- result.version != {}
|
|
|
|
- result.databases != {}
|
|
|
|
- result.engines is not defined
|
|
|
|
- result.settings is not defined
|
2019-10-10 12:14:49 +02:00
|
|
|
- result.global_status is not defined
|
2019-05-28 09:10:12 +02:00
|
|
|
- result.users is not defined
|
2019-12-05 14:29:58 +01:00
|
|
|
|
|
|
|
# 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:
|
|
|
|
login_user: '{{ user_name }}'
|
|
|
|
login_password: '{{ user_pass }}'
|
|
|
|
filter:
|
|
|
|
- databases
|
|
|
|
exclude_fields:
|
|
|
|
- db_size
|
|
|
|
- unsupported
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- result.changed == false
|
|
|
|
- result.databases != {}
|
|
|
|
- result.databases.mysql == {}
|
2019-12-12 14:10:52 +01:00
|
|
|
|
|
|
|
########################################################
|
|
|
|
# Issue #65727, empty databases must be in returned dict
|
|
|
|
#
|
|
|
|
- name: Create empty database acme
|
|
|
|
mysql_db:
|
|
|
|
login_user: '{{ user_name }}'
|
|
|
|
login_password: '{{ user_pass }}'
|
|
|
|
name: acme
|
|
|
|
|
|
|
|
- name: Collect info about databases
|
|
|
|
mysql_info:
|
|
|
|
login_user: '{{ user_name }}'
|
|
|
|
login_password: '{{ user_pass }}'
|
|
|
|
filter:
|
|
|
|
- databases
|
|
|
|
return_empty_dbs: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
# Check acme is in returned dict
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- result.changed == false
|
|
|
|
- result.databases.acme.size == 0
|
|
|
|
- result.databases.mysql != {}
|
|
|
|
|
|
|
|
- name: Collect info about databases excluding their sizes
|
|
|
|
mysql_info:
|
|
|
|
login_user: '{{ user_name }}'
|
|
|
|
login_password: '{{ user_pass }}'
|
|
|
|
filter:
|
|
|
|
- databases
|
|
|
|
exclude_fields:
|
|
|
|
- db_size
|
|
|
|
return_empty_dbs: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
# Check acme is in returned dict
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- result.changed == false
|
|
|
|
- result.databases.acme == {}
|
|
|
|
- result.databases.mysql == {}
|
|
|
|
|
|
|
|
- name: Remove acme database
|
|
|
|
mysql_db:
|
|
|
|
login_user: '{{ user_name }}'
|
|
|
|
login_password: '{{ user_pass }}'
|
|
|
|
name: acme
|
|
|
|
state: absent
|