1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Adding test Coverage for mysql_variable module

Use mysql_variable to query, set and update variables.
Assert using user and password to query, set and update  variables.
Assert using single quotes, double quotes and no quotes  when using variables
This commit is contained in:
Wayne Rosario 2014-07-29 14:02:04 -04:00
parent 27a73f2c11
commit 2957a8de44
7 changed files with 312 additions and 0 deletions

View file

@ -9,3 +9,5 @@
- { role: test_apt_repository, tags: test_apt_repository } - { role: test_apt_repository, tags: test_apt_repository }
- { role: test_mysql_db, tags: test_mysql_db} - { role: test_mysql_db, tags: test_mysql_db}
- { role: test_mysql_user, tags: test_mysql_user} - { role: test_mysql_user, tags: test_mysql_user}
- { role: test_mysql_user, tags: test_mysql_user}
- { role: test_mysql_variables, tags: test_mysql_variables}

View file

@ -0,0 +1,5 @@
---
# defaults file for test_mysql_variables
user: 'user1'
password: 'password1'

View file

@ -0,0 +1,2 @@
dependencies:
- setup_mysql_db

View file

@ -0,0 +1,27 @@
# test code to assert message in mysql_variables module
# (c) 2014, Wayne Rosario <wrosario@ansible.com>
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
# ============================================================
# Assert message failure and confirm failed=true
#
- name: assert message failure (expect failed=true)
assert:
that:
- "output.failed == true"
- "'{{msg}}' in output.msg"

View file

@ -0,0 +1,36 @@
# test code to assert variables in mysql_variables module
# (c) 2014, Wayne Rosario <wrosario@ansible.com>
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
# ============================================================
# Assert mysql variable name and value from mysql database
#
- name: assert output message changed value
assert: { that: "output.changed == {{changed}}" }
- name: run mysql command to show variable
command: mysql "-e show variables like '{{var_name}}';"
register: result
- name: assert output mysql variable name and value
assert:
that:
- "result.changed == true"
- "'{{var_name}}' in result.stdout"
- "'{{var_value}}' in result.stdout"

View file

@ -0,0 +1,38 @@
# test code to assert variables in mysql_variables module
# (c) 2014, Wayne Rosario <wrosario@ansible.com>
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
# ============================================================
# Assert output variable name/value match mysql variable name/value
#
- name: assert output message changed value
assert: { that: "output.changed == {{changed}}" }
- set_fact:
key_name: "{{output.msg[0][0]}}"
key_value: "{{output.msg[0][1]}}"
- name: run mysql command to show variable
command: mysql "-e show variables like '{{var_name}}';"
register: result
- name: assert output variable info match mysql variable info
assert:
that:
- "result.changed == true"
- "key_name in result.stdout"
- "key_value in result.stdout"

View file

