def _new_instance_of(self, machine, start_date):
     #Create an instance of this machine
     instance_helper = CoreInstanceHelper(
             "Mock Instance", uuid4(),
             start_date, machine=machine)
     instance = instance_helper.to_core_instance()
     return instance
 def _new_instance_of(self, machine, start_date):
     # Create an instance of this machine
     instance_helper = CoreInstanceHelper("Mock Instance",
                                          uuid4(),
                                          start_date,
                                          machine=machine)
     instance = instance_helper.to_core_instance()
     return instance
Example #3
0
 def setUp(self):
     self.history_swap_every = relativedelta(minutes=30)
     self.start_time = self.begin_history = datetime(
         2015, 1, 1, tzinfo=pytz.utc
     )
     self.terminate_time = datetime(2015, 1, 8, tzinfo=pytz.utc)
     self.instance_helper = CoreInstanceHelper(
         "test_instance", uuid.uuid4(), self.start_time
     )
    def setUp(self):
        self.start_time = datetime(2015, 1, 1, tzinfo=pytz.utc)

        provider_machine_helper = CoreProviderMachineHelper(
            'First machine', 'machine-1', 'openstack', self.start_time)
        self.machine_1 = provider_machine_helper.to_core_machine()

        self.instance_helper = CoreInstanceHelper("test_instance",
                                                  "1234-1234-1234-1234",
                                                  self.start_time,
                                                  machine=self.machine_1)
        self.instance_1 = self.instance_helper.to_core_instance()
        pass
Example #5
0
class TestInstanceStatusHistory(CoreInstanceTestCase):
    def setUp(self):
        self.history_swap_every = relativedelta(minutes=30)
        self.start_time = self.begin_history = datetime(2015, 1, 1, tzinfo=pytz.utc)
        self.terminate_time = datetime(2015,1,8, tzinfo=pytz.utc)
        self.instance_helper = CoreInstanceHelper(
                "test_instance", "1234-1234-1234-1234", self.start_time)
        
    def test_growing_history(self):
        """
        * Create an instance
        * Fill it with history
          * active/suspended every 30m for 1 week
        * Terminate it.

        Verify that AT MOST ONE history is 'un-end-dated'
        """
        self.instance_1 = self.instance_helper.to_core_instance()
        self.assertZeroHistory(self.instance_1)
        self.history_helper = CoreStatusHistoryHelper(self.instance_1, self.begin_history)
        #Create first history for instance
        first_history = self.history_helper.first_transaction()
        self.assertOneActiveHistory(self.instance_1)
        next_start = self.begin_history + self.history_swap_every
        suspended = False
        while next_start < self.terminate_time:
            self.history_helper.set_start_date(next_start)
            self.history_helper.status_name = \
                    'suspended' if suspended else 'active'
            next_history = self.history_helper.new_transaction()
            self.assertOneActiveHistory(self.instance_1)
            suspended = not suspended
            next_start = next_start + self.history_swap_every
        self.instance_1.end_date_all(self.terminate_time)
        self.assertNoActiveHistory(self.instance_1)
    def setUp(self):
        self.start_time = datetime(2015, 1, 1, tzinfo=pytz.utc)

        provider_machine_helper = CoreProviderMachineHelper(
                'First machine', 'machine-1', 'openstack', self.start_time)
        self.machine_1 = provider_machine_helper.to_core_machine()

        self.instance_helper = CoreInstanceHelper(
                "test_instance", "1234-1234-1234-1234",
                self.start_time, machine=self.machine_1)
        self.instance_1 = self.instance_helper.to_core_instance()
        pass
Example #7
0
class TestInstanceStatusHistory(CoreInstanceTestCase):

    def setUp(self):
        self.history_swap_every = relativedelta(minutes=30)
        self.start_time = self.begin_history = datetime(
            2015,
            1,
            1,
            tzinfo=pytz.utc)
        self.terminate_time = datetime(2015, 1, 8, tzinfo=pytz.utc)
        self.instance_helper = CoreInstanceHelper(
            "test_instance", "1234-1234-1234-1234", self.start_time)

    def test_growing_history(self):
        """
        * Create an instance
        * Fill it with history
          * active/suspended every 30m for 1 week
        * Terminate it.

        Verify that AT MOST ONE history is 'un-end-dated'
        """
        self.instance_1 = self.instance_helper.to_core_instance()
        self.assertZeroHistory(self.instance_1)
        self.history_helper = CoreStatusHistoryHelper(
            self.instance_1,
            self.begin_history)
        # Create first history for instance
        first_history = self.history_helper.first_transaction()
        self.assertOneActiveHistory(self.instance_1)
        next_start = self.begin_history + self.history_swap_every
        suspended = False
        while next_start < self.terminate_time:
            self.history_helper.set_start_date(next_start)
            self.history_helper.status_name = \
                'suspended' if suspended else 'active'
            next_history = self.history_helper.new_transaction()
            self.assertOneActiveHistory(self.instance_1)
            suspended = not suspended
            next_start = next_start + self.history_swap_every
        self.instance_1.end_date_all(self.terminate_time)
        self.assertNoActiveHistory(self.instance_1)
