From 1e233d21043fff03b942a8036d687228fc08cb80 Mon Sep 17 00:00:00 2001
From: Sergei Trofimov <sergei.trofimov@arm.com>
Date: Fri, 15 Sep 2017 13:44:20 +0100
Subject: [PATCH] framework/job: track run time.

Job now tracks how long it took to run the workload and save the
timedelta value in the run_time attribute.
---
 wa/framework/job.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/wa/framework/job.py b/wa/framework/job.py
index 1de6625b..d3c15090 100644
--- a/wa/framework/job.py
+++ b/wa/framework/job.py
@@ -1,4 +1,5 @@
 import logging
+from datetime import datetime
 
 from wa.framework import pluginloader, signal
 from wa.framework.configuration.core import Status
@@ -37,6 +38,7 @@ class Job(object):
         self.context = context
         self.workload = None
         self.output = None
+        self.run_time = None
         self.retries = 0
         self._status = Status.NEW
 
@@ -71,7 +73,11 @@ class Job(object):
     def run(self, context):
         self.logger.info('Running job {}'.format(self.id))
         with signal.wrap('WORKLOAD_EXECUTION', self, context):
-            self.workload.run(context)
+            start_time = datetime.utcnow()
+            try:
+                self.workload.run(context)
+            finally:
+                self.run_time = datetime.utcnow() - start_time
 
     def process_output(self, context):
         self.logger.info('Processing output for job {}'.format(self.id))