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:
parent
27a73f2c11
commit
2957a8de44
7 changed files with 312 additions and 0 deletions
|
@ -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}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
# defaults file for test_mysql_variables
|
||||||
|
user: 'user1'
|
||||||
|
password: 'password1'
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
dependencies:
|
||||||
|
- setup_mysql_db
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
||||||
|
|
|
@ -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"
|
202
test/integration/roles/test_mysql_variables/tasks/main.yml
Normal file
202
test/integration/roles/test_mysql_variables/tasks/main.yml
Normal 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'
|
Loading…
Reference in a new issue