def test_sum_agg(self):
        print "*** Running test_sum_agg ***"

        uvevn = MakeUVEVirtualNetwork(
            None, "abc-corp:vn-00", "10.10.10.10",
            total_virtual_machines = 4
            )

        uvevn2 = MakeUVEVirtualNetwork(
            uvevn, "abc-corp:vn-00", "10.10.10.11",
            total_virtual_machines = 7 
            )

        uvetest = MakeUVEVirtualNetwork(
            None, "abc-corp:vn-00", "10.10.10.10",
            total_virtual_machines = 11
            )

        pa = ParallelAggregator(uvevn2)
        res = pa.aggregate("abc-corp:vn-00",False)

        print json.dumps(res, indent = 4, sort_keys = True)
        
        cnt1 = uvetest["abc-corp:vn-00"]['UVEVirtualNetwork']['total_virtual_machines']["10.10.10.10"]
        self.assertEqual(cnt1,res['UVEVirtualNetwork']['total_virtual_machines'])
    def test_counter_agg(self):
        print "*** Running test_counter_agg ***"

        uvevn = MakeUVEVirtualNetwork(
            None, "abc-corp:vn-00", "previous",
            in_tpkts = 4
            )

        uvevn2 = MakeUVEVirtualNetwork(
            uvevn, "abc-corp:vn-00", "10.10.10.11",
            in_tpkts = 7 
            )

        uvevn3 = UVEServer.merge_previous(uvevn2, "abc-corp:vn-00", "UVEVirtualNetwork",
            "in_tpkts",
            uvevn["abc-corp:vn-00"]['UVEVirtualNetwork']['in_tpkts']["previous"])

        pa = ParallelAggregator(uvevn3)
        res = pa.aggregate("abc-corp:vn-00", False)
        print json.dumps(res, indent = 4, sort_keys = True)

        uvetest = MakeUVEVirtualNetwork(
            None, "abc-corp:vn-00", "sample",
            in_tpkts = 15
            ) 
        in_tpkts = uvetest["abc-corp:vn-00"]['UVEVirtualNetwork']['in_tpkts']["sample"] 

        self.assertEqual(in_tpkts,res['UVEVirtualNetwork']['in_tpkts'])
    def test_default_agg(self):
        print "*** Running test_default_agg ***"

        uvevn = MakeUVEVirtualNetwork(
            None, "abc-corp:vn-00", "10.10.10.10",
            attached_policies = [("100", "allow-some"), ("200", "deny-others")],
            total_acl_rules = 4
            )

        uvevn2 = MakeUVEVirtualNetwork(
            uvevn, "abc-corp:vn-00", "10.10.10.11",
            attached_policies = [("100", "allow-some"), ("200", "deny-others")],
            total_acl_rules = 5
            )

        pa = ParallelAggregator(uvevn2)
        res = pa.aggregate("abc-corp:vn-00", False)

        attached_policies = \
            uvevn["abc-corp:vn-00"]['UVEVirtualNetwork']['attached_policies']["10.10.10.10"]
        self.assertEqual(attached_policies,
            res['UVEVirtualNetwork']['attached_policies'][0][0])
        self.assertEqual(sorted(["10.10.10.10","10.10.10.11"]),
            sorted(res['UVEVirtualNetwork']['attached_policies'][0][1:]))

        acl1 = uvevn["abc-corp:vn-00"]['UVEVirtualNetwork']['total_acl_rules']["10.10.10.10"]
        acl2 = uvevn2["abc-corp:vn-00"]['UVEVirtualNetwork']['total_acl_rules']["10.10.10.11"] 
        self.assertEqual(sorted([acl1,acl2]),
            sorted([res['UVEVirtualNetwork']['total_acl_rules'][0][0],
                res['UVEVirtualNetwork']['total_acl_rules'][1][0]]))
        self.assertEqual(sorted(["10.10.10.10","10.10.10.11"]),
            sorted([res['UVEVirtualNetwork']['total_acl_rules'][0][1],
                res['UVEVirtualNetwork']['total_acl_rules'][1][1]]))
        print json.dumps(res, indent = 4, sort_keys = True)
    def test_union_agg(self):
        print "*** Running test_union_agg ***"

        uvevn = MakeUVEVirtualNetwork(
            None, "abc-corp:vn-00", "10.10.10.10",
            connected_networks = ["vn-00"],
            ) 

        uvevn2 = MakeUVEVirtualNetwork(
            uvevn, "abc-corp:vn-00", "10.10.10.11",
            connected_networks = ["vn-01","vn-02","vn-03"],
            )

        pa = ParallelAggregator(uvevn2)
        res = pa.aggregate("abc-corp:vn-00", False)

        print json.dumps(res, indent = 4, sort_keys = True)

        for elem in res['UVEVirtualNetwork']['connected_networks']['list']:
            if elem[0] != '@':
                res['UVEVirtualNetwork']['connected_networks']['list'][elem] = \
                    sorted(res['UVEVirtualNetwork']['connected_networks']['list'][elem])

        uvetest = MakeUVEVirtualNetwork(
            None, "abc-corp:vn-00", "10.10.10.11",
            connected_networks = ["vn-00","vn-01","vn-02","vn-03"],
            )

        cn = uvetest["abc-corp:vn-00"]['UVEVirtualNetwork']['connected_networks']["10.10.10.11"]
        self.assertEqual(cn,res['UVEVirtualNetwork']['connected_networks'])
    def test_counter_agg(self):
        print "*** Running test_counter_agg ***"

        uvevn = MakeUVEVirtualNetwork(None,
                                      "abc-corp:vn-00",
                                      "previous",
                                      in_tpkts=4)

        uvevn2 = MakeUVEVirtualNetwork(uvevn,
                                       "abc-corp:vn-00",
                                       "10.10.10.11",
                                       in_tpkts=7)

        uvevn3 = UVEServer.merge_previous(
            uvevn2, "abc-corp:vn-00", "UVEVirtualNetwork", "in_tpkts",
            uvevn["abc-corp:vn-00"]['UVEVirtualNetwork']['in_tpkts']
            ["previous"])

        pa = ParallelAggregator(uvevn3)
        res = pa.aggregate("abc-corp:vn-00", False)
        print json.dumps(res, indent=4, sort_keys=True)

        uvetest = MakeUVEVirtualNetwork(None,
                                        "abc-corp:vn-00",
                                        "sample",
                                        in_tpkts=15)
        in_tpkts = uvetest["abc-corp:vn-00"]['UVEVirtualNetwork']['in_tpkts'][
            "sample"]

        self.assertEqual(in_tpkts, res['UVEVirtualNetwork']['in_tpkts'])
    def test_sum_agg(self):
        print "*** Running test_sum_agg ***"

        uvevn = MakeUVEVirtualNetwork(None,
                                      "abc-corp:vn-00",
                                      "10.10.10.10",
                                      total_virtual_machines=4)

        uvevn2 = MakeUVEVirtualNetwork(uvevn,
                                       "abc-corp:vn-00",
                                       "10.10.10.11",
                                       total_virtual_machines=7)

        uvetest = MakeUVEVirtualNetwork(None,
                                        "abc-corp:vn-00",
                                        "10.10.10.10",
                                        total_virtual_machines=11)

        pa = ParallelAggregator(uvevn2)
        res = pa.aggregate("abc-corp:vn-00", False)

        print json.dumps(res, indent=4, sort_keys=True)

        cnt1 = uvetest["abc-corp:vn-00"]['UVEVirtualNetwork'][
            'total_virtual_machines']["10.10.10.10"]
        self.assertEqual(cnt1,
                         res['UVEVirtualNetwork']['total_virtual_machines'])
    def test_simple(self):
        print "*** Running test_simple ***"

        uvevn = MakeUVEVirtualNetwork(
            None, "abc-corp:vn-00", "10.10.10.10",
            attached_policies = [("100", "allow-some"), ("200", "deny-others")],
            connected_networks = ["vn-01","vn-02","vn-03"],
            in_stats = [("vn-01", "1000"),("vn-02", "1800")],
            )
        pa = ParallelAggregator(uvevn)
        res = pa.aggregate("abc-corp:vn-00", False)
        print json.dumps(res, indent = 4, sort_keys = True)
    def test_simple(self):
        print "*** Running test_simple ***"

        uvevn = MakeUVEVirtualNetwork(
            None,
            "abc-corp:vn-00",
            "10.10.10.10",
            attached_policies=[("100", "allow-some"), ("200", "deny-others")],
            connected_networks=["vn-01", "vn-02", "vn-03"],
            in_stats=[("vn-01", "1000"), ("vn-02", "1800")],
        )
        pa = ParallelAggregator(uvevn)
        res = pa.aggregate("abc-corp:vn-00", False)
        print json.dumps(res, indent=4, sort_keys=True)
    def test_append_agg(self):
        print "*** Running test_append_agg ***"

        uvevn = MakeUVEVirtualNetwork(
            None,
            "abc-corp:vn-00",
            "previous",
            in_stats=[("vn-01", "1000"), ("vn-02", "1800")],
        )

        uvevn2 = MakeUVEVirtualNetwork(
            uvevn,
            "abc-corp:vn-00",
            "10.10.10.11",
            in_stats=[("vn-02", "1200"), ("vn-03", "1500")],
        )

        uveprev = MakeUVEVirtualNetwork(
            None,
            "abc-corp:vn-00",
            "10.10.10.10",
            in_stats=[("vn-01", "1000"), ("vn-03", "1700")],
        )

        uvevn3 = UVEServer.merge_previous(
            uvevn2, "abc-corp:vn-00", "UVEVirtualNetwork", "in_stats",
            uveprev["abc-corp:vn-00"]['UVEVirtualNetwork']['in_stats']
            ["10.10.10.10"])

        pa = ParallelAggregator(uvevn3)
        res = pa.aggregate("abc-corp:vn-00", False)
        print json.dumps(res, indent=4, sort_keys=True)

        res['UVEVirtualNetwork']['in_stats']["list"]["VnStats"]= \
            sorted(res['UVEVirtualNetwork']['in_stats']["list"]["VnStats"])

        uvetest = MakeUVEVirtualNetwork(
            None,
            "abc-corp:vn-00",
            "sample",
            in_stats=[("vn-01", "2000"), ("vn-02", "3000"), ("vn-03", "3200")],
        )

        uvetest["abc-corp:vn-00"]["UVEVirtualNetwork"]["in_stats"]["sample"]["list"]["VnStats"] = \
            sorted(uvetest["abc-corp:vn-00"]["UVEVirtualNetwork"]["in_stats"]["sample"]["list"]["VnStats"])

        in_stats = uvetest["abc-corp:vn-00"]["UVEVirtualNetwork"]["in_stats"][
            "sample"]
        self.assertEqual(in_stats, res['UVEVirtualNetwork']['in_stats'])
    def test_default_agg(self):
        print "*** Running test_default_agg ***"

        uvevn = MakeUVEVirtualNetwork(None,
                                      "abc-corp:vn-00",
                                      "10.10.10.10",
                                      attached_policies=[("100", "allow-some"),
                                                         ("200", "deny-others")
                                                         ],
                                      total_acl_rules=4)

        uvevn2 = MakeUVEVirtualNetwork(uvevn,
                                       "abc-corp:vn-00",
                                       "10.10.10.11",
                                       attached_policies=[
                                           ("100", "allow-some"),
                                           ("200", "deny-others")
                                       ],
                                       total_acl_rules=5)

        pa = ParallelAggregator(uvevn2)
        res = pa.aggregate("abc-corp:vn-00", False)

        attached_policies = \
            uvevn["abc-corp:vn-00"]['UVEVirtualNetwork']['attached_policies']["10.10.10.10"]
        self.assertEqual(attached_policies,
                         res['UVEVirtualNetwork']['attached_policies'][0][0])
        self.assertEqual(
            sorted(["10.10.10.10", "10.10.10.11"]),
            sorted(res['UVEVirtualNetwork']['attached_policies'][0][1:]))

        acl1 = uvevn["abc-corp:vn-00"]['UVEVirtualNetwork']['total_acl_rules'][
            "10.10.10.10"]
        acl2 = uvevn2["abc-corp:vn-00"]['UVEVirtualNetwork'][
            'total_acl_rules']["10.10.10.11"]
        self.assertEqual(
            sorted([acl1, acl2]),
            sorted([
                res['UVEVirtualNetwork']['total_acl_rules'][0][0],
                res['UVEVirtualNetwork']['total_acl_rules'][1][0]
            ]))
        self.assertEqual(
            sorted(["10.10.10.10", "10.10.10.11"]),
            sorted([
                res['UVEVirtualNetwork']['total_acl_rules'][0][1],
                res['UVEVirtualNetwork']['total_acl_rules'][1][1]
            ]))
        print json.dumps(res, indent=4, sort_keys=True)
    def test_append_agg(self):
        print "*** Running test_append_agg ***"
        
        uvevn = MakeUVEVirtualNetwork(
            None, "abc-corp:vn-00", "previous",
            in_stats = [("vn-01", "1000"),("vn-02", "1800")],
            )

        uvevn2 = MakeUVEVirtualNetwork(
            uvevn, "abc-corp:vn-00", "10.10.10.11",
            in_stats = [("vn-02", "1200"),("vn-03", "1500")],
            )

        uveprev = MakeUVEVirtualNetwork(
            None,  "abc-corp:vn-00", "10.10.10.10",
            in_stats = [("vn-01", "1000"),("vn-03", "1700")],
            )

        uvevn3 = UVEServer.merge_previous(uvevn2, "abc-corp:vn-00", "UVEVirtualNetwork",
            "in_stats",
            uveprev["abc-corp:vn-00"]['UVEVirtualNetwork']['in_stats']["10.10.10.10"])

        pa = ParallelAggregator(uvevn3)
        res = pa.aggregate("abc-corp:vn-00", False)
        print json.dumps(res, indent = 4, sort_keys = True)

        res['UVEVirtualNetwork']['in_stats']["list"]["VnStats"]= \
            sorted(res['UVEVirtualNetwork']['in_stats']["list"]["VnStats"])

        uvetest = MakeUVEVirtualNetwork(
            None,  "abc-corp:vn-00", "sample",
            in_stats = [("vn-01", "2000"),("vn-02", "3000"),("vn-03", "3200")],
            )
            
        uvetest["abc-corp:vn-00"]["UVEVirtualNetwork"]["in_stats"]["sample"]["list"]["VnStats"] = \
            sorted(uvetest["abc-corp:vn-00"]["UVEVirtualNetwork"]["in_stats"]["sample"]["list"]["VnStats"])

        in_stats = uvetest["abc-corp:vn-00"]["UVEVirtualNetwork"]["in_stats"]["sample"]
        self.assertEqual(in_stats, res['UVEVirtualNetwork']['in_stats'])
    def test_union_agg(self):
        print "*** Running test_union_agg ***"

        uvevn = MakeUVEVirtualNetwork(
            None,
            "abc-corp:vn-00",
            "10.10.10.10",
            connected_networks=["vn-00"],
        )

        uvevn2 = MakeUVEVirtualNetwork(
            uvevn,
            "abc-corp:vn-00",
            "10.10.10.11",
            connected_networks=["vn-01", "vn-02", "vn-03"],
        )

        pa = ParallelAggregator(uvevn2)
        res = pa.aggregate("abc-corp:vn-00", False)

        print json.dumps(res, indent=4, sort_keys=True)

        for elem in res['UVEVirtualNetwork']['connected_networks']['list']:
            if elem[0] != '@':
                res['UVEVirtualNetwork']['connected_networks']['list'][elem] = \
                    sorted(res['UVEVirtualNetwork']['connected_networks']['list'][elem])

        uvetest = MakeUVEVirtualNetwork(
            None,
            "abc-corp:vn-00",
            "10.10.10.11",
            connected_networks=["vn-00", "vn-01", "vn-02", "vn-03"],
        )

        cn = uvetest["abc-corp:vn-00"]['UVEVirtualNetwork'][
            'connected_networks']["10.10.10.11"]
        self.assertEqual(cn, res['UVEVirtualNetwork']['connected_networks'])