1# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
2# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
3
4# Tests for master_use_gtid parameter.
5# https://github.com/ansible/ansible/pull/62648
6
7#############################
8# master_use_gtid: "disabled"
9#############################
10
11# Auxiliary step:
12- name: Get master status
13  mysql_replication:
14    login_host: 127.0.0.1
15    login_port: "{{ primary_db.port }}"
16    mode: getmaster
17  register: primary_status
18
19# Set master_use_gtid disabled:
20- name: Run replication
21  mysql_replication:
22    login_host: 127.0.0.1
23    login_port: "{{ replica_db.port }}"
24    mode: changemaster
25    master_host: 127.0.0.1
26    master_port: "{{ primary_db.port }}"
27    master_user: "{{ replication_user }}"
28    master_password: "{{ replication_pass }}"
29    master_log_file: mysql-bin.000001
30    master_log_pos: '{{ primary_status.Position }}'
31    master_use_gtid: disabled
32  register: result
33
34- assert:
35    that:
36    - result is changed
37
38# Start standby for further tests:
39- name: Start standby
40  mysql_replication:
41    login_host: 127.0.0.1
42    login_port: "{{ primary_db.port }}"
43    mode: startslave
44
45- name: Get standby status
46  mysql_replication:
47    login_host: 127.0.0.1
48    login_port: "{{ replica_db.port }}"
49    mode: getslave
50  register: slave_status
51
52- assert:
53    that:
54    - slave_status.Using_Gtid == 'No'
55
56# Stop standby for further tests:
57- name: Stop standby
58  mysql_replication:
59    login_host: 127.0.0.1
60    login_port: "{{ replica_db.port }}"
61    mode: stopslave
62
63################################
64# master_use_gtid: "current_pos"
65################################
66
67# Auxiliary step:
68- name: Get master status
69  mysql_replication:
70    login_host: 127.0.0.1
71    login_port: "{{ primary_db.port }}"
72    mode: getmaster
73  register: primary_status
74
75# Set master_use_gtid current_pos:
76- name: Run replication
77  mysql_replication:
78    login_host: 127.0.0.1
79    login_port: "{{ replica_db.port }}"
80    mode: changemaster
81    master_host: 127.0.0.1
82    master_port: "{{ primary_db.port }}"
83    master_user: "{{ replication_user }}"
84    master_password: "{{ replication_pass }}"
85    master_log_file: mysql-bin.000001
86    master_log_pos: '{{ primary_status.Position }}'
87    master_use_gtid: current_pos
88  register: result
89
90- assert:
91    that:
92    - result is changed
93
94# Start standby for further tests:
95- name: Start standby
96  mysql_replication:
97    login_host: 127.0.0.1
98    login_port: "{{ primary_db.port }}"
99    mode: startslave
100
101- name: Get standby status
102  mysql_replication:
103    login_host: 127.0.0.1
104    login_port: "{{ replica_db.port }}"
105    mode: getslave
106  register: slave_status
107
108- assert:
109    that:
110    - slave_status.Using_Gtid == 'Current_Pos'
111
112# Stop standby for further tests:
113- name: Stop standby
114  mysql_replication:
115    login_host: 127.0.0.1
116    login_port: "{{ replica_db.port }}"
117    mode: stopslave
118
119##############################
120# master_use_gtid: "slave_pos"
121##############################
122
123# Auxiliary step:
124- name: Get master status
125  mysql_replication:
126    login_host: 127.0.0.1
127    login_port: "{{ primary_db.port }}"
128    mode: getmaster
129  register: primary_status
130
131# Set master_use_gtid slave_pos:
132- name: Run replication
133  mysql_replication:
134    login_host: 127.0.0.1
135    login_port: "{{ replica_db.port }}"
136    mode: changemaster
137    master_host: 127.0.0.1
138    master_port: "{{ primary_db.port }}"
139    master_user: "{{ replication_user }}"
140    master_password: "{{ replication_pass }}"
141    master_log_file: mysql-bin.000001
142    master_log_pos: '{{ primary_status.Position }}'
143    master_use_gtid: slave_pos
144  register: result
145
146- assert:
147    that:
148    - result is changed
149
150# Start standby for further tests:
151- name: Start standby
152  mysql_replication:
153    login_host: 127.0.0.1
154    login_port: "{{ primary_db.port }}"
155    mode: startslave
156
157- name: Get standby status
158  mysql_replication:
159    login_host: 127.0.0.1
160    login_port: "{{ replica_db.port }}"
161    mode: getslave
162  register: slave_status
163
164- assert:
165    that:
166    - slave_status.Using_Gtid == 'Slave_Pos'
167
168# Stop standby for further tests:
169- name: Stop standby
170  mysql_replication:
171    login_host: 127.0.0.1
172    login_port: "{{ replica_db.port }}"
173    mode: stopslave
174