class TestVersionAndForking(CoreMachineRequestTestCase):
    def setUp(self):
        self.start_time = datetime(2015, 1, 1, tzinfo=pytz.utc)

        provider_machine_helper = CoreProviderMachineHelper(
                'First machine', 'machine-1', 'openstack', self.start_time)
        self.machine_1 = provider_machine_helper.to_core_machine()

        self.instance_helper = CoreInstanceHelper(
                "test_instance", "1234-1234-1234-1234",
                self.start_time, machine=self.machine_1)
        self.instance_1 = self.instance_helper.to_core_instance()
        pass

    def test_single_version_updating(self):
        """
        This test meant to represent which rules will succed/fail as
        'acceptable' versions. Currently, all version strings are acceptable.
        As these rules change, the tests will change/grow..
        """
        provider_machine_helper = CoreProviderMachineHelper(
                'Test Versioning', 'machine-version-1', 'openstack', self.start_time)
        machine_1 = provider_machine_helper.to_core_machine()
        machine_1.update_version('1')
        self.assertMachineVersionEquals(machine_1, '1')
        machine_1.update_version('1.2.1')
        self.assertMachineVersionEquals(machine_1, '1.2.1')
        machine_1.update_version('one-two-two')
        self.assertMachineVersionEquals(machine_1, 'one-two-two')
        machine_1.update_version('man-bear-pig')
        self.assertMachineVersionEquals(machine_1, 'man-bear-pig')
        pass
    def test_update_then_fork(self):
        provider_machine_helper = CoreProviderMachineHelper(
                'New Machine', 'new-machine-1', 'openstack', self.start_time)
        machine_1 = provider_machine_helper.to_core_machine()
        machine_2 = self._process_new_update_request(machine_1,
        "New Name, Same Version", "2.0", 2)
        self.assertApplicationNameEquals(machine_2, "New Name, Same Version")
        self.assertMachineVersionEquals(machine_2, "2.0")
        machine_3 = self._process_new_fork_request(machine_2,
                "Totally different", "1.0", 3)
        self.assertApplicationNameEquals(machine_3, "Totally different")
        self.assertMachineVersionEquals(machine_3, "1.0")
        pass

    def test_complex_fork_tree(self):
        #Boot strap the first machine
        provider_machine_helper = CoreProviderMachineHelper(
                'Complex Fork Test-New Machine',
                'new-machine-1234', 'openstack', self.start_time)
        machine_1 = provider_machine_helper.to_core_machine()
        machine_2 = self._process_new_update_request(
                machine_1, machine_1.application.name, "2.0", 2)
        self.assertApplicationNameEquals(machine_2, machine_1.application.name)
        self.assertMachineVersionEquals(machine_2, "2.0")

        machine_3 = self._process_new_update_request(
                machine_1, machine_1.application.name, "3.0", 3)
        self.assertApplicationNameEquals(machine_3, machine_1.application.name)
        self.assertMachineVersionEquals(machine_3, "3.0")

        machine_4 = self._process_new_update_request(
                machine_1, machine_1.application.name, "4.0", 4)
        self.assertApplicationNameEquals(machine_4, machine_1.application.name)
        self.assertMachineVersionEquals(machine_4, "4.0")
        self.assertApplicationNameEquals(machine_1, machine_4.application.name)

        fork_level_2 = self._process_new_fork_request(
                machine_2, "I am not machine 2", "1.0.0", 5)
        self.assertNotEqual(fork_level_2.application.name,
                            machine_2.application.name)
        update_fork_2 = self._process_new_update_request(
                fork_level_2, "not machine 2, but an update", "2.0.0", 6)
        self.assertApplicationNameEquals(fork_level_2, "not machine 2, but an update")
        self.assertApplicationNameEquals(update_fork_2, "not machine 2, but an update")
        self.assertMachineVersionEquals(fork_level_2, "1.0.0")
        self.assertMachineVersionEquals(update_fork_2, "2.0.0")

        fork_level_3 = self._process_new_fork_request(
                machine_3, "I am different from machine 3", "3.0.5", 7)
        self.assertNotEqual(fork_level_3.application.name,
                            machine_3.application.name)
        update_fork_3 = self._process_new_update_request(
                fork_level_3, fork_level_3.application.name, "3.0.6", 8)
        self.assertApplicationNameEquals(fork_level_3, "I am different from machine 3")
        self.assertApplicationNameEquals(update_fork_3, "I am different from machine 3")
        self.assertMachineVersionEquals(fork_level_3, "3.0.5")
        self.assertMachineVersionEquals(update_fork_3, "3.0.6")

        pass
