# 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 connect_timeout=5 register: result ignore_errors: true - include: assert_fail_msg.yml output={{result}} msg='unable to connect to database'