summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-04-27 10:03:11 +0000
committerGerrit Code Review <review@openstack.org>2015-04-27 10:03:11 +0000
commit7e40436193abbeb66e435b170c80ed50caf159e1 (patch)
treecfd5b848a5d945e33be02f3be3d06243c0c3839e
parent02956b12c76ac41255f78cc8f7cb8ab52f04d406 (diff)
parentd118faf43a05381362695d3c074678130e53119d (diff)
downloadtempest-lib-7e40436193abbeb66e435b170c80ed50caf159e1.tar.gz
Merge "Fix ValueError in subunit_trace"
-rwxr-xr-xtempest_lib/cmd/subunit_trace.py6
-rw-r--r--tempest_lib/tests/cmd/__init__.py0
-rw-r--r--tempest_lib/tests/cmd/test_subunit_trace.py61
-rw-r--r--test-requirements.txt1
4 files changed, 67 insertions, 1 deletions
diff --git a/tempest_lib/cmd/subunit_trace.py b/tempest_lib/cmd/subunit_trace.py
index 5b69fb6..43bb275 100755
--- a/tempest_lib/cmd/subunit_trace.py
+++ b/tempest_lib/cmd/subunit_trace.py
@@ -190,7 +190,11 @@ def run_time():
runtime = 0.0
for k, v in RESULTS.items():
for test in v:
- runtime += float(get_duration(test['timestamps']).strip('s'))
+ test_dur = get_duration(test['timestamps']).strip('s')
+ # NOTE(toabctl): get_duration() can return an empty string
+ # which leads to a ValueError when casting to float
+ if test_dur:
+ runtime += float(test_dur)
return runtime
diff --git a/tempest_lib/tests/cmd/__init__.py b/tempest_lib/tests/cmd/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tempest_lib/tests/cmd/__init__.py
diff --git a/tempest_lib/tests/cmd/test_subunit_trace.py b/tempest_lib/tests/cmd/test_subunit_trace.py
new file mode 100644
index 0000000..c1653d2
--- /dev/null
+++ b/tempest_lib/tests/cmd/test_subunit_trace.py
@@ -0,0 +1,61 @@
+# Copyright 2015 SUSE Linux GmbH
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from datetime import datetime as dt
+
+from ddt import data
+from ddt import ddt
+from ddt import unpack
+from mock import patch
+
+from tempest_lib.cmd import subunit_trace
+from tempest_lib.tests import base
+
+
+@ddt
+class TestSubunitTrace(base.TestCase):
+
+ @data(([dt(2015, 4, 17, 22, 23, 14, 111111),
+ dt(2015, 4, 17, 22, 23, 14, 111111)],
+ "0.000000s"),
+ ([dt(2015, 4, 17, 22, 23, 14, 111111),
+ dt(2015, 4, 17, 22, 23, 15, 111111)],
+ "1.000000s"),
+ ([dt(2015, 4, 17, 22, 23, 14, 111111),
+ None],
+ ""))
+ @unpack
+ def test_get_durating(self, timestamps, expected_result):
+ self.assertEqual(subunit_trace.get_duration(timestamps),
+ expected_result)
+
+ @data(([dt(2015, 4, 17, 22, 23, 14, 111111),
+ dt(2015, 4, 17, 22, 23, 14, 111111)],
+ 0.0),
+ ([dt(2015, 4, 17, 22, 23, 14, 111111),
+ dt(2015, 4, 17, 22, 23, 15, 111111)],
+ 1.0),
+ ([dt(2015, 4, 17, 22, 23, 14, 111111),
+ None],
+ 0.0))
+ @unpack
+ def test_run_time(self, timestamps, expected_result):
+ patched_res = {
+ 0: [
+ {'timestamps': timestamps}
+ ]
+ }
+ with patch.dict(subunit_trace.RESULTS, patched_res, clear=True):
+ self.assertEqual(subunit_trace.run_time(), expected_result)
diff --git a/test-requirements.txt b/test-requirements.txt
index 40ba08b..7986677 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -14,3 +14,4 @@ testrepository>=0.0.18
testscenarios>=0.4
testtools>=0.9.36,!=1.2.0
mock>=1.0
+ddt>=0.4.0