add unit test for ping 25/825/3
authorJo¶rgen Karlsson <jorgen.w.karlsson@ericsson.com>
Mon, 15 Jun 2015 14:15:24 +0000 (16:15 +0200)
committerJo¶rgen Karlsson <jorgen.w.karlsson@ericsson.com>
Mon, 15 Jun 2015 14:56:32 +0000 (16:56 +0200)
Running of unittest from run_test.sh is NOT enabled.

JIRA:-
Change-Id: I741d63e8ab37570c3cf67353fafc7f5210382219
Signed-off-by: Jo¶rgen Karlsson <jorgen.w.karlsson@ericsson.com>
run_tests.sh
tests/unit/__init__.py [new file with mode: 0644]
tests/unit/benchmark/__init__.py [new file with mode: 0644]
tests/unit/benchmark/scenarios/__init__.py [new file with mode: 0644]
tests/unit/benchmark/scenarios/networking/__init__.py [new file with mode: 0644]
tests/unit/benchmark/scenarios/networking/test_ping.py [new file with mode: 0644]
yardstick/benchmark/scenarios/networking/ping.py

index cb8fdb3..b2bf807 100755 (executable)
@@ -25,8 +25,7 @@ run_flake8() {
 
 run_tests() {
     echo -n "Running unittest ... "
-    logfile=test.log
-    python -m unittest discover -s yardstick/tests &> $logfile
+    python -m unittest discover -s tests/unit
     if [ $? -ne 0 ]; then
         echo "FAILED, result in $logfile"
         exit 1
diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/unit/benchmark/__init__.py b/tests/unit/benchmark/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/unit/benchmark/scenarios/__init__.py b/tests/unit/benchmark/scenarios/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/unit/benchmark/scenarios/networking/__init__.py b/tests/unit/benchmark/scenarios/networking/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/unit/benchmark/scenarios/networking/test_ping.py b/tests/unit/benchmark/scenarios/networking/test_ping.py
new file mode 100644 (file)
index 0000000..d930adc
--- /dev/null
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+
+##############################################################################
+# Copyright (c) 2015 Ericsson AB and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# Unittest for yardstick.benchmark.scenarios.networking.ping.Ping
+
+import mock
+import unittest
+
+from yardstick.benchmark.scenarios.networking import ping
+
+
+class PingTestCase(unittest.TestCase):
+
+    def setUp(self):
+        self.ctx = {
+            'host': '172.16.0.137',
+            'user': 'cirros',
+            'key_filename': "mykey.key"
+            }
+
+    @mock.patch('yardstick.benchmark.scenarios.networking.ping.ssh')
+    def test_ping_successful_no_sla(self, mock_ssh):
+
+        p = ping.Ping(self.ctx)
+
+        args = {
+            'options': {'packetsize': 200},
+            'ipaddr': '172.16.0.138'
+            }
+
+        mock_ssh.SSH().execute.return_value = (0, '100', '')
+        result = p.run(args)
+        self.assertEqual(result, float(mock_ssh.SSH().execute.return_value[1]))
+
+    @mock.patch('yardstick.benchmark.scenarios.networking.ping.ssh')
+    def test_ping_successful_sla(self, mock_ssh):
+
+        p = ping.Ping(self.ctx)
+
+        args = {
+            'options': {'packetsize': 200},
+            'ipaddr': '172.16.0.138',
+            'sla': {'max_rtt': 150}
+            }
+
+        mock_ssh.SSH().execute.return_value = (0, '100', '')
+        result = p.run(args)
+        self.assertEqual(result, float(mock_ssh.SSH().execute.return_value[1]))
+
+    @mock.patch('yardstick.benchmark.scenarios.networking.ping.ssh')
+    def test_ping_unsuccessful_sla(self, mock_ssh):
+
+        p = ping.Ping(self.ctx)
+
+        args = {
+            'options': {'packetsize': 200},
+            'ipaddr': '172.16.0.138',
+            'sla': {'max_rtt': 50}
+            }
+
+        mock_ssh.SSH().execute.return_value = (0, '100', '')
+        self.assertRaises(AssertionError, p.run, args)
+
+    @mock.patch('yardstick.benchmark.scenarios.networking.ping.ssh')
+    def test_ping_unsuccessful_script_error(self, mock_ssh):
+
+        p = ping.Ping(self.ctx)
+
+        args = {
+            'options': {'packetsize': 200},
+            'ipaddr': '172.16.0.138',
+            'sla': {'max_rtt': 50}
+            }
+
+        mock_ssh.SSH().execute.return_value = (1, '', 'FOOBAR')
+        self.assertRaises(RuntimeError, p.run, args)
+
+
+def main():
+    unittest.main()
+
+if __name__ == '__main__':
+    main()
index cd4054f..a027c81 100644 (file)
@@ -59,20 +59,3 @@ class Ping(base.Scenario):
             assert rtt <= sla_max_rtt, "rtt %f > sla_max_rtt" % rtt
 
         return rtt
-
-
-def _test():
-    '''internal test function'''
-    key_filename = pkg_resources.resource_filename('yardstick.resources',
-                                                   'files/yardstick_key')
-    ctx = {'host': '172.16.0.137',
-           'user': 'cirros',
-           'key_filename': key_filename}
-    p = Ping(ctx)
-    args = {'options': '-c 2 -s 200',
-            'ipaddr': '172.16.0.138'}
-    result = p.run(args)
-    print result
-
-if __name__ == '__main__':
-    _test()