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
|
#!/usr/bin/env python3
import unittest
import psutil
from vpp_papi.vpp_stats import VPPStats
from framework import tag_fixme_vpp_workers
from framework import VppTestCase, VppTestRunner
@tag_fixme_vpp_workers
class StatsClientTestCase(VppTestCase):
"""Test Stats Client"""
@classmethod
def setUpClass(cls):
super(StatsClientTestCase, cls).setUpClass()
@classmethod
def tearDownClass(cls):
super(StatsClientTestCase, cls).tearDownClass()
def test_set_errors(self):
"""Test set errors"""
self.assertEqual(self.statistics.set_errors(), {})
self.assertEqual(
self.statistics.get_counter('/err/ethernet-input/no error'), [0])
def test_client_fd_leak(self):
"""Test file descriptor count - VPP-1486"""
cls = self.__class__
p = psutil.Process()
initial_fds = p.num_fds()
for _ in range(100):
stats = VPPStats(socketname=cls.get_stats_sock_path())
stats.disconnect()
ending_fds = p.num_fds()
self.assertEqual(initial_fds, ending_fds,
"initial client side file descriptor count: %s "
"is not equal to "
"ending client side file descriptor count: %s" % (
initial_fds, ending_fds))
@unittest.skip("Manual only")
def test_mem_leak(self):
def loop():
print('Running loop')
for i in range(50):
rv = self.vapi.papi.tap_create_v2(id=i, use_random_mac=1)
self.assertEqual(rv.retval, 0)
rv = self.vapi.papi.tap_delete_v2(sw_if_index=rv.sw_if_index)
self.assertEqual(rv.retval, 0)
before = self.statistics.get_counter('/mem/statseg/used')
loop()
self.vapi.cli("memory-trace on stats-segment")
for j in range(100):
loop()
print(self.vapi.cli("show memory stats-segment verbose"))
print('AFTER', before,
self.statistics.get_counter('/mem/statseg/used'))
if __name__ == '__main__':
unittest.main(testRunner=VppTestRunner)
|