def test_faily_engine(self): core = ControllerCore(self.prov_client, "%s.FailyEngine" % __name__, "controller", {PROVISIONER_VARS_KEY : self.prov_vars}) yield core.run_recovery() yield core.run_initialize() #exception should not bubble up yield core.run_decide()
def test_initialize_no_instance_recovery(self): state = FakeControllerState() core = ControllerCore(self.prov_client, self.ENGINE, "controller", state=state, conf={'base1' : "avaf", 'base2' : [1,2,3]}) state.engine_extraconf = {'extra1' : "123456"} yield core.run_recovery() yield core.run_initialize() self.assertEqual(state.recover_count, 1) self.assertEqual(core.engine.initialize_count, 1) self.assertEqual(core.engine.initialize_conf, {'base1' : "avaf", 'base2' : [1,2,3], 'extra1' : "123456"}) self.assertEqual(len(self.prov_client.dump_state_reqs), 0)
def test_initialize_with_instance_recovery(self): state = FakeControllerState() core = ControllerCore(self.prov_client, self.ENGINE, "controller", state=state) # setup 3 instances that are "recovered", should see a dump_state call to provisioner # for 2 of them state.instances['i1'] = Mock(instance_id='i1', state=InstanceStates.RUNNING) state.instances['i2'] = Mock(instance_id='i2', state=InstanceStates.TERMINATED) state.instances['i3'] = Mock(instance_id='i3', state=InstanceStates.PENDING) yield core.run_recovery() yield core.run_initialize() self.assertEqual(state.recover_count, 1) self.assertEqual(core.engine.initialize_count, 1) self.assertEqual(len(self.prov_client.dump_state_reqs), 1) node_ids = set(self.prov_client.dump_state_reqs[0]) self.assertEqual(node_ids, set(('i1', 'i3')))
def test_deferred_engine(self): core = ControllerCore(self.prov_client, "%s.DeferredEngine" % __name__, "controller", {PROVISIONER_VARS_KEY : self.prov_vars}) yield core.run_recovery() yield core.run_initialize() self.assertEqual(1, core.engine.initialize_count) self.assertEqual(0, core.engine.decide_count) yield core.run_decide() self.assertEqual(1, core.engine.decide_count) yield core.run_decide() self.assertEqual(2, core.engine.decide_count) self.assertEqual(0, core.engine.reconfigure_count) yield core.run_reconfigure({}) self.assertEqual(1, core.engine.reconfigure_count)