def setUp(self): super(TestMon, self).setUp() # I'm using CephCluster to generate the status objects to use as fixtures, I'm not # actually running the simulator or anything like that because this is a unit test. cluster = CephCluster() cluster.create(self.SERVERS) self.fsid = cluster.fsid # This will appear to be a completely happy healthy quorum of mons self.mon_status = msgpack.unpackb( cluster.get_cluster_object('ceph_fake', 'mon_status', None).data)['data'] # XXX hmm, perhaps synthesizing this stuff should go into # ceph_cluster and then it be sensibly kept up to date with # synthesized quorum changes. self.server1_status = deepcopy(self.mon_status) self.server2_status = deepcopy(self.mon_status) self.server3_status = deepcopy(self.mon_status) for (server_status, name, rank, state) in [ (self.server1_status, 'server1', 0, 'leader'), (self.server2_status, 'server2', 1, 'peon'), (self.server3_status, 'server3', 2, 'peon'), ]: server_status['name'] = name server_status['rank'] = rank server_status['state'] = state self.service_status = [{ 'id': 'server1', 'type': 'mon', 'cluster': cluster.name, 'fsid': cluster.fsid, 'status': self.server1_status, 'server': 'server1', 'running': True }, { 'id': 'server1', 'type': 'mon', 'cluster': cluster.name, 'fsid': cluster.fsid, 'status': self.server2_status, 'server': 'server2', 'running': True }, { 'id': 'server1', 'type': 'mon', 'cluster': cluster.name, 'fsid': cluster.fsid, 'status': self.server3_status, 'server': 'server3', 'running': True }] self.rpc.get_sync_object = mock.Mock(return_value=self.mon_status) self.rpc.status_by_service = mock.Mock( return_value=self.service_status)