Beispiel #1
0
 def test_create_in_section(self):
     bank = bank_plugin.Bank(_InMemoryBankPlugin())
     bank_lease = _InMemoryLeasePlugin()
     bank_section = bank_plugin.BankSection(bank, "/checkpoints")
     owner_id = bank.get_owner_id()
     plan = fake_protection_plan()
     cp = checkpoint.Checkpoint.create_in_section(bank_section=bank_section,
                                                  bank_lease=bank_lease,
                                                  owner_id=owner_id,
                                                  plan=plan)
     checkpoint_data = {
         "version": checkpoint.Checkpoint.VERSION,
         "id": cp.id,
         "status": "protecting",
         "owner_id": owner_id,
         "protection_plan": {
             "id": plan.get("id"),
             "name": plan.get("name"),
             "resources": plan.get("resources")
         }
     }
     self.assertEqual(
         checkpoint_data,
         bank._plugin.get_object(
             "/checkpoints/%s/%s" %
             (checkpoint_data['id'], checkpoint._INDEX_FILE_NAME)))
     self.assertEqual(owner_id, cp.owner_id)
     self.assertEqual("protecting", cp.status)
 def test_delete_checkpoint(self):
     collection = self._create_test_collection()
     result = {
         collection.create(fake_protection_plan()).id for i in range(10)}
     checkpoint = collection.get(result.pop())
     checkpoint.purge()
     self.assertEqual(set(collection.list_ids()), result)
Beispiel #3
0
 def setUp(self):
     self.load_engine = flow_manager.Worker._load_engine
     flow_manager.Worker._load_engine = mock.Mock()
     flow_manager.Worker._load_engine.return_value = fakes.FakeFlowEngine()
     super(ProtectionServiceTest, self).setUp()
     self.pro_manager = manager.ProtectionManager()
     self.protection_plan = fakes.fake_protection_plan()
 def test_list_checkpoints(self):
     collection = self._create_test_collection()
     result = {
         collection.create(fake_protection_plan()).id
         for i in range(10)
     }
     self.assertEqual(set(collection.list_ids()), result)
Beispiel #5
0
 def setUp(self):
     self.load_engine = flow_manager.Worker._load_engine
     flow_manager.Worker._load_engine = mock.Mock()
     flow_manager.Worker._load_engine.return_value = fakes.FakeFlowEngine()
     super(ProtectionServiceTest, self).setUp()
     self.pro_manager = manager.ProtectionManager()
     self.protection_plan = fakes.fake_protection_plan()
Beispiel #6
0
 def test_create_in_section(self):
     bank = bank_plugin.Bank(_InMemoryBankPlugin())
     bank_lease = _InMemoryLeasePlugin()
     bank_section = bank_plugin.BankSection(bank, "/checkpoints")
     owner_id = bank.get_owner_id()
     plan = fake_protection_plan()
     checkpoint = Checkpoint.create_in_section(bank_section=bank_section,
                                               bank_lease=bank_lease,
                                               owner_id=owner_id,
                                               plan=plan)
     checkpoint_data = {
         "version": Checkpoint.VERSION,
         "id": checkpoint.id,
         "status": "protecting",
         "owner_id": owner_id,
         "protection_plan": {
             "id": plan.get("id"),
             "name": plan.get("name"),
             "resources": plan.get("resources")
         }
     }
     self.assertEqual(
         checkpoint_data,
         bank._plugin.get_object(
             "/checkpoints%s" % checkpoint._index_file_path
         )
     )
     self.assertEqual(owner_id, checkpoint.owner_id)
     self.assertEqual("protecting", checkpoint.status)