class TestVersionAndForking(CoreMachineRequestTestCase):
    def setUp(self):
        self.start_time = datetime(2015, 1, 1, tzinfo=pytz.utc)

        provider_machine_helper = CoreProviderMachineHelper(
            'First machine', 'machine-1', 'openstack', self.start_time)
        self.machine_1 = provider_machine_helper.to_core_machine()

        self.instance_helper = CoreInstanceHelper("test_instance",
                                                  "1234-1234-1234-1234",
                                                  self.start_time,
                                                  machine=self.machine_1)
        self.instance_1 = self.instance_helper.to_core_instance()
        pass

    def test_single_version_updating(self):
        """
        This test meant to represent which rules will succed/fail as
        'acceptable' versions. Currently, all version strings are acceptable.
        As these rules change, the tests will change/grow..
        """
        provider_machine_helper = CoreProviderMachineHelper(
            'Test Versioning', 'machine-version-1', 'openstack',
            self.start_time)
        machine_1 = provider_machine_helper.to_core_machine()
        machine_1.update_version('1')
        self.assertMachineVersionEquals(machine_1, '1')
        machine_1.update_version('1.2.1')
        self.assertMachineVersionEquals(machine_1, '1.2.1')
        machine_1.update_version('one-two-two')
        self.assertMachineVersionEquals(machine_1, 'one-two-two')
        machine_1.update_version('man-bear-pig')
        self.assertMachineVersionEquals(machine_1, 'man-bear-pig')
        pass

    def test_update_then_fork(self):
        provider_machine_helper = CoreProviderMachineHelper(
            'New Machine', 'new-machine-1', 'openstack', self.start_time)
        machine_1 = provider_machine_helper.to_core_machine()
        machine_2 = self._process_new_update_request(machine_1,
                                                     "New Name, Same Version",
                                                     "2.0", 2)
        self.assertApplicationNameEquals(machine_2, "New Name, Same Version")
        self.assertMachineVersionEquals(machine_2, "2.0")
        machine_3 = self._process_new_fork_request(machine_2,
                                                   "Totally different", "1.0",
                                                   3)
        self.assertApplicationNameEquals(machine_3, "Totally different")
        self.assertMachineVersionEquals(machine_3, "1.0")
        pass

    def test_complex_fork_tree(self):
        # Boot strap the first machine
        provider_machine_helper = CoreProviderMachineHelper(
            'Complex Fork Test-New Machine', 'new-machine-1234', 'openstack',
            self.start_time)
        machine_1 = provider_machine_helper.to_core_machine()
        machine_2 = self._process_new_update_request(
            machine_1, machine_1.application.name, "2.0", 2)
        self.assertApplicationNameEquals(machine_2, machine_1.application.name)
        self.assertMachineVersionEquals(machine_2, "2.0")

        machine_3 = self._process_new_update_request(
            machine_1, machine_1.application.name, "3.0", 3)
        self.assertApplicationNameEquals(machine_3, machine_1.application.name)
        self.assertMachineVersionEquals(machine_3, "3.0")

        machine_4 = self._process_new_update_request(
            machine_1, machine_1.application.name, "4.0", 4)
        self.assertApplicationNameEquals(machine_4, machine_1.application.name)
        self.assertMachineVersionEquals(machine_4, "4.0")
        self.assertApplicationNameEquals(machine_1, machine_4.application.name)

        fork_level_2 = self._process_new_fork_request(machine_2,
                                                      "I am not machine 2",
                                                      "1.0.0", 5)
        self.assertNotEqual(fork_level_2.application.name,
                            machine_2.application.name)
        update_fork_2 = self._process_new_update_request(
            fork_level_2, "not machine 2, but an update", "2.0.0", 6)
        self.assertApplicationNameEquals(fork_level_2,
                                         "not machine 2, but an update")
        self.assertApplicationNameEquals(update_fork_2,
                                         "not machine 2, but an update")
        self.assertMachineVersionEquals(fork_level_2, "1.0.0")
        self.assertMachineVersionEquals(update_fork_2, "2.0.0")

        fork_level_3 = self._process_new_fork_request(
            machine_3, "I am different from machine 3", "3.0.5", 7)
        self.assertNotEqual(fork_level_3.application.name,
                            machine_3.application.name)
        update_fork_3 = self._process_new_update_request(
            fork_level_3, fork_level_3.application.name, "3.0.6", 8)
        self.assertApplicationNameEquals(fork_level_3,
                                         "I am different from machine 3")
        self.assertApplicationNameEquals(update_fork_3,
                                         "I am different from machine 3")
        self.assertMachineVersionEquals(fork_level_3, "3.0.5")
        self.assertMachineVersionEquals(update_fork_3, "3.0.6")

        pass