示例#1
0
    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()
示例#2
0
    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)
示例#3
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')))
示例#4
0
    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)