Make get_duration return the proper type

The get_duration code was borrowed from tempest's subunit-trace script
which had it return a string marking it in secs. However, a float was
the proper type for the variable. So instead of converting the return
for every instance just have it return the proper type.
This commit is contained in:
Matthew Treinish 2014-06-25 00:25:17 -04:00
parent 423d13aff2
commit 963f980ae0
3 changed files with 19 additions and 15 deletions

View File

@ -22,12 +22,12 @@ DAY_SECONDS = 60 * 60 * 24
def get_duration(start, end):
if not start or not end:
duration = ''
duration = None
else:
delta = end - start
duration = '%d.%06ds' % (
duration = '%d.%06d' % (
delta.days * DAY_SECONDS + delta.seconds, delta.microseconds)
return duration
return float(duration)
class ReadSubunit(object):
@ -112,6 +112,5 @@ class ReadSubunit(object):
def run_time(self):
runtime = 0.0
for name, data in self.results.items():
runtime += float(get_duration(data['start_time'],
data['end_time']).strip('s'))
runtime += get_duration(data['start_time'], data['end_time'])
return runtime

View File

@ -58,8 +58,8 @@ def parse_args(argv, default_config_files=None):
def running_avg(test, values, result):
count = test.success
avg_prev = test.run_time
curr_runtime = float(subunit.get_duration(result['start_time'],
result['end_time']).strip('s'))
curr_runtime = subunit.get_duration(result['start_time'],
result['end_time'])
if isinstance(avg_prev, float):
# Using a smoothed moving avg to limit the affect of a single outlier
new_avg = ((count * avg_prev) + curr_runtime) / (count + 1)
@ -119,13 +119,8 @@ def process_results(results):
else:
fails = 0
success = 0
run_time = subunit.get_duration(
results[test]['start_time'],
results[test]['end_time']).strip('s')
if run_time:
run_time = float(run_time)
else:
run_time = None
run_time = subunit.get_duration(results[test]['start_time'],
results[test]['end_time'])
db_test = api.create_test(test, (success + fails), success,
fails, run_time,
session)

View File

@ -23,4 +23,14 @@ class TestReadSubunit(base.TestCase):
def test_get_duration(self):
dur = subunit.get_duration(datetime.datetime(1914, 6, 28, 10, 45, 0),
datetime.datetime(1914, 6, 28, 10, 45, 50))
self.assertEqual(dur, '50.000000s')
self.assertEqual(dur, 50.000000)
def test_get_duration_no_start(self):
dur = subunit.get_duration(None,
datetime.datetime(1914, 6, 28, 10, 45, 50))
self.assertIsNone(dur)
def test_get_duration_no_end(self):
dur = subunit.get_duration(datetime.datetime(1914, 6, 28, 10, 45, 50),
None)
self.assertIsNone(dur)