Skip to content

Commit

Permalink
Merge "Adding support to sum structs in UVE Aggregation. Also removin…
Browse files Browse the repository at this point in the history
…g the counter aggregation, which is not used or supported. Closes-Bug:1621271" into R3.1
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Sep 19, 2016
2 parents c00025d + d2fa7e9 commit 3247128
Show file tree
Hide file tree
Showing 5 changed files with 119 additions and 112 deletions.
2 changes: 1 addition & 1 deletion src/analytics/analytics.sandesh
Expand Up @@ -130,7 +130,7 @@ struct UserDefinedLogStatistic {
1: string name (key="UserDefinedLogStatTable")
2: optional bool deleted
3: optional u64 rx_event (hidden="yes")
4: optional uint64_t_P_ count (stats="rx_event:DSSum:", tags="")
4: optional uint64_t_P_ count (stats="rx_event:DSSum:", tags="", aggtype="sum")
} (period="60")

/**
Expand Down
16 changes: 8 additions & 8 deletions src/opserver/docs/opserver.rst
Expand Up @@ -179,7 +179,7 @@ Example output for a virtual network UVE::
],
"in_bytes": {
"#text": "2232972057",
"@aggtype": "counter",
"@aggtype": "sum",
"@type": "i64"
},
"in_stats": {
Expand Down Expand Up @@ -239,7 +239,7 @@ Example output for a virtual network UVE::
},
"in_tpkts": {
"#text": "5156342",
"@aggtype": "counter",
"@aggtype": "sum",
"@type": "i64"
},
"interface_list": {
Expand All @@ -255,7 +255,7 @@ Example output for a virtual network UVE::
},
"out_bytes": {
"#text": "2187615961",
"@aggtype": "counter",
"@aggtype": "sum",
"@type": "i64"
},
"out_stats": {
Expand Down Expand Up @@ -330,7 +330,7 @@ Example output for a virtual network UVE::
},
"out_tpkts": {
"#text": "5134830",
"@aggtype": "counter",
"@aggtype": "sum",
"@type": "i64"
},
"virtualmachine_list": {
Expand Down Expand Up @@ -400,12 +400,12 @@ Example output for a virtual machine UVE::
{
"in_bytes": {
"#text": "2188895907",
"@aggtype": "counter",
"@aggtype": "sum",
"@type": "i64"
},
"in_pkts": {
"#text": "5130901",
"@aggtype": "counter",
"@aggtype": "sum",
"@type": "i64"
},
"ip_address": {
Expand All @@ -418,12 +418,12 @@ Example output for a virtual machine UVE::
},
"out_bytes": {
"#text": "2201821626",
"@aggtype": "counter",
"@aggtype": "sum",
"@type": "i64"
},
"out_pkts": {
"#text": "5153526",
"@aggtype": "counter",
"@aggtype": "sum",
"@type": "i64"
},
"virtual_network": {
Expand Down
8 changes: 4 additions & 4 deletions src/opserver/test/sandesh/virtual_network.sandesh
Expand Up @@ -20,10 +20,10 @@ struct UveVirtualNetworkAgent {
2: optional bool deleted
3: optional i32 total_acl_rules;
4: optional list<string> interface_list (aggtype="union")
5: optional u64 in_tpkts (aggtype="counter")
6: optional u64 in_bytes (aggtype="counter")
7: optional u64 out_tpkts (aggtype="counter")
8: optional u64 out_bytes (aggtype="counter")
5: optional u64 in_tpkts (aggtype="sum")
6: optional u64 in_bytes (aggtype="sum")
7: optional u64 out_tpkts (aggtype="sum")
8: optional u64 out_bytes (aggtype="sum")
9: optional list<string> virtualmachine_list (aggtype="union")
10: optional list<InterVnStats> vn_stats (tags=".other_vn,.vrouter")
}
Expand Down
97 changes: 50 additions & 47 deletions src/opserver/test/test_uveserver.py
Expand Up @@ -41,6 +41,22 @@ def MakeBasic(typ, val, aggtype=None):
item['@aggtype'] = aggtype
return item

def MakeStruct(typ, dval, aggtype=None):
item = {}
item['@type'] = 'struct'
if aggtype is not None:
item['@aggtype'] = aggtype
item[typ] = {}
for k,v in dval.iteritems():
vmap = {}
if isinstance(v,int):
vmap['@type'] = 'u64'
vmap['#text'] = str(v)
else:
vmap['@type'] = 'string'
vmap['#text'] = v
item[typ][k] = vmap
return item

def MakeList(typ, valname, val, aggtype=None):
item = {}
Expand Down Expand Up @@ -129,9 +145,9 @@ def MakeStringMap(inmap):
4: optional i32 total_virtual_machines (
aggtype="sum")
5: optional i32 total_acl_rules
6: optional i64 in_tpkts (aggtype="counter")
7: optional list<VnStats> in_stats (aggtype="append")
8: optional map<i32,string> mstr (aggtype="union")
9: optional IfStats ifstats (aggtype="sum")
'''


Expand All @@ -143,9 +159,9 @@ def MakeUVEVirtualNetwork(
connected_networks=None,
total_virtual_machines=None,
total_acl_rules=None,
in_tpkts=None,
in_stats=None,
mstr=None):
mstr=None,
ifstats=None):
rsult = copy.deepcopy(istate)
if rsult is None:
rsult = {}
Expand Down Expand Up @@ -178,16 +194,16 @@ def MakeUVEVirtualNetwork(
result['UVEVirtualNetwork']['total_acl_rules'] = {}
result['UVEVirtualNetwork']['total_acl_rules'][source] = \
MakeBasic("i32", total_acl_rules)
if in_tpkts is not None:
if ('in_tpkts' not in result['UVEVirtualNetwork']):
result['UVEVirtualNetwork']['in_tpkts'] = {}
result['UVEVirtualNetwork']['in_tpkts'][source] = \
MakeBasic("i64", in_tpkts, "counter")
if in_stats is not None:
if ('in_stats' not in result['UVEVirtualNetwork']):
result['UVEVirtualNetwork']['in_stats'] = {}
result['UVEVirtualNetwork']['in_stats'][source] = \
MakeVnStatList(in_stats)
if ifstats is not None:
if ('ifstats' not in result['UVEVirtualNetwork']):
result['UVEVirtualNetwork']['ifstats'] = {}
result['UVEVirtualNetwork']['ifstats'][source] = \
MakeStruct("IfStats", ifstats, "sum")
return rsult


Expand Down Expand Up @@ -319,22 +335,22 @@ def test_map_union_agg(self):
self.assertEqual(sorted(cn['map']['element']),
sorted(res['UVEVirtualNetwork']['mstr']['map']['element']))

def test_sum_agg(self):
logging.info("%%% Running test_sum_agg %%%")
def test_struct_sum_agg(self):
logging.info("%%% Running test_struct_sum_agg %%%")

uvevn = MakeUVEVirtualNetwork(
None, "abc-corp:vn-00", "10.10.10.10",
total_virtual_machines=4
ifstats={"name":"foo", "inbytes":4}
)

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

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

pa = ParallelAggregator(uvevn2)
Expand All @@ -343,46 +359,43 @@ def test_sum_agg(self):
logging.info(json.dumps(res, indent=4, sort_keys=True))

cnt1 = uvetest["abc-corp:vn-00"]['UVEVirtualNetwork'][
'total_virtual_machines']["10.10.10.10"]
'ifstats']["10.10.10.10"]
self.assertEqual(
cnt1, res['UVEVirtualNetwork']['total_virtual_machines'])
cnt1, res['UVEVirtualNetwork']['ifstats'])

def test_counter_agg(self):
logging.info("%%% Running test_counter_agg %%%")
def test_elem_sum_agg(self):
logging.info("%%% Running test_elem_sum_agg %%%")

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

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

uvevn3 = UVEServer.merge_previous(
uvevn2, "abc-corp:vn-00", "UVEVirtualNetwork", "in_tpkts",
uvevn["abc-corp:vn-00"]['UVEVirtualNetwork']['in_tpkts'][
"previous"])
uvetest = MakeUVEVirtualNetwork(
None, "abc-corp:vn-00", "10.10.10.10",
total_virtual_machines=11
)

pa = ParallelAggregator(uvevn3)
pa = ParallelAggregator(uvevn2)
res = pa.aggregate("abc-corp:vn-00", False)
logging.info(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"]
logging.info(json.dumps(res, indent=4, sort_keys=True))

self.assertEqual(in_tpkts, res['UVEVirtualNetwork']['in_tpkts'])
cnt1 = uvetest["abc-corp:vn-00"]['UVEVirtualNetwork'][
'total_virtual_machines']["10.10.10.10"]
self.assertEqual(
cnt1, res['UVEVirtualNetwork']['total_virtual_machines'])

def test_append_agg(self):
logging.info("%%% Running test_append_agg %%%")

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

Expand All @@ -391,17 +404,7 @@ def test_append_agg(self):
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)
pa = ParallelAggregator(uvevn2)
res = pa.aggregate("abc-corp:vn-00", False)
logging.info(json.dumps(res, indent=4, sort_keys=True))

Expand All @@ -410,8 +413,8 @@ def test_append_agg(self):

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

uvetest["abc-corp:vn-00"]["UVEVirtualNetwork"]["in_stats"][
Expand Down

0 comments on commit 3247128

Please sign in to comment.