コード例 #1
0
 def test_dataframe_apply_projections_cache(self):
     Car, CarForPedestrian, cars = CreateProjectionTypesAndObjects()
     df = dataframe()
     df.add_types([Car, CarForPedestrian])
     df_cache = dataframe(mode = DataframeModes.ApplicationCache)
     df_cache.add_type(CarForPedestrian)
     df_cache.start_recording = True
     df.connect(df_cache)
     df.apply_all(update_json10)
     self.assertTrue(len(df.get(Car)) == 2)
     self.assertTrue(len(df.get(CarForPedestrian)) == 2)
     #print json.dumps(df_cache.get_record(), sort_keys = True, separators = (',', ': '), indent = 4) 
     self.assertTrue(df_cache.get_record() == resp_json10)
コード例 #2
0
 def test_dataframe_apply_between_master_slaves1(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df_m = dataframe()
     df_s = dataframe(mode = DataframeModes.ApplicationCache)
     df_m.add_types([Car, ActiveCar, RedActiveCar])
     df_s.add_types([Car, ActiveCar, RedActiveCar])
     df_m.connect(df_s)
     df_s.start_recording = True
     df_m.apply_all(update_json1)
     self.assertTrue(df_s.get_record()["gc"] == update_json1["gc"])
     self.assertTrue(df_s.get(Car) == df_m.get(Car))
     self.assertTrue(df_s.get(ActiveCar) == df_m.get(ActiveCar))
     self.assertTrue(df_s.get(RedActiveCar) == df_m.get(RedActiveCar))
コード例 #3
0
 def test_dataframe_transfer_changes4(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df1 = dataframe()
     df1.add_types([Car, ActiveCar, RedActiveCar])
     df1.extend(Car, cars)
     df2 = dataframe()
     df2.add_types([Car, ActiveCar, RedActiveCar])
     df2.extend(Car, cars) # Linked by reference
     
     df1.start_recording = True
     df2.start_recording = True
     for c in df1.get(Car):
         c.velocity += 1
     self.assertTrue(df1.get_record() == df2.get_record())
コード例 #4
0
 def test_dataframe_transfer_changes4(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df1 = dataframe()
     df1.add_types([Car, ActiveCar, RedActiveCar])
     df1.extend(Car, cars)
     df2 = dataframe()
     df2.add_types([Car, ActiveCar, RedActiveCar])
     df2.extend(Car, cars) # Linked by reference
     
     df1.start_recording = True
     df2.start_recording = True
     for c in df1.get(Car):
         c.velocity += 1
     self.assertTrue(df1.get_record() != df2.get_record())
コード例 #5
0
 def test_dataframe_apply_between_master_slaves1(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df_m = dataframe()
     df_m.add_types([Car, ActiveCar, RedActiveCar])
     df_s = ApplicationQueue("df_s", [Car, ActiveCar, RedActiveCar], df_m)
     df_m.apply_changes(update_json1)
     self.assertTrue(df_s.get_record()["gc"] == update_json1["gc"])
コード例 #6
0
ファイル: obj_dataframe_tests.py プロジェクト: Mondego/pcc
    def test_cyclic_reference_serialize(self):
        class B(object):
            def __init__(self, c):
                self.c = c
        class C(object):
            def __init__(self):
                self.b = None
        @pcc_set
        class A(object):
            @primarykey(str)
            def ID(self): return self._id
            @ID.setter
            def ID(self, v): self._id = v
            @dimension(B)
            def b(self): return self._b
            @b.setter
            def b(self, v): self._b = v
            def __init__(self): self.ID = "hi"

        a = A()
        c = C()
        b = B(c)
        c.b = b
        a.b = b
        df = dataframe()
        df.add_type(A)
        df.start_recording = True
        with self.assertRaises(RuntimeError) as assR:
            df.append(A, a)
コード例 #7
0
    def test_dataframe_high_volume(self):
        Car, ActiveCar, RedActiveCar, cars = create_cars()
        cars = [Car(str(i), i%5, ["RED", "BLUE", "GREEN", "YELLOW"][i%4]) for i in xrange(1000)]

        df = dataframe()
        df.add_types([Car, ActiveCar, RedActiveCar])
        df.start_recording = True
        df.extend(Car, cars)
        df_c = dataframe_client()
        df_c.add_types([Car, ActiveCar, RedActiveCar])
        df_c.apply_changes(df.get_record())
        df.clear_record()
        self.assertTrue(len(df_c.get(Car)) == 1000)
        self.assertTrue(len(df_c.get(ActiveCar)) == 800)
        self.assertTrue(len(df_c.get(RedActiveCar)) == 200)
        i = 0
        for c in df.get(Car):
            c.velocity = i % 3
            i += 1
        values = df.get_record()
        df_c.apply_changes(values)
        self.assertTrue(len(df_c.get(Car)) == 1000)
        self.assertTrue(len(df_c.get(ActiveCar)) == 666)
        self.assertTrue(len(df_c.get(RedActiveCar)) == 157)
        
        
        
コード例 #8
0
 def test_dataframe_apply_all_new(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe()
     df.add_types([Car, ActiveCar, RedActiveCar])
     df.apply_all(update_json1)
     self.assertTrue(len(df.get(Car)) == 4)
     self.assertTrue(len(df.get(ActiveCar)) == 2)
     self.assertTrue(len(df.get(RedActiveCar)) == 1)
コード例 #9
0
 def test_dataframe_apply_all_new_full_objs(self):
     Car, InactiveCar, ActiveCar = create_complex_cartypes()
     df = dataframe()
     df.add_types([Car, ActiveCar, InactiveCar])
     df.apply_changes(update_json9)
     self.assertTrue(len(df.get(Car)) == 2)
     self.assertTrue(len(df.get(InactiveCar)) == 2)
     self.assertTrue(len(df.get(ActiveCar)) == 0)
コード例 #10
0
 def test_dataframe_apply_to_client2(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe(mode = DataframeModes.Client)
     df.add_types([Car, ActiveCar, RedActiveCar])
     df.apply_all(update_json1)
     self.assertTrue(len(df.get(Car)) == 4)
     self.assertTrue(len(df.get(ActiveCar)) == 2)
     self.assertTrue(len(df.get(RedActiveCar)) == 1)
コード例 #11
0
 def test_dataframe_apply_all_new_full_objs(self):
     Car, InactiveCar, ActiveCar = create_complex_cartypes()
     df = dataframe()
     df.add_types([Car, ActiveCar, InactiveCar])
     df.apply_all(update_json9)
     self.assertTrue(len(df.get(Car)) == 2)
     self.assertTrue(len(df.get(InactiveCar)) == 2)
     self.assertTrue(len(df.get(ActiveCar)) == 0)
コード例 #12
0
 def test_dataframe_get_join(self):
     Person, Card, Transaction, RedAlert, people, cards, trans = _join_example_data()
     df = dataframe()
     df.add_types([Person, Card, Transaction, RedAlert])
     df.extend(Person, people)
     df.extend(Card, cards)
     df.extend(Transaction, trans)
     df.start_recording = True
     df_c = dataframe(mode = DataframeModes.Client)
     df_c.add_types([Person, Card, Transaction, RedAlert])
     df_c.extend(Person, people)
     df_c.extend(Card, cards)
     df_c.extend(Transaction, trans)
     df_c.apply_all(df.get_record())
     self.assertTrue(len(df_c.get(RedAlert)) == 1)
     
     
コード例 #13
0
 def test_dataframe_apply_all_new(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe()
     df.add_types([Car, ActiveCar, RedActiveCar])
     df.apply_changes(update_json1)
     self.assertTrue(len(df.get(Car)) == 4)
     self.assertTrue(len(df.get(ActiveCar)) == 2)
     self.assertTrue(len(df.get(RedActiveCar)) == 1)
コード例 #14
0
    def test_multi_level_subset_get(self):
        @pcc_set
        class Car(object):
            @primarykey(str)
            def oid(self):
                return self._id

            @oid.setter
            def oid(self, value):
                self._id = value

            @dimension(int)
            def velocity(self):
                return self._velocity

            @velocity.setter
            def velocity(self, value):
                self._velocity = value

            @dimension(str)
            def color(self):
                return self._color

            @color.setter
            def color(self, value):
                self._color = value

            def __init__(self, vel, col):
                self.velocity = vel
                self.color = col

        @subset(Car)
        class ActiveCar(Car):
            @staticmethod
            def __predicate__(c):
                return c.velocity != 0

        @subset(ActiveCar)
        class RedActiveCar(Car):
            @staticmethod
            def __predicate__(ac):
                return ac.color == "RED"

        cars = [
            Car(0, "BLUE"),
            Car(0, "RED"),
            Car(1, "GREEN"),
            Car(1, "RED"),
            Car(2, "RED")
        ]
        df = dataframe()
        df.add_types([Car, ActiveCar, RedActiveCar])
        df.extend(Car, cars)
        self.assertTrue(len(df.get(RedActiveCar)) == 2)
        self.assertTrue(len(df.get(ActiveCar)) == 3)
        df.get(RedActiveCar)[0].velocity = 0
        self.assertTrue(len(df.get(RedActiveCar)) == 1)
        self.assertTrue(len(df.get(ActiveCar)) == 2)
コード例 #15
0
 def test_dataframe_apply_between_master_slaves3(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df_m = dataframe()
     df_m.add_types([Car, ActiveCar, RedActiveCar])
     df_s = ApplicationQueue("df_s", [ActiveCar, RedActiveCar], df_m)
     df_m.apply_changes(update_json8)
     #print json.dumps(df_s.get_record(), sort_keys = True, separators = (',', ': '), indent = 4) 
     self.assertTrue(df_s.get_record() == resp_json1)
     self.assertTrue(len(df_m.get(Car)) == 4)
コード例 #16
0
 def test_dataframe_apply_with_normal_objects(self):
     Car = create_cars_withobjects()
     df = dataframe()
     df.add_types([Car])
     df.apply_changes(update_json7)
     self.assertTrue(len(df.get(Car)) == 1)
     c = df.get(Car)[0]
     self.assertTrue(c.velocity.x == 10 and c.velocity.y == 10 and c.velocity.z == 10)
     self.assertTrue(c.color == ["BLUE"])
コード例 #17
0
 def test_dataframe_apply_mod1(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe()
     df.add_types([Car, ActiveCar, RedActiveCar])
     df.extend(Car, cars)
     
     df.apply_all(update_json2)
     self.assertTrue(len(df.get(Car)) == 5)
     self.assertTrue(df.object_map["Car"]["id2"].color == "GREEN")  
コード例 #18
0
 def test_dataframe_apply_mod1(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe()
     df.add_types([Car, ActiveCar, RedActiveCar])
     df.extend(Car, cars)
     
     df.apply_changes(update_json2)
     self.assertTrue(len(df.get(Car)) == 5)
     self.assertTrue(df.object_manager.object_map["Car"]["id2"].color == "GREEN")  
コード例 #19
0
 def test_dataframe_apply_with_normal_objects(self):
     Car = create_cars_withobjects()
     df = dataframe()
     df.add_types([Car])
     df.apply_all(update_json7)
     self.assertTrue(len(df.get(Car)) == 1)
     c = df.get(Car)[0]
     self.assertTrue(c.velocity.x == 10 and c.velocity.y == 10 and c.velocity.z == 10)
     self.assertTrue(c.color == ["BLUE"])
コード例 #20
0
 def test_dataframe_apply_projections(self):
     Car, CarForPedestrian, cars = CreateProjectionTypesAndObjects()
     df = dataframe()
     df.add_types([Car, CarForPedestrian])
     df.apply_changes(update_json10)
     self.assertTrue(len(df.get(Car)) == 2)
     self.assertTrue(len(df.get(CarForPedestrian)) == 2)
     for c in df.get(CarForPedestrian):
         self.assertFalse(hasattr(c, "owner"))
         self.assertTrue(hasattr(c, "location"))
コード例 #21
0
 def test_base_set_addition(self):
     Node, Edge, nodes, edges = _CreateNodesAndEdges()
     df = dataframe()
     df.add_types([Node, Edge])
     df.extend(Node, nodes)
     df.extend(Edge, edges)
     new_nodes = df.get(Node)
     new_edges = df.get(Edge)
     self.failUnless(len(new_nodes) == 4)
     self.failUnless(len(new_edges) == 5)
コード例 #22
0
ファイル: obj_dataframe_tests.py プロジェクト: Mondego/pcc
 def test_base_set_addition(self):
     Node, Edge, nodes, edges = _CreateNodesAndEdges()
     df = dataframe()
     df.add_types([Node, Edge])
     df.extend(Node, nodes)
     df.extend(Edge, edges)
     new_nodes = df.get(Node)
     new_edges = df.get(Edge)
     self.failUnless(len(new_nodes) == 4)
     self.failUnless(len(new_edges) == 5)
コード例 #23
0
 def test_dataframe_apply_between_master_slaves3(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df_m = dataframe()
     df_s = dataframe(mode = DataframeModes.ApplicationCache)
     df_m.add_types([Car, ActiveCar, RedActiveCar])
     df_s.add_types([ActiveCar, RedActiveCar])
     df_m.connect(df_s)
     df_s.start_recording = True
     df_m.apply_all(update_json8)
     #print json.dumps(df_s.get_record(), sort_keys = True, separators = (',', ': '), indent = 4) 
     self.assertTrue(df_s.get_record() == resp_json1)
     try:
         df_s.get(Car)
         self.fail("Didn't catch exception at previous line")
     except TypeError:
         self.assertTrue(True)
     self.assertTrue(len(df_m.get(Car)) == 4)
     self.assertTrue(df_s.get(ActiveCar) == df_m.get(ActiveCar))
     self.assertTrue(df_s.get(RedActiveCar) == df_m.get(RedActiveCar))
コード例 #24
0
 def test_dataframe_apply_projections(self):
     Car, CarForPedestrian, cars = CreateProjectionTypesAndObjects()
     df = dataframe()
     df.add_types([Car, CarForPedestrian])
     df.apply_all(update_json10)
     self.assertTrue(len(df.get(Car)) == 2)
     self.assertTrue(len(df.get(CarForPedestrian)) == 2)
     for c in df.get(CarForPedestrian):
         self.assertFalse(hasattr(c, "owner"))
         self.assertTrue(hasattr(c, "location"))
コード例 #25
0
 def test_dataframe_transfer_changes3(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df1 = dataframe()
     df1.add_types([Car, ActiveCar, RedActiveCar])
     df1.extend(Car, cars)
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df2 = dataframe()
     df2.add_types([Car, ActiveCar, RedActiveCar])
     df2.extend(Car, cars) # So they are not linked by reference.
     #print len(df1.get(ActiveCar)), len(df2.get(ActiveCar))
     
     df1.start_recording = True
     for c in df1.get(Car):
         c.velocity += 1
     self.assertFalse(len(df1.get(ActiveCar)) == len(df2.get(ActiveCar)))
     #print len(df1.get(ActiveCar)), len(df2.get(ActiveCar))
     df2.apply_all(df1.get_record())
     #print len(df1.get(ActiveCar)), len(df2.get(ActiveCar))
     self.assertTrue(len(df1.get(ActiveCar)) == len(df2.get(ActiveCar)))
コード例 #26
0
 def test_dataframe_apply_projections_cache(self):
     Car, CarForPedestrian, cars = CreateProjectionTypesAndObjects()
     df = dataframe()
     df.add_types([Car, CarForPedestrian])
     df_cache = ApplicationQueue("cache", [CarForPedestrian], df)
     df.apply_changes(update_json10)
     self.assertTrue(len(df.get(Car)) == 2)
     self.assertTrue(len(df.get(CarForPedestrian)) == 2)
     record = df_cache.get_record()
     #print json.dumps(record, sort_keys = True, separators = (',', ': '), indent = 4) 
     self.assertTrue(record == resp_json10)
コード例 #27
0
 def test_dataframe_transfer_changes3(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df1 = dataframe()
     df1.add_types([Car, ActiveCar, RedActiveCar])
     df1.extend(Car, cars)
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df2 = dataframe()
     df2.add_types([Car, ActiveCar, RedActiveCar])
     df2.extend(Car, cars) # So they are not linked by reference.
     #print len(df1.get(ActiveCar)), len(df2.get(ActiveCar))
     
     df1.start_recording = True
     for c in df1.get(Car):
         c.velocity += 1
     self.assertFalse(len(df1.get(ActiveCar)) == len(df2.get(ActiveCar)))
     #print len(df1.get(ActiveCar)), len(df2.get(ActiveCar))
     x = df1.get_record()
     df2.apply_changes(x)
     #print len(df1.get(ActiveCar)), len(df2.get(ActiveCar))
     self.assertTrue(len(df1.get(ActiveCar)) == len(df2.get(ActiveCar)))
コード例 #28
0
ファイル: obj_dataframe_tests.py プロジェクト: Mondego/pcc
 def test_parameter_supplied(self):
     Node, Edge, nodes, edges = _CreateNodesAndEdges()
     InEdge, OutEdge = _CreateInAndOutEdgeTypes(Edge, Node)
     df = dataframe()
     df.add_types([Node, Edge, InEdge, OutEdge])
     df.extend(Node, nodes)
     df.extend(Edge, edges)
     self.assertTrue((OutEdge.__realname__ in df.object_map) == False)
     self.assertTrue((InEdge.__realname__ in df.object_map) == False)
     self.assertTrue(len(df.get(OutEdge, (nodes[0],))) == 3)
     self.assertTrue(isinstance(df.get(OutEdge, (nodes[0],))[0], OutEdge))
     self.assertTrue(len(df.get(InEdge, (nodes[0],))) == 0) 
コード例 #29
0
 def test_dataframe_apply_mod2(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe()
     df.add_types([Car, ActiveCar, RedActiveCar])
     df.extend(Car, cars)
     self.assertTrue(len(df.get(Car)) == 5)
     self.assertTrue(len(df.get(ActiveCar)) == 3)
     self.assertTrue(len(df.get(RedActiveCar)) == 2)
     df.apply_all(update_json3)
     self.assertTrue(len(df.get(Car)) == 5)
     self.assertTrue(len(df.get(ActiveCar)) == 4)
     self.assertTrue(len(df.get(RedActiveCar)) == 3)
コード例 #30
0
 def test_dataframe_apply_serialize_all(self):
     Car, CarForPedestrian, cars = CreateProjectionTypesAndObjects()
     df = dataframe()
     df.add_types([Car, CarForPedestrian])
     df.extend(Car, cars)
     serialized = df.serialize_all()
     self.assertTrue(len(serialized["gc"]) == 1)
     self.assertTrue("Car" in serialized["gc"])
     self.assertTrue(len(serialized["gc"]["Car"]) == 2)
     for oid, obj_c in serialized["gc"]["Car"].items():
         self.assertTrue(len(obj_c["dims"]) == 4)
         self.assertTrue(len(obj_c["types"]) == 2)
コード例 #31
0
 def test_dataframe_apply_mod2(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe()
     df.add_types([Car, ActiveCar, RedActiveCar])
     df.extend(Car, cars)
     self.assertTrue(len(df.get(Car)) == 5)
     self.assertTrue(len(df.get(ActiveCar)) == 3)
     self.assertTrue(len(df.get(RedActiveCar)) == 2)
     df.apply_changes(update_json3)
     self.assertTrue(len(df.get(Car)) == 5)
     self.assertTrue(len(df.get(ActiveCar)) == 4)
     self.assertTrue(len(df.get(RedActiveCar)) == 3)
コード例 #32
0
 def test_dataframe_apply_serialize_all(self):
     Car, CarForPedestrian, cars = CreateProjectionTypesAndObjects()
     df = dataframe()
     df.add_types([Car, CarForPedestrian])
     df.extend(Car, cars)
     serialized = df.serialize_all()
     self.assertTrue(len(serialized["gc"]) == 1)
     self.assertTrue("Car" in serialized["gc"])
     self.assertTrue(len(serialized["gc"]["Car"]) == 2)
     for oid, obj_c in serialized["gc"]["Car"].items():
         self.assertTrue(len(obj_c["dims"]) == 4)
         self.assertTrue(len(obj_c["types"]) == 2)
コード例 #33
0
ファイル: obj_dataframe_tests.py プロジェクト: Mondego/pcc
 def test_projection_get(self):
     Car, CarForPedestrian, cars = _CreateProjectionTypesAndObjects()
     df = dataframe()
     df.add_types([Car, CarForPedestrian])
     df.extend(Car, cars)
     self.assertTrue(len(df.object_map[CarForPedestrian.__realname__]) == 2)
     cars_p = df.get(CarForPedestrian)
     self.assertTrue(len(cars_p) == 2)
     for c in cars_p:
         self.assertTrue(hasattr(c, "location"))
         self.assertTrue(hasattr(c, "velocity"))
         self.assertTrue(hasattr(c, "oid"))
         self.assertFalse(hasattr(c, "owner"))
コード例 #34
0
 def test_dataframe_apply_get_mod(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe()
     df.add_types([Car, ActiveCar, RedActiveCar])
     df.extend(Car, cars)
     df.apply_all(update_json2)
     self.assertTrue(len(df.get_new(Car)) == 0)
     self.assertTrue(len(df.get_mod(Car)) == 1)  
     self.assertTrue(len(df.get_deleted(Car)) == 0)  
     self.assertTrue(len(df.get_new(ActiveCar)) == 0)
     self.assertTrue(len(df.get_new(RedActiveCar)) == 0)
     self.assertTrue(len(df.get_mod(RedActiveCar)) == 0)
     self.assertTrue(len(df.get_deleted(RedActiveCar)) == 0)  
コード例 #35
0
 def test_dataframe_apply_get_mod(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe()
     df.add_types([Car, ActiveCar, RedActiveCar])
     df.extend(Car, cars)
     df.apply_changes(update_json2)
     self.assertTrue(len(df.get_new(Car)) == 0)
     self.assertTrue(len(df.get_mod(Car)) == 1)  
     self.assertTrue(len(df.get_deleted(Car)) == 0)  
     self.assertTrue(len(df.get_new(ActiveCar)) == 0)
     self.assertTrue(len(df.get_new(RedActiveCar)) == 0)
     self.assertTrue(len(df.get_mod(RedActiveCar)) == 0)
     self.assertTrue(len(df.get_deleted(RedActiveCar)) == 0)  
コード例 #36
0
ファイル: obj_dataframe_tests.py プロジェクト: Mondego/pcc
 def test_pure_subset_get(self):
     Transaction, HighValueTransaction, ts = _subset_classes()
     df = dataframe()
     df.add_types([Transaction, HighValueTransaction])
     df.extend(Transaction, ts)
     self.assertTrue(len(df.object_map[HighValueTransaction.__realname__]) == 1)
     hvts = df.get(HighValueTransaction)
     self.assertTrue(len(hvts) == 1)
     for hvt in hvts:
         hvt.flag()
     self.assertTrue(len(df.get(Transaction)) == 3)
     self.assertTrue([t.suspicious for t in df.get(Transaction)].count(False) == 2)
     self.assertTrue([t.suspicious for t in df.get(Transaction)].count(True) == 1)    
コード例 #37
0
ファイル: obj_dataframe_tests.py プロジェクト: Mondego/pcc
 def test_distinct_subset_get(self):
     BaseClass, DistinctSubset, bc_objs = _CreateSubsetWithDistinct()
     df = dataframe()
     df.add_types([BaseClass, DistinctSubset])
     df.extend(BaseClass, bc_objs)
     distinct_subs = df.get(DistinctSubset)
     self.assertTrue(len(distinct_subs) == 2)
     flag = True
     seen = set()
     for d in distinct_subs:
         if d.prop2 in seen:
             flag = False
         else:
             seen.add(d.prop2)
     self.assertTrue(flag)
コード例 #38
0
 def test_distinct_subset_get(self):
     BaseClass, DistinctSubset, bc_objs = _CreateSubsetWithDistinct()
     df = dataframe()
     df.add_types([BaseClass, DistinctSubset])
     df.extend(BaseClass, bc_objs)
     distinct_subs = df.get(DistinctSubset)
     self.assertTrue(len(distinct_subs) == 2)
     flag = True
     seen = set()
     for d in distinct_subs:
         if d.prop2 in seen:
             flag = False
         else:
             seen.add(d.prop2)
     self.assertTrue(flag)
コード例 #39
0
 def test_projection_get(self):
     Car, CarForPedestrian, cars = _CreateProjectionTypesAndObjects()
     df = dataframe()
     df.add_types([Car, CarForPedestrian])
     df.extend(Car, cars)
     self.assertTrue(
         len(df.object_manager.object_map[CarForPedestrian.__realname__]) ==
         2)
     cars_p = df.get(CarForPedestrian)
     self.assertTrue(len(cars_p) == 2)
     for c in cars_p:
         self.assertTrue(hasattr(c, "location"))
         self.assertTrue(hasattr(c, "velocity"))
         self.assertTrue(hasattr(c, "oid"))
         self.assertFalse(hasattr(c, "owner"))
コード例 #40
0
 def test_parameter_supplied(self):
     Node, Edge, nodes, edges = _CreateNodesAndEdges()
     InEdge, OutEdge = _CreateInAndOutEdgeTypes(Edge, Node)
     df = dataframe()
     df.add_types([Node, Edge, InEdge, OutEdge])
     df.extend(Node, nodes)
     df.extend(Edge, edges)
     self.assertTrue(
         len(df.object_manager.object_map[OutEdge.__realname__]) == 0)
     self.assertTrue(
         len(df.object_manager.object_map[InEdge.__realname__]) == 0)
     self.assertTrue(len(df.get(OutEdge, parameters=(nodes[0], ))) == 3)
     self.assertTrue(
         isinstance(df.get(OutEdge, parameters=(nodes[0], ))[0], OutEdge))
     self.assertTrue(len(df.get(InEdge, parameters=(nodes[0], ))) == 0)
コード例 #41
0
ファイル: obj_dataframe_tests.py プロジェクト: Mondego/pcc
 def test_join_get(self):
     Person, Card, Transaction, RedAlert, persons, cards, transactions = _join_example_data()
     df = dataframe()
     df.add_types([Person, Card, Transaction, RedAlert])
     df.extend(Person, persons)
     df.extend(Card, cards)
     df.extend(Transaction, transactions)
     self.assertTrue((RedAlert.__realname__ in df.object_map) == False)
     self.assertTrue(len(df.get(RedAlert)) == 2)
     for ra in df.get(RedAlert):
         ra.Protect()
     self.assertTrue(transactions[2].flagged == True)
     self.assertTrue(transactions[0].flagged == False)
     self.assertTrue(cards[0].holdstate == True)
     self.assertTrue(cards[1].holdstate == False)
コード例 #42
0
 def test_dataframe_apply_no_base(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe()
     df.add_types([ActiveCar, RedActiveCar])
     df.apply_changes(update_json4)
     self.assertTrue(len(df.get(ActiveCar)) == 1)
     self.assertTrue(len(df.get(RedActiveCar)) == 1)
     rac = df.get(RedActiveCar)[0]
     rac.velocity = 5
     ac = df.get(ActiveCar)[0]
     self.assertTrue(ac.velocity == 5)
     try:
         print df.get(Car)
         self.fail()
     except TypeError:
         self.assertTrue(True)
コード例 #43
0
 def test_dataframe_apply_no_base(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe()
     df.add_types([ActiveCar, RedActiveCar])
     df.apply_all(update_json4)
     self.assertTrue(len(df.get(ActiveCar)) == 1)
     self.assertTrue(len(df.get(RedActiveCar)) == 1)
     rac = df.get(RedActiveCar)[0]
     rac.velocity = 5
     ac = df.get(ActiveCar)[0]
     self.assertTrue(ac.velocity == 5)
     try:
         df.get(Car)
         self.fail()
     except TypeError:
         self.assertTrue(True)
コード例 #44
0
 def test_dataframe_get_join(self):
     Person, Card, Transaction, RedAlert, people, cards, trans = _join_example_data()
     df = dataframe()
     df.add_types([Person, Card, Transaction, RedAlert])
     df.extend(Person, people)
     df.extend(Card, cards)
     df.extend(Transaction, trans)
     df.start_recording = True
     df_c = dataframe_client()
     df_c.add_types([Person, Card, Transaction, RedAlert])
     df_c.extend(Person, people)
     df_c.extend(Card, cards)
     df_c.extend(Transaction, trans)
     df_c.apply_changes(df.get_record())
     self.assertTrue(len(df_c.get(RedAlert)) == 0)
     self.assertTrue(len(df.get(RedAlert)) == 1)
コード例 #45
0
 def test_join_get(self):
     Person, Card, Transaction, RedAlert, persons, cards, transactions = _join_example_data(
     )
     df = dataframe()
     df.add_types([Person, Card, Transaction, RedAlert])
     df.extend(Person, persons)
     df.extend(Card, cards)
     df.extend(Transaction, transactions)
     self.assertTrue(
         len(df.object_manager.object_map[RedAlert.__realname__]) == 0)
     self.assertTrue(len(df.get(RedAlert)) == 2)
     for ra in df.get(RedAlert):
         ra.Protect()
     self.assertTrue(transactions[2].flagged == True)
     self.assertTrue(transactions[0].flagged == False)
     self.assertTrue(cards[0].holdstate == True)
     self.assertTrue(cards[1].holdstate == False)
コード例 #46
0
ファイル: obj_dataframe_tests.py プロジェクト: Mondego/pcc
    def test_multi_level_subset_get(self):
        @pcc_set
        class Car(object):
            @primarykey(str)
            def oid(self): return self._id

            @oid.setter
            def oid(self, value): self._id = value

            @dimension(int)
            def velocity(self): return self._velocity

            @velocity.setter
            def velocity(self, value): self._velocity = value

            @dimension(str)
            def color(self): return self._color

            @color.setter
            def color(self, value): self._color = value

            def __init__(self, vel, col):
                self.velocity = vel
                self.color = col

        @subset(Car)
        class ActiveCar(Car):
            @staticmethod
            def __predicate__(c):
                return c.velocity != 0

        @subset(ActiveCar)
        class RedActiveCar(Car):
            @staticmethod
            def __predicate__(ac):
                return ac.color == "RED"

        cars = [Car(0, "BLUE"), Car(0, "RED"), Car(1, "GREEN"), Car(1, "RED"), Car(2, "RED")]
        df = dataframe()
        df.add_types([Car, ActiveCar, RedActiveCar])
        df.extend(Car, cars)
        self.assertTrue(len(df.get(RedActiveCar)) == 2)
        self.assertTrue(len(df.get(ActiveCar)) == 3)
        df.get(RedActiveCar)[0].velocity = 0
        self.assertTrue(len(df.get(RedActiveCar)) == 1)
        self.assertTrue(len(df.get(ActiveCar)) == 2)
コード例 #47
0
 def test_pure_subset_get(self):
     Transaction, HighValueTransaction, ts = _subset_classes()
     df = dataframe()
     df.add_types([Transaction, HighValueTransaction])
     df.extend(Transaction, ts)
     self.assertTrue(
         len(df.object_manager.object_map[
             HighValueTransaction.__realname__]) == 1)
     hvts = df.get(HighValueTransaction)
     self.assertTrue(len(hvts) == 1)
     for hvt in hvts:
         hvt.flag()
     self.assertTrue(len(df.get(Transaction)) == 3)
     self.assertTrue([t.suspicious
                      for t in df.get(Transaction)].count(False) == 2)
     self.assertTrue([t.suspicious
                      for t in df.get(Transaction)].count(True) == 1)
コード例 #48
0
ファイル: frame.py プロジェクト: yiranwang/spacetime
 def __init__(self,
              address="http://127.0.0.1:12000/",
              time_step=500,
              instrument=False,
              profiling=False,
              wire_format="cbor",
              compress=False):
     frame.framelist.add(self)
     self.thread = None
     self.__app = None
     self.__appname = ""
     self.__host_typemap = {}
     self.__host_wire_format = {}
     self.__typemap = {}
     self.__name2type = {}
     self.object_store = dataframe(mode=DataframeModes.Client)
     self.object_store.start_recording = True
     if not address.endswith('/'):
         address += '/'
     self.__address = address
     self.__default_wire_format = wire_format
     self.__compress = compress
     self.__time_step = (float(time_step) / 1000)
     self.__new = {}
     self.__mod = {}
     self.__del = {}
     self.__observed_types = set()
     self.__observed_types_new = set()
     self.__observed_types_mod = set()
     self.__curtime = time.time()
     self.__curstep = 0
     self.__start_time = time.strftime("%Y-%m-%d_%H-%M-%S")
     self.__instrumented = instrument
     self.__profiling = profiling
     self.__sessions = {}
     self.__host_to_push_groupkey = {}
     if instrument:
         self._instruments = {}
         self._instrument_headers = []
         self._instrument_headers.append('bytes sent')
         self._instrument_headers.append('bytes received')
コード例 #49
0
    def test_cyclic_reference_serialize(self):
        class B(object):
            def __init__(self, c):
                self.c = c

        class C(object):
            def __init__(self):
                self.b = None

        @pcc_set
        class A(object):
            @primarykey(str)
            def ID(self):
                return self._id

            @ID.setter
            def ID(self, v):
                self._id = v

            @dimension(B)
            def b(self):
                return self._b

            @b.setter
            def b(self, v):
                self._b = v

            def __init__(self):
                self.ID = "hi"

        a = A()
        c = C()
        b = B(c)
        c.b = b
        a.b = b
        df = dataframe()
        df.add_type(A)
        df.start_recording = True
        with self.assertRaises(RuntimeError) as assR:
            df.append(A, a)
コード例 #50
0
 def test_dataframe_get_changes1(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe()
     df.add_types([Car, ActiveCar, RedActiveCar])
     df.extend(Car, cars)
     df.start_recording = True
     for c in df.get(RedActiveCar):
         c.velocity = 0
     #print json.dumps(df.get_record(), sort_keys = True, separators = (',', ': '), indent = 4) 
     self.assertTrue(df.get_record() == convert_json_to_proto({
         "Car" :{
             "id4" :{
                 "dims" :{
                     "velocity" :{
                         "type" :1,
                         "value" :0
                     }
                 },
                 "types" :{
                     "ActiveCar" :0,
                     "Car" :2,
                     "RedActiveCar" :0
                 }
             },
             "id5" :{
                 "dims" :{
                     "velocity" :{
                         "type" :1,
                         "value" :0
                     }
                 },
                 "types" :{
                     "ActiveCar" :0,
                     "Car" :2,
                     "RedActiveCar" :0
                 }
             }
         }
     }))
コード例 #51
0
 def test_dataframe_get_changes1(self):
     Car, ActiveCar, RedActiveCar, cars = create_cars()
     df = dataframe()
     df.add_types([Car, ActiveCar, RedActiveCar])
     df.extend(Car, cars)
     df.start_recording = True
     for c in df.get(RedActiveCar):
         c.velocity = 0
     #print json.dumps(df.get_record(), sort_keys = True, separators = (',', ': '), indent = 4) 
     self.assertTrue(df.get_record() == convert_json_to_proto({
         "Car" :{
             "id4" :{
                 "dims" :{
                     "velocity" :{
                         "type" :1,
                         "value" :0
                     }
                 },
                 "types" :{
                     "ActiveCar" :0,
                     "Car" :2,
                     "RedActiveCar" :0
                 }
             },
             "id5" :{
                 "dims" :{
                     "velocity" :{
                         "type" :1,
                         "value" :0
                     }
                 },
                 "types" :{
                     "ActiveCar" :0,
                     "Car" :2,
                     "RedActiveCar" :0
                 }
             }
         }
     }))
コード例 #52
0
 def register_app(self, app, type_map, wire_format = "json"):
     self.__pause()
     df = dataframe(mode=DataframeModes.ApplicationCache)
     df.start_recording = True
     types_to_get = set()
     for mode in FETCHING_MODES:
         types_to_get.update(set(type_map.setdefault(mode, set())))
     types_to_track = set()
     for mode in TRACKING_MODES:
         types_to_track.update(set(type_map.setdefault(mode, set())))
     types_to_track = types_to_track.difference(types_to_get)
     real_types_to_get = [self.name2class[tpstr] for tpstr in types_to_get]
     real_types_to_track = [self.name2class[tpstr] for tpstr in types_to_track]
     df.add_types(real_types_to_get)
     self.master_dataframe.add_types(real_types_to_get)
     df.add_types(real_types_to_track, tracking = True)
     self.master_dataframe.add_types(real_types_to_track, tracking = True)
     self.add_new_dataframe(app, df)
     # Add all types to master.
     types_to_add_to_master = set()
     for mode in ALL_MODES:
         types_to_add_to_master.update(set(type_map.setdefault(mode, set())))
     self.master_dataframe.add_types([self.name2class[tpstr] for tpstr in types_to_add_to_master])
     self.app_wire_format[app] = wire_format
コード例 #53
0
 def __init__(self, name2class):
     self.master_dataframe = dataframe()
     self.app_to_df = {}
     self.name2class = name2class
     self.pause_servers = False
     self.app_wire_format = {}
コード例 #54
0
    def test_aggregate_dimension(self):
        @pcc_set
        class Car(object):
            @primarykey(str)
            def oid(self):
                return self._id

            @oid.setter
            def oid(self, value):
                self._id = value

            @dimension(int)
            def velocity(self):
                return self._velocity

            @velocity.setter
            def velocity(self, value):
                self._velocity = value

            @dimension(str)
            def color(self):
                return self._color

            @color.setter
            def color(self, value):
                self._color = value

            def __init__(self, vel, col):
                self.velocity = vel
                self.color = col

        @subset(Car)
        class ActiveCarCountByColor(object):
            __group_by__ = Car.color

            @count(Car.oid)
            def total_count(self):
                return self._tc

            @total_count.setter
            def total_count(self, v):
                self._tc = v

            @staticmethod
            def __predicate__(c):
                return c.velocity != 0

        cars = [
            Car(0, "RED"),
            Car(1, "RED"),
            Car(2, "RED"),
            Car(2, "BLUE"),
            Car(0, "BLUE")
        ]
        df = dataframe()
        df.add_types([Car, ActiveCarCountByColor])
        df.extend(Car, cars)
        car_by_count = df.get(ActiveCarCountByColor)
        self.assertTrue(len(car_by_count) == 2)
        for c in car_by_count:
            if c.__group_by__ == "RED":
                self.assertTrue(c.total_count == 2)
            if c.__group_by__ == "BLUE":
                self.assertTrue(c.total_count == 1)