class TestEtcdManager(unittest.TestCase): def __init__(self, method_name='runTest'): self.setUp = self.set_up super(TestEtcdManager, self).__init__(method_name) def set_up(self): requests.get = requests_get boto.ec2.connect_to_region = boto_ec2_connect_to_region self.manager = EtcdManager() self.manager.find_my_instace() def test_get_autoscaling_members(self): self.assertEqual(len(self.manager.get_autoscaling_members()), 3) self.assertEqual(self.manager.instance_id, 'i-deadbeef3') self.assertEqual(self.manager.region, 'eu-west-1') def test_clean_data_dir(self): self.manager.clean_data_dir() os.mkdir(self.manager.DATA_DIR) self.manager.clean_data_dir() open(self.manager.DATA_DIR, 'w').close() self.manager.clean_data_dir() os.symlink('foo', self.manager.DATA_DIR) old_unlink = os.unlink os.unlink = raise_exception self.manager.clean_data_dir() os.unlink = old_unlink self.manager.clean_data_dir() def test_load_my_identities(self): requests.get = requests_get_bad_status self.assertRaises(Exception, self.manager.load_my_identities) def test_run(self): os.execv = raise_exception os.fork = lambda: 0 time.sleep = raise_exception self.assertRaises(Exception, self.manager.run) os.fork = lambda: 1 os.waitpid = lambda a, b: (1, 0) self.assertRaises(Exception, self.manager.run)
class TestEtcdManager(unittest.TestCase): @patch('boto3.resource') @patch('requests.get', requests_get) def setUp(self, res): self.manager = EtcdManager() res.return_value.instances.filter.return_value = instances() self.manager.find_my_instance() @patch('boto3.resource') def test_get_autoscaling_members(self, res): res.return_value.instances.filter.return_value = instances() self.assertEqual(len(self.manager.get_autoscaling_members()), 3) self.assertEqual(self.manager.instance_id, 'i-deadbeef3') self.assertEqual(self.manager.region, 'eu-west-1') def test_clean_data_dir(self): self.manager.clean_data_dir() os.mkdir(self.manager.DATA_DIR) self.manager.clean_data_dir() open(self.manager.DATA_DIR, 'w').close() self.manager.clean_data_dir() os.symlink('foo', self.manager.DATA_DIR) with patch('os.unlink', Mock(side_effect=Exception)): self.manager.clean_data_dir() self.manager.clean_data_dir() @patch('requests.get', requests_get_bad_status) def test_load_my_identities(self): self.assertRaises(EtcdClusterException, self.manager.load_my_identities) @patch('time.sleep', Mock()) @patch('requests.get', requests_get) @patch('boto3.resource') def test_register_me(self, res): res.return_value.instances.filter.return_value = instances() cluster = EtcdCluster(self.manager) cluster.load_members() self.manager.me.id = '1' self.manager.register_me(cluster) self.manager.me.id = None cluster.accessible_member.add_member = Mock(return_value=False) self.assertRaises(EtcdClusterException, self.manager.register_me, cluster) self.manager.me.client_urls = ['a'] cluster.accessible_member.delete_member = Mock(return_value=False) self.assertRaises(EtcdClusterException, self.manager.register_me, cluster) cluster.accessible_member.delete_member = cluster.accessible_member.add_member = Mock(return_value=True) self.manager.register_me(cluster) cluster.leader_id = None self.assertRaises(EtcdClusterException, self.manager.register_me, cluster) cluster.accessible_member = None self.manager.register_me(cluster) @patch('boto3.resource') @patch('os.path.exists', Mock(return_value=True)) @patch('os.execv', Mock(side_effect=Exception)) @patch('os.fork', Mock(return_value=0)) @patch('time.sleep', Mock(side_effect=SleepException)) @patch('requests.get', requests_get) def test_run(self, res): res.return_value.instances.filter.return_value = instances() self.assertRaises(SleepException, self.manager.run) with patch('os.fork', Mock(return_value=1)): with patch('os.waitpid', Mock(return_value=(1, 0))): self.assertRaises(SleepException, self.manager.run) with patch.object(EtcdCluster, 'load_members', Mock(side_effect=SystemExit)): self.manager.run()
class TestEtcdManager(unittest.TestCase): def __init__(self, method_name='runTest'): self.setUp = self.set_up super(TestEtcdManager, self).__init__(method_name) def set_up(self): time.sleep = lambda e: None requests.get = requests_get boto.ec2.connect_to_region = boto_ec2_connect_to_region self.manager = EtcdManager() self.manager.find_my_instace() def test_get_autoscaling_members(self): self.assertEqual(len(self.manager.get_autoscaling_members()), 3) self.assertEqual(self.manager.instance_id, 'i-deadbeef3') self.assertEqual(self.manager.region, 'eu-west-1') def test_clean_data_dir(self): self.manager.clean_data_dir() os.mkdir(self.manager.DATA_DIR) self.manager.clean_data_dir() open(self.manager.DATA_DIR, 'w').close() self.manager.clean_data_dir() os.symlink('foo', self.manager.DATA_DIR) old_unlink = os.unlink os.unlink = raise_exception self.manager.clean_data_dir() os.unlink = old_unlink self.manager.clean_data_dir() def test_load_my_identities(self): requests.get = requests_get_bad_status self.assertRaises(EtcdClusterException, self.manager.load_my_identities) def test_register_me(self): cluster = EtcdCluster(self.manager) cluster.load_members() self.manager.me.id = '1' self.manager.register_me(cluster) self.manager.me.id = None cluster.accessible_member.add_member = lambda e: False self.assertRaises(EtcdClusterException, self.manager.register_me, cluster) self.manager.me.client_urls = ['a'] cluster.accessible_member.delete_member = lambda e: False self.assertRaises(EtcdClusterException, self.manager.register_me, cluster) cluster.accessible_member.delete_member = cluster.accessible_member.add_member = lambda e: True self.manager.register_me(cluster) cluster.leader_id = None self.assertRaises(EtcdClusterException, self.manager.register_me, cluster) cluster.accessible_member = None self.manager.register_me(cluster) def test_run(self): os.path.exists = lambda e: True os.execv = raise_exception os.fork = lambda: 0 time.sleep = sleep_exception self.assertRaises(SleepException, self.manager.run) os.fork = lambda: 1 os.waitpid = lambda a, b: (1, 0) self.assertRaises(SleepException, self.manager.run) load_members = EtcdCluster.load_members EtcdCluster.load_members = system_exit self.manager.run() EtcdCluster.load_members = load_members
class TestEtcdManager(unittest.TestCase): @patch('boto3.resource') @patch('requests.get', requests_get) def setUp(self, res): self.manager = EtcdManager() res.return_value.instances.filter.return_value = instances() self.manager.find_my_instance() @patch('boto3.resource') def test_get_autoscaling_members(self, res): res.return_value.instances.filter.return_value = instances() self.assertEqual(len(self.manager.get_autoscaling_members()), 3) self.assertEqual(self.manager.instance_id, 'i-deadbeef3') self.assertEqual(self.manager.region, 'eu-west-1') def test_clean_data_dir(self): self.manager.clean_data_dir() os.mkdir(self.manager.DATA_DIR) self.manager.clean_data_dir() open(self.manager.DATA_DIR, 'w').close() self.manager.clean_data_dir() os.symlink('foo', self.manager.DATA_DIR) with patch('os.unlink', Mock(side_effect=Exception)): self.manager.clean_data_dir() self.manager.clean_data_dir() @patch('requests.get', requests_get_bad_status) def test_load_my_identities(self): self.assertRaises(EtcdClusterException, self.manager.load_my_identities) @patch('time.sleep', Mock()) @patch('requests.get', requests_get) @patch('boto3.resource') def test_register_me(self, res): res.return_value.instances.filter.return_value = instances() cluster = EtcdCluster(self.manager) cluster.load_members() self.manager.me.id = '1' self.manager.register_me(cluster) self.manager.me.id = None cluster.accessible_member.add_member = Mock(return_value=False) self.assertRaises(EtcdClusterException, self.manager.register_me, cluster) self.manager.me.client_urls = ['a'] cluster.accessible_member.delete_member = Mock(return_value=False) self.assertRaises(EtcdClusterException, self.manager.register_me, cluster) cluster.accessible_member.delete_member = cluster.accessible_member.add_member = Mock( return_value=True) self.manager.register_me(cluster) cluster.leader_id = None self.assertRaises(EtcdClusterException, self.manager.register_me, cluster) cluster.accessible_member = None self.manager.register_me(cluster) @patch('boto3.resource') @patch('os.path.exists', Mock(return_value=True)) @patch('os.execv', Mock(side_effect=Exception)) @patch('os.fork', Mock(return_value=0)) @patch('time.sleep', Mock(side_effect=SleepException)) @patch('requests.get', requests_get) def test_run(self, res): res.return_value.instances.filter.return_value = instances() self.assertRaises(SleepException, self.manager.run) with patch('os.fork', Mock(return_value=1)): with patch('os.waitpid', Mock(return_value=(1, 0))): self.assertRaises(SleepException, self.manager.run) with patch.object(EtcdCluster, 'load_members', Mock(side_effect=SystemExit)): self.manager.run()