@ -0,0 +1,202 @@
# test code for the mysql_variables module
# (c) 2014, Wayne Rosario <wrosario@ansible.com>
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
# ============================================================
# Verify mysql_variable successfully queries a variable
#
- set_fact: set_name='version'
- name: read mysql variables (expect changed=false)
mysql_variables: variable={{set_name}}
register: result
- include: assert_var_output.yml changed=false output={{result}} var_name={{set_name}}
# ============================================================
# Verify mysql_variable successfully updates a variable (issue:4568)
#
- set_fact:
set_name: 'delay_key_write'
set_value: 'ON'
- name: set mysql variable
mysql_variables: variable={{set_name}} value={{set_value}}
- name: update mysql variable to same value (expect changed=false)
mysql_variables: variable={{set_name}} value={{set_value}}
register: result
- include: assert_var.yml changed=false output={{result}} var_name={{set_name}} var_value={{set_value}}
# ============================================================
# Verify mysql_variable successfully updates a variable using single quotes
#
- set_fact:
set_name: 'wait_timeout'
set_value: '300'
- name: set mysql variable to a temp value
mysql_variables: variable={{set_name}} value='200'
- name: update mysql variable value (expect changed=true)
mysql_variables: variable={{set_name}} value={{set_value}}
register: result
- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
# ============================================================
# Verify mysql_variable successfully updates a variable using double quotes
#
- set_fact:
set_name: "wait_timeout"
set_value: "400"
- name: set mysql variable to a temp value
mysql_variables: variable={{set_name}} value="200"
- name: update mysql variable value (expect changed=true)
mysql_variables: variable={{set_name}} value={{set_value}}
register: result
- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
# ============================================================
# Verify mysql_variable successfully updates a variable using no quotes
#
- set_fact:
set_name: wait_timeout
set_value: 500
- name: set mysql variable to a temp value
mysql_variables: variable={{set_name}} value=200
- name: update mysql variable value (expect changed=true)
mysql_variables: variable={{set_name}} value={{set_value}}
register: result
- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
# ============================================================
# Verify mysql_variable successfully updates a variable using an expression (e.g. 1024*4)
#
- name: set mysql variable value to an expression
mysql_variables: variable=max_tmp_tables value="1024*4"
register: result
ignore_errors: true
- include: assert_fail_msg.yml output={{result}} msg='Incorrect argument type to variable'
# ============================================================
# Verify mysql_variable fails when setting an incorrect value (out of range)
#
- name: set mysql variable value to a number out of range
mysql_variables: variable=max_tmp_tables value=-1
register: result
ignore_errors: true
- include: assert_fail_msg.yml output={{result}} msg='Truncated incorrect'
# ============================================================
# Verify mysql_variable fails when setting an incorrect value (incorrect type)
#
- name: set mysql variable value to a non-valid value number
mysql_variables: variable=max_tmp_tables value=TEST
register: result
ignore_errors: true
- include: assert_fail_msg.yml output={{result}} msg='Incorrect argument type to variable'
# ============================================================
# Verify mysql_variable fails when setting an unknown variable
#
- name: set a non mysql variable
mysql_variables: variable=my_sql_variable value=ON
register: result
ignore_errors: true
- include: assert_fail_msg.yml output={{result}} msg='Variable not available'
# ============================================================
# Verify mysql_variable fails when setting a read-only variable
#
- name: set value of a read only mysql variable
mysql_variables: variable=character_set_system value=utf16
register: result
ignore_errors: true
- include: assert_fail_msg.yml output={{result}} msg='read only variable'
#=============================================================
# Verify mysql_variable works with the login_user and login_password parameters
#
- name: create mysql user
mysql_user: name={{user}} password={{password}} state=present priv=*.*:ALL
- set_fact:
set_name: wait_timeout
set_value: 77
- name: query mysql_variable using login_user and password_password
mysql_variables: variable={{set_name}} login_user={{user}} login_password={{password}}
register: result
- include: assert_var_output.yml changed=false output={{result}} var_name={{set_name}}
- name: set mysql variable to temp value using user login and password (expect changed=true)
mysql_variables: variable={{set_name}} value=20 login_user={{user}} login_password={{password}}
register: result
- name: update mysql variable value using user login and password (expect changed=true)
mysql_variables: variable={{set_name}} value={{set_value}} login_user={{user}} login_password={{password}}
register: result
- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
#============================================================
# Verify mysql_variable fails with an incorrect login_password parameter
#
- set_fact:
set_name: connect_timeout
set_value: 10
- name: query mysql_variable using incorrect login_password
mysql_variables: variable={{set_name}} login_user={{user}} login_password=wrongpassword
register: result
ignore_errors: true
- include: assert_fail_msg.yml output={{result}} msg='unable to connect to database'
- name: update mysql variable value using incorrect login_password (expect failed=true)
mysql_variables: variable={{set_name}} value={{set_value}} login_user={{user}} login_password='this is an incorrect password'
register: result
ignore_errors: true
- include: assert_fail_msg.yml output={{result}} msg='unable to connect to database'
- name: remove mysql_user {{user}}
mysql_user: name={{user}} state=absent
#============================================================
# Verify mysql_variable fails with an incorrect login_host parameter
#
- name: query mysql_variable using incorrect login_host
mysql_variables: variable=wait_timeout login_host=12.0.0.9
register: result
ignore_errors: true
- include: assert_fail_msg.yml output={{result}} msg='unable to connect to database'