summaryrefslogtreecommitdiffstats
path: root/tests/data_plane/vpp_lite_topo/scripts/vat/check_counters.py
blob: 1bb9fdc1ad4b6e57e50be2ce3000a84fcd3fe4bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Script for checking LISP counters

help_string = """
 Params:
   vat_exec - VAT executable
   vpp_prefix - shared vpp memory prefix
   vat_path - VAT template file
   vni
   seid
   deid
   loc_rloc
   rmt_rloc
   pkt_count
   bytes
"""

import sys
import subprocess
import json

def get_stat_entry(json, vni, seid, deid, loc_rloc, rmt_rloc):
  if len (json) == 0:
    return None

  for obj in json:
    if obj['vni'] == int(vni) and\
            obj['seid'] == seid and\
            obj['deid'] == deid and\
            obj['lloc'] == loc_rloc and\
            obj['rloc'] == rmt_rloc:
      return obj

  return None


def check_counters(vat_exec, vat_path, vpp_prefix, vni, seid, deid, loc_rloc,
        rmt_rloc, pkt_count, total_bytes):
  vat_file = vat_path + '/' + 'dump_stats.tpl'
  out = subprocess.Popen([vat_exec, "chroot", "prefix", vpp_prefix, "json", "script",
      "in", vat_file], stdout=subprocess.PIPE).communicate()[0]

  o = json.loads(out)
  stat_entry = get_stat_entry(o, vni, seid, deid, loc_rloc, rmt_rloc)

  if stat_entry is None:
    return False

  if stat_entry['pkt_count'] != int(pkt_count):
    return False
  if stat_entry['bytes'] != int(total_bytes):
    return False
  return True


if __name__ == "__main__":
  if len(sys.argv) < 10:
    raise Exception('expected 10 parameters: ' + help_string)

  if check_counters(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4],
          sys.argv[5],
          sys.argv[6],
          sys.argv[7],
          sys.argv[8],
          sys.argv[9],
          sys.argv[10]):
    sys.exit(0)
  else:
    sys.exit(1)