Example #1
0
    def test_recovery(self):

        # put some values in the store directly
        yield self.store.add_sensor(SensorItem("s1", 100, "s1v1"))
        yield self.store.add_sensor(SensorItem("s2", 100, "s2v1"))
        yield self.store.add_sensor(SensorItem("s1", 200, "s1v2"))

        d1 = dict(instance_id="i1", launch_id="l1", allocation="big",
                  site="cleveland", state=InstanceStates.PENDING)
        yield self.store.add_instance(CoreInstance.from_dict(d1))
        d2 = dict(instance_id="i2", launch_id="l2", allocation="big",
                  site="cleveland", state=InstanceStates.PENDING)
        yield self.store.add_instance(CoreInstance.from_dict(d2))

        d2['state'] = InstanceStates.RUNNING
        yield self.store.add_instance(CoreInstance.from_dict(d2))

        # recovery should bring them into state
        yield self.state.recover()
        yield self.assertSensor("s1", 200, "s1v2")
        yield self.assertSensor("s2", 100, "s2v1")
        yield self.assertInstance("i1", launch_id="l1", allocation="big",
                  site="cleveland", state=InstanceStates.PENDING)
        yield self.assertInstance("i2", launch_id="l2", allocation="big",
                  site="cleveland", state=InstanceStates.RUNNING)
Example #2
0
 def new_kill(self, instanceid):
     state = InstanceStates.TERMINATING
     dct = dict(instance_id=instanceid, state=state, site="chicago",
                allocation="small", health=InstanceHealthState.UNKNOWN,
                launch_id="thelaunch")
     prev = self.instances.get(instanceid)
     if prev:
         item = CoreInstance.from_existing(prev, **dct)
     else:
         item = CoreInstance.from_dict(dct)
     self.instances[instanceid] = item
     self.instance_changes[instanceid].append(item)
Example #3
0
 def new_kill(self, instanceid):
     state = InstanceStates.TERMINATING
     dct = dict(instance_id=instanceid,
                state=state,
                site="chicago",
                allocation="small",
                health=InstanceHealthState.UNKNOWN,
                launch_id="thelaunch")
     prev = self.instances.get(instanceid)
     if prev:
         item = CoreInstance.from_existing(prev, **dct)
     else:
         item = CoreInstance.from_dict(dct)
     self.instances[instanceid] = item
     self.instance_changes[instanceid].append(item)
Example #4
0
 def new_health(self, instance_id, is_ok=True):
     health = InstanceHealthState.OK if is_ok else InstanceHealthState.PROCESS_ERROR
     dct = dict(instance_id=instance_id,
                state=InstanceStates.RUNNING,
                site="chicago",
                allocation="small",
                health=health,
                launch_id="thelaunch")
     item = CoreInstance(**dct)
     self.instances[instance_id] = item
     self.instance_changes[instance_id].append(item)
Example #5
0
 def new_launch(self, new_instance_id, **extras):
     state = InstanceStates.RUNNING  # magical instant-start
     dct = dict(instance_id=new_instance_id,
                state=state,
                site="chicago",
                allocation="small",
                health=InstanceHealthState.UNKNOWN,
                launch_id="thelaunch",
                public_ip=str(uuid.uuid4()))
     dct.update(extras)
     item = CoreInstance(**dct)
     self.instances[new_instance_id] = item
     self.instance_changes[new_instance_id].append(item)
Example #6
0
    def _instances_put_get(self, count):
        instances = []
        instance_ids = set()
        for i in range(count):
            instance = CoreInstance(instance_id=str(uuid.uuid4()),
                                    launch_id=str(uuid.uuid4()),
                                    site="Chicago",
                                    allocation="small",
                                    state="Illinois")
            instances.append(instance)
            instance_ids.add(instance.instance_id)
            yield self.store.add_instance(instance)

        found_ids = yield self.store.get_instance_ids()
        found_ids = set(found_ids)
        log.debug("Put %d instances, got %d instance IDs", count,
                  len(found_ids))
        self.assertEqual(len(found_ids), len(instance_ids))
        self.assertEqual(found_ids, instance_ids)
Example #7
0
    def new_fake_instance_state(self,
                                instance_id,
                                state,
                                state_time,
                                health=None,
                                errors=None):
        if health is None:
            if instance_id in self.instances:
                health = self.instances[instance_id].health
            else:
                health = InstanceHealthState.UNKNOWN

        if errors is None and instance_id in self.instances:
            errors = self.instances[instance_id].errors

        self.instances[instance_id] = CoreInstance(instance_id=instance_id,
                                                   launch_id="thelaunch",
                                                   site="chicago",
                                                   allocation="big",
                                                   state=state,
                                                   state_time=state_time,
                                                   health=health,
                                                   errors=errors)