~openstack-charmers-next/charms/wily/percona-cluster/trunk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/python3
# test percona-cluster (3 nodes)

import basic_deployment
import time


class ThreeNode(basic_deployment.BasicDeployment):
    def __init__(self):
        super(ThreeNode, self).__init__(units=3)

    def run(self):
        super(ThreeNode, self).run()
        # we are going to kill the master
        old_master = self.master_unit
        print('stopping mysql in %s' % str(self.master_unit.info))
        self.master_unit.run('sudo service mysql stop')

        print('looking for the new master')
        i = 0
        changed = False
        while i < 10 and not changed:
            i += 1
            time.sleep(5)  # give some time to pacemaker to react
            new_master = self.find_master()

            if (new_master and new_master.info['unit_name'] !=
                    old_master.info['unit_name']):
                changed = True

        assert changed, "The master didn't change"

        assert self.is_port_open(address=self.vip), 'cannot connect to vip'


if __name__ == "__main__":
    t = ThreeNode()
    t.run()