func (s *TestSuite) TestMoveBelowAndBack(c *C) { clearTestMaintenance() // become child slave1, err := inst.MoveBelow(&slave1Key, &slave2Key) c.Assert(err, IsNil) c.Assert(slave1.MasterKey.Equals(&slave2Key), Equals, true) c.Assert(slave1.SlaveRunning(), Equals, true) // And back; keep topology intact slave1, _ = inst.MoveUp(&slave1Key) slave2, _ := inst.ReadTopologyInstance(&slave2Key) c.Assert(inst.InstancesAreSiblings(slave1, slave2), Equals, true) c.Assert(slave1.SlaveRunning(), Equals, true) }
func (s *TestSuite) TestMoveBelowAndBackComplex(c *C) { clearTestMaintenance() // become child slave1, _ := inst.MoveBelow(&slave1Key, &slave2Key) c.Assert(slave1.MasterKey.Equals(&slave2Key), Equals, true) c.Assert(slave1.SlaveRunning(), Equals, true) // Now let's have fun. Stop slave2 (which is now parent of slave1), execute queries on master, // move s1 back under master, start all, verify queries. _, err := inst.StopSlave(&slave2Key) c.Assert(err, IsNil) randValue := rand.Int() _, err = inst.ExecInstance(&masterKey, `replace into orchestrator_test.test_table (name, value) values ('TestMoveBelowAndBackComplex', ?)`, randValue) c.Assert(err, IsNil) master, err := inst.ReadTopologyInstance(&masterKey) c.Assert(err, IsNil) // And back; keep topology intact slave1, err = inst.MoveUp(&slave1Key) c.Assert(err, IsNil) _, err = inst.MasterPosWait(&slave1Key, &master.SelfBinlogCoordinates) c.Assert(err, IsNil) slave2, err := inst.ReadTopologyInstance(&slave2Key) c.Assert(err, IsNil) _, err = inst.MasterPosWait(&slave2Key, &master.SelfBinlogCoordinates) c.Assert(err, IsNil) // Now check for value! var value1, value2 int inst.ScanInstanceRow(&slave1Key, `select value from orchestrator_test.test_table where name='TestMoveBelowAndBackComplex'`, &value1) inst.ScanInstanceRow(&slave2Key, `select value from orchestrator_test.test_table where name='TestMoveBelowAndBackComplex'`, &value2) c.Assert(inst.InstancesAreSiblings(slave1, slave2), Equals, true) c.Assert(value1, Equals, randValue) c.Assert(value2, Equals, randValue) }
func (s *TestSuite) TestNonSiblings(c *C) { i0, _ := inst.ReadTopologyInstance(&masterKey) i1, _ := inst.ReadTopologyInstance(&slave1Key) c.Assert(inst.InstancesAreSiblings(i0, i1), Not(Equals), true) }
func (s *TestSuite) TestSlavesAreSiblings(c *C) { i0, _ := inst.ReadTopologyInstance(&slave1Key) i1, _ := inst.ReadTopologyInstance(&slave2Key) c.Assert(inst.InstancesAreSiblings(i0, i1), Equals, true) }