ip: Router ID included in flow hash
[vpp.git] / test / test_stats_client.py
1 #!/usr/bin/env python3
2
3 import unittest
4 import psutil
5 from vpp_papi.vpp_stats import VPPStats
6
7 from framework import VppTestCase, VppTestRunner
8
9
10 class StatsClientTestCase(VppTestCase):
11     """Test Stats Client"""
12
13     @classmethod
14     def setUpClass(cls):
15         super(StatsClientTestCase, cls).setUpClass()
16
17     @classmethod
18     def tearDownClass(cls):
19         super(StatsClientTestCase, cls).tearDownClass()
20
21     def test_set_errors(self):
22         """Test set errors"""
23         self.assertEqual(self.statistics.set_errors(), {})
24         self.assertEqual(self.statistics.get_counter('/err/ethernet-input/no'),
25                          [0])
26
27     def test_client_fd_leak(self):
28         """Test file descriptor count - VPP-1486"""
29
30         cls = self.__class__
31         p = psutil.Process()
32         initial_fds = p.num_fds()
33
34         for _ in range(100):
35             stats = VPPStats(socketname=cls.stats_sock)
36             stats.disconnect()
37
38         ending_fds = p.num_fds()
39         self.assertEqual(initial_fds, ending_fds,
40                          "initial client side file descriptor count: %s "
41                          "is not equal to "
42                          "ending client side file descriptor count: %s" % (
43                              initial_fds, ending_fds))
44
45     @unittest.skip("Manual only")
46     def test_mem_leak(self):
47         def loop():
48             print('Running loop')
49             for i in range(50):
50                 rv = self.vapi.papi.tap_create_v2(id=i, use_random_mac=1)
51                 self.assertEqual(rv.retval, 0)
52                 rv = self.vapi.papi.tap_delete_v2(sw_if_index=rv.sw_if_index)
53                 self.assertEqual(rv.retval, 0)
54
55         before = self.statistics.get_counter('/mem/statseg/used')
56         loop()
57         self.vapi.cli("memory-trace on stats-segment")
58         for j in range(100):
59             loop()
60         print(self.vapi.cli("show memory stats-segment verbose"))
61         print('AFTER', before,
62               self.statistics.get_counter('/mem/statseg/used'))
63
64
65 if __name__ == '__main__':
66     unittest.main(testRunner=VppTestRunner)