示例#1
0
 def test_basic_dep_track_update_2(self):
     reaction_map = {
         "red": {
             'self': ['green', 'blue'],
         },
         "blue": {
             'self': ['green'],
             'red': ['blue'],
             'purple': ['green'],
             'green': [],
         },
         "green": {
             'self': ['white'],
             'blue': ['white'],
             'red': ['blue'],
         },
         "white": {
             'self': ['purple'],
             'green': ['purple'],
         },
         "purple": {
             'self': ['blue'],
             'white': ['blue'],
         },
     }
     GreenSM._object_db.object_read = self.green_read_with_refs
     WhiteSM._object_db.object_read = self.white_read_with_refs
     BlueSM._object_db.object_read = self.purple_read_with_multi_refs
     BlueSM._object_db.object_read = self.blue_read_with_multi_refs
     dependency_tracker = DependencyTracker(DBBase._OBJ_TYPE_MAP,
                                            reaction_map)
     RedSM.locate("fake-red-uuid")
     blue = BlueSM.locate("fake-blue-uuid")
     GreenSM.locate("fake-green-uuid-0")
     GreenSM.locate("fake-green-uuid-1")
     WhiteSM.locate("fake-white-uuid")
     PurpleSM.locate("fake-purple-uuid")
     dependency_tracker.evaluate('blue', blue)
     GreenSM.delete("fake-green-uuid-0")
     GreenSM.delete("fake-green-uuid-1")
     GreenSM.locate("fake-green-uuid-2")
     GreenSM.locate("fake-green-uuid-3")
     BlueSM._object_db.object_read = self.blue_read_with_new_refs
     blue.update()
     dependency_tracker.resources = {}
     dependency_tracker.evaluate('blue', blue)
     self.assertEqual(len(dependency_tracker.resources), 2)
     self.assertTrue("blue" in dependency_tracker.resources)
     self.assertTrue("green" in dependency_tracker.resources)
     self.assertItemsEqual(dependency_tracker.resources["green"],
                           ["fake-green-uuid-2", "fake-green-uuid-3"])
     self.assertEqual(dependency_tracker.resources["blue"],
                      ["fake-blue-uuid"])
     RedSM.delete("fake-red-uuid")
     GreenSM.delete("fake-green-uuid-2")
     GreenSM.delete("fake-green-uuid-3")
     BlueSM.delete("fake-blue-uuid")
     WhiteSM.delete("fake-white-uuid")
     PurpleSM.delete("fake-purple-uuid")
示例#2
0
    def test_basic_dep_track_update_1(self):
        reaction_map = {
            "red": {
                'self': ['green', 'blue'],
            },
            "blue": {
                'self': ['green'],
                'red': ['blue'],
                'purple': ['green'],
                'green': [],
            },
            "green": {
                'self': ['white'],
                'blue': ['white'],
                'red': ['blue'],
            },
            "white": {
                'self': ['purple'],
                'green': ['purple'],
            },
            "purple": {
                'self': ['blue'],
                'white': ['blue'],
            },
        }
        GreenSM._object_db.object_read = self.green_read_with_refs
        WhiteSM._object_db.object_read = self.white_read_with_refs
        BlueSM._object_db.object_read = self.purple_read_with_multi_refs
        BlueSM._object_db.object_read = self.blue_read_with_multi_refs
        dependency_tracker = DependencyTracker(DBBase._OBJ_TYPE_MAP, reaction_map)
        red = RedSM.locate("fake-red-uuid")
        blue = BlueSM.locate("fake-blue-uuid")
        green = GreenSM.locate("fake-green-uuid-0")
        GreenSM.locate("fake-green-uuid-1")
        white = WhiteSM.locate("fake-white-uuid")
        purple = PurpleSM.locate("fake-purple-uuid")
        dependency_tracker.evaluate('red', red)
        GreenSM.delete("fake-green-uuid-0")
        GreenSM.delete("fake-green-uuid-1")

        GreenSM.locate("fake-green-uuid-2")
        GreenSM.locate("fake-green-uuid-3")
        BlueSM._object_db.object_read = self.blue_read_with_new_refs
        blue.update()
        dependency_tracker.resources = {}
        dependency_tracker.evaluate('red', red)
        self.assertEqual(len(dependency_tracker.resources), 3)
        self.assertTrue("blue" in dependency_tracker.resources)
        self.assertTrue("green" in dependency_tracker.resources)
        self.assertTrue("red" in dependency_tracker.resources)
        self.assertEqual(set(dependency_tracker.resources["green"]), set(["fake-green-uuid-2", "fake-green-uuid-3"]))
        self.assertEqual(dependency_tracker.resources["blue"], ["fake-blue-uuid"])
        self.assertEqual(dependency_tracker.resources["red"], ["fake-red-uuid"])
        RedSM.delete("fake-red-uuid")
        GreenSM.delete("fake-green-uuid-2")
        GreenSM.delete("fake-green-uuid-3")
        BlueSM.delete("fake-blue-uuid")
        WhiteSM.delete("fake-white-uuid")
        PurpleSM.delete("fake-purple-uuid")