Beispiel #7
0
    def test_resource_graph(self):
        bank = bank_plugin.Bank(_InMemoryBankPlugin())
        bank_lease = _InMemoryLeasePlugin()
        bank_section = bank_plugin.BankSection(bank, "/checkpoints")
        owner_id = bank.get_owner_id()
        plan = fake_protection_plan()
        cp = checkpoint.Checkpoint.create_in_section(bank_section=bank_section,
                                                     bank_lease=bank_lease,
                                                     owner_id=owner_id,
                                                     plan=plan)

        resource_graph = graph.build_graph([A, B, C, D],
                                           resource_map.__getitem__)
        cp.resource_graph = resource_graph
        cp.commit()
        checkpoint_data = {
            "version": checkpoint.Checkpoint.VERSION,
            "id": cp.id,
            "status": "protecting",
            "owner_id": owner_id,
            "protection_plan": {
                "id": plan.get("id"),
                "name": plan.get("name"),
                "resources": plan.get("resources")
            },
            "resource_graph": graph.serialize_resource_graph(resource_graph)
        }
        self.assertEqual(
            checkpoint_data,
            bank._plugin.get_object(
                "/checkpoints/%s/%s" %
                (checkpoint_data["id"], checkpoint._INDEX_FILE_NAME)))
        self.assertEqual(len(resource_graph), len(cp.resource_graph))
        for start_node in resource_graph:
            self.assertEqual(True, start_node in cp.resource_graph)
 def test_create_checkpoint(self):
     collection = self._create_test_collection()
     checkpoint = collection.create(fake_protection_plan())
     checkpoint.status = "finished"
     checkpoint.commit()
     self.assertEqual(
         checkpoint.status,
         collection.get(checkpoint_id=checkpoint.id).status,
     )
 def test_write_checkpoint_with_invalid_lease(self):
     collection = self._create_test_collection()
     checkpoint = collection.create(fake_protection_plan())
     collection._bank_lease.check_lease_validity = mock.MagicMock()
     collection._bank_lease.check_lease_validity.return_value = False
     checkpoint.status = "finished"
     self.assertNotEqual(
         checkpoint.status,
         collection.get(checkpoint_id=checkpoint.id).status,
     )
 def test_write_checkpoint_with_invalid_lease(self):
     collection = self._create_test_collection()
     checkpoint = collection.create(fake_protection_plan())
     collection._bank_lease.check_lease_validity = mock.MagicMock()
     collection._bank_lease.check_lease_validity.return_value = False
     checkpoint.status = "finished"
     self.assertNotEqual(
         checkpoint.status,
         collection.get(checkpoint_id=checkpoint.id).status,
     )
Beispiel #11
0
    def test_build_protect_task_flow(self, mock_build_graph):
        pr = ProviderRegistry()
        self.assertEqual(len(pr.providers), 1)

        plugable_provider = pr.providers["fake_id1"]
        cntxt = "fake_cntxt"
        plan = fake_protection_plan()
        workflow_engine = FakeWorkflowEngine()
        operation = constants.OPERATION_PROTECT

        ctx = {"context": cntxt,
               "plan": plan,
               "workflow_engine": workflow_engine,
               "operation_type": operation,
               }

        expected_calls = [
            ("on_resource_start", 'A', True),
            ("on_resource_start", 'C', True),
            ("on_resource_start", 'D', True),
            ("on_resource_end", 'D'),
            ("on_resource_start", 'E', True),
            ("on_resource_end", 'E'),
            ("on_resource_end", 'C'),
            ("on_resource_end", 'A'),
            ("on_resource_start", 'B', True),
            ("on_resource_start", 'C', False),
            ("on_resource_start", 'D', False),
            ("on_resource_end", 'D'),
            ("on_resource_start", 'E', False),
            ("on_resource_end", 'E'),
            ("on_resource_end", 'C'),
            ("on_resource_end", 'B'),
        ]

        fake_registry = FakeProtectableRegistry()
        plugable_provider.protectable_registry = fake_registry

        fake_registry.build_graph = mock.MagicMock()
        resource_graph = build_graph(plan_resources, resource_map.__getitem__)
        mock_build_graph.return_value = resource_graph

        fake_protection_plugin = FakeProtectionPlugin(expected_calls)
        plugable_provider._plugin_map = {
            "fake_plugin": fake_protection_plugin
        }

        result = plugable_provider.build_task_flow(ctx)
        self.assertEqual(len(result["status_getters"]), 5)
        self.assertEqual(len(result["task_flow"]), 5)
    def test_build_protect_task_flow(self, mock_build_graph):
        pr = ProviderRegistry()
        self.assertEqual(len(pr.providers), 1)

        plugable_provider = pr.providers["fake_id1"]
        cntxt = "fake_cntxt"
        plan = fake_protection_plan()
        workflow_engine = FakeWorkflowEngine()
        operation = constants.OPERATION_PROTECT

        ctx = {
            "context": cntxt,
            "plan": plan,
            "workflow_engine": workflow_engine,
            "operation_type": operation,
        }

        expected_calls = [
            ("on_resource_start", 'A', True),
            ("on_resource_start", 'C', True),
            ("on_resource_start", 'D', True),
            ("on_resource_end", 'D'),
            ("on_resource_start", 'E', True),
            ("on_resource_end", 'E'),
            ("on_resource_end", 'C'),
            ("on_resource_end", 'A'),
            ("on_resource_start", 'B', True),
            ("on_resource_start", 'C', False),
            ("on_resource_start", 'D', False),
            ("on_resource_end", 'D'),
            ("on_resource_start", 'E', False),
            ("on_resource_end", 'E'),
            ("on_resource_end", 'C'),
            ("on_resource_end", 'B'),
        ]

        fake_registry = FakeProtectableRegistry()
        plugable_provider.protectable_registry = fake_registry

        fake_registry.build_graph = mock.MagicMock()
        resource_graph = build_graph(plan_resources, resource_map.__getitem__)
        mock_build_graph.return_value = resource_graph

        fake_protection_plugin = FakeProtectionPlugin(expected_calls)
        plugable_provider._plugin_map = {"fake_plugin": fake_protection_plugin}

        result = plugable_provider.build_task_flow(ctx)
        self.assertEqual(len(result["status_getters"]), 5)
        self.assertEqual(len(result["task_flow"]), 5)
