Merge "Remove TRex installer from ansible directory"
[yardstick.git] / yardstick / tests / unit / network_services / collector / test_subscriber.py
index a344f5c..4271f85 100644 (file)
@@ -17,6 +17,7 @@ import unittest
 import mock
 
 from yardstick.network_services.collector import subscriber
+from yardstick import ssh
 
 
 class MockVnfAprrox(object):
@@ -37,58 +38,66 @@ class MockVnfAprrox(object):
 
 class CollectorTestCase(unittest.TestCase):
 
-    NODES = {
-        'node1': {},
-        'node2': {
-            'ip': '1.2.3.4',
-            'collectd': {
-                'plugins': {'abc': 12, 'def': 34},
-                'interval': 987,
-            },
-        },
-    }
-    TRAFFIC_PROFILE = {
-        'key1': 'value1',
-    }
+    NODES = {'context1': [{'name': 'node1',
+                           'ip': '1.2.3.4',
+                           'collectd': {
+                               'plugins': {'abc': 12, 'def': 34},
+                               'interval': 987
+                           },
+                           }]
+             }
 
     def setUp(self):
         vnf = MockVnfAprrox()
-        self.ssh_patch = mock.patch('yardstick.network_services.nfvi.resource.ssh', autospec=True)
+        vnf.start_collect = mock.Mock()
+        vnf.stop_collect = mock.Mock()
+        self.ssh_patch = mock.patch.object(ssh, 'AutoConnectSSH')
         mock_ssh = self.ssh_patch.start()
         mock_instance = mock.Mock()
         mock_instance.execute.return_value = 0, '', ''
-        mock_ssh.AutoConnectSSH.from_node.return_value = mock_instance
-        self.collector = subscriber.Collector([vnf], self.NODES, self.TRAFFIC_PROFILE, 1800)
+        mock_ssh.from_node.return_value = mock_instance
+        self.collector = subscriber.Collector([vnf], self.NODES)
 
     def tearDown(self):
         self.ssh_patch.stop()
 
     def test___init__(self, *_):
         vnf = MockVnfAprrox()
-        collector = subscriber.Collector([vnf], {}, {})
+        collector = subscriber.Collector([vnf], self.NODES)
         self.assertEqual(len(collector.vnfs), 1)
-        self.assertEqual(collector.traffic_profile, {})
+        self.assertEqual(len(collector.nodes), 1)
 
-    def test___init___with_data(self, *_):
-        self.assertEqual(len(self.collector.vnfs), 1)
-        self.assertDictEqual(self.collector.traffic_profile, self.TRAFFIC_PROFILE)
-        self.assertEqual(len(self.collector.resource_profiles), 1)
+    def test_start(self, *_):
+        resource_profile = mock.MagicMock()
+        self.collector.resource_profiles = {'key': resource_profile}
+        self.collector.bin_path = 'path'
 
-    def test___init___negative(self, *_):
-        pass
+        self.assertIsNone(self.collector.start())
+        for vnf in self.collector.vnfs:
+            vnf.start_collect.assert_called_once()
 
-    def test_start(self, *_):
-        with self.assertRaises(Exception):
-            self.collector.start()
+        for resource_profile in self.collector.resource_profiles.values():
+            resource_profile.initiate_systemagent.assert_called_once_with('path')
+            resource_profile.start.assert_called_once()
+            resource_profile.amqp_process_for_nfvi_kpi.assert_called_once()
 
     def test_stop(self, *_):
+        resource_profile = mock.MagicMock()
+        self.collector.resource_profiles = {'key': resource_profile}
+
         self.assertIsNone(self.collector.stop())
+        for vnf in self.collector.vnfs:
+            vnf.stop_collect.assert_called_once()
+
+        for resource in self.collector.resource_profiles.values():
+            resource.stop.assert_called_once()
 
     def test_get_kpi(self, *_):
         result = self.collector.get_kpi()
 
+        self.assertEqual(2, len(result))
+        self.assertEqual(4, len(result["vnf__1"]))
         self.assertEqual(result["vnf__1"]["pkt_in_up_stream"], 100)
         self.assertEqual(result["vnf__1"]["pkt_drop_up_stream"], 5)
         self.assertEqual(result["vnf__1"]["pkt_in_down_stream"], 50)
         self.assertEqual(result["vnf__1"]["pkt_drop_down_stream"], 40)
-        self.assertIn('node2', result)