Beispiel #13
0
    def test_resource_graph(self):
        bank = bank_plugin.Bank(_InMemoryBankPlugin())
        bank_lease = _InMemoryLeasePlugin()
        bank_section = bank_plugin.BankSection(bank, "/checkpoints")
        owner_id = bank.get_owner_id()
        plan = fake_protection_plan()
        cp = checkpoint.Checkpoint.create_in_section(bank_section=bank_section,
                                                     bank_lease=bank_lease,
                                                     owner_id=owner_id,
                                                     plan=plan)

        resource_graph = graph.build_graph([A, B, C, D],
                                           resource_map.__getitem__)
        cp.resource_graph = resource_graph
        cp.commit()
        checkpoint_data = {
            "version": checkpoint.Checkpoint.VERSION,
            "id": cp.id,
            "status": "protecting",
            "owner_id": owner_id,
            "protection_plan": {
                "id": plan.get("id"),
                "name": plan.get("name"),
                "resources": plan.get("resources")
            },
            "resource_graph": graph.serialize_resource_graph(
                resource_graph)
        }
        self.assertEqual(
            checkpoint_data,
            bank._plugin.get_object(
                "/checkpoints/%s/%s" % (checkpoint_data["id"],
                                        checkpoint._INDEX_FILE_NAME)
            )
        )
        self.assertEqual(len(resource_graph), len(cp.resource_graph))
        for start_node in resource_graph:
            self.assertEqual(True, start_node in cp.resource_graph)
Beispiel #14
0
    def test_resource_graph(self):
        bank = bank_plugin.Bank(_InMemoryBankPlugin())
        bank_lease = _InMemoryLeasePlugin()
        bank_section = bank_plugin.BankSection(bank, "/checkpoints")
        owner_id = bank.get_owner_id()
        plan = fake_protection_plan()
        checkpoint = Checkpoint.create_in_section(bank_section=bank_section,
                                                  bank_lease=bank_lease,
                                                  owner_id=owner_id,
                                                  plan=plan)

        resource_graph = graph.build_graph([A, B, C, D],
                                           resource_map.__getitem__)
        checkpoint.resource_graph = resource_graph
        checkpoint.commit()
        checkpoint_data = {
            "version": Checkpoint.VERSION,
            "id": checkpoint.id,
            "status": "protecting",
            "owner_id": owner_id,
            "protection_plan": {
                "id": plan.get("id"),
                "name": plan.get("name"),
                "resources": plan.get("resources")
            },
            "resource_graph": graph.pack_graph(resource_graph)
        }
        self.assertEqual(
            checkpoint_data,
            bank._plugin.get_object(
                "/checkpoints%s" % checkpoint._index_file_path
            )
        )
        self.assertEqual(
            graph.unpack_graph(graph.pack_graph(resource_graph)),
            checkpoint.resource_graph)
Beispiel #15
0
 def setUp(self):
     super(ProtectionServiceTest, self).setUp()
     self.pro_manager = manager.ProtectionManager()
     self.protection_plan = fakes.fake_protection_plan()
 def test_list_checkpoints(self):
     collection = self._create_test_collection()
     result = {
         collection.create(fake_protection_plan()).id for i in range(10)}
     self.assertEqual(set(collection.list_ids()), result)
Beispiel #17
0
 def test_protect_in_error(self, mock_flow):
     mock_flow.side_effect = Exception()
     self.assertRaises(oslo_messaging.ExpectedException,
                       self.pro_manager.protect,
                       None,
                       fakes.fake_protection_plan())
Beispiel #18
0
 def test_protect(self, mock_provider):
     mock_provider.return_value = fakes.FakeProvider()
     self.pro_manager.protect(None, fakes.fake_protection_plan())
Beispiel #19
0
 def test_protect_in_error(self, mock_flow):
     mock_flow.side_effect = Exception()
     self.assertRaises(exception.SmaugException, self.pro_manager.protect,
                       None, fakes.fake_protection_plan())
Beispiel #20
0
 def test_protect_in_error(self, mock_flow):
     mock_flow.side_effect = Exception()
     self.assertRaises(exception.SmaugException,
                       self.pro_manager.protect,
                       None,
                       fakes.fake_protection_plan())
Beispiel #21
0
 def test_protect(self, mock_provider):
     mock_provider.return_value = fakes.FakeProvider()
     self.pro_manager.protect(None, fakes.fake_protection_plan())