summaryrefslogtreecommitdiff
path: root/lkft/management/commands/lkftreport.py
diff options
context:
space:
mode:
Diffstat (limited to 'lkft/management/commands/lkftreport.py')
-rw-r--r--lkft/management/commands/lkftreport.py69
1 files changed, 35 insertions, 34 deletions
diff --git a/lkft/management/commands/lkftreport.py b/lkft/management/commands/lkftreport.py
index da0f5d1..886f25e 100644
--- a/lkft/management/commands/lkftreport.py
+++ b/lkft/management/commands/lkftreport.py
@@ -93,7 +93,12 @@ class Command(BaseCommand):
trigger_build['duration'] = datetime.timedelta(milliseconds=trigger_build['duration'])
trigger_build['name'] = kernel_change.trigger_name
trigger_build['kernel_change'] = kernel_change
- kernel_change_finished_timestamp = trigger_build['start_timestamp'] + trigger_build['duration']
+ if trigger_build.get('building'):
+ trigger_build['status'] = 'INPROGRESS'
+ kernel_change_finished_timestamp = trigger_build['start_timestamp']
+ else:
+ trigger_build['status'] = trigger_build.get('result') # null or SUCCESS, FAILURE, ABORTED
+ kernel_change_finished_timestamp = trigger_build['start_timestamp'] + trigger_build['duration']
kernel_change_status = "TRIGGER_BUILD_COMPLETED"
@@ -317,55 +322,51 @@ class Command(BaseCommand):
## cache to database
for kernel_change_report in total_reports:
status = kernel_change_report.get('kernel_change_status')
- if status != 'ALL_COMPLETED':
- continue
-
trigger_build = kernel_change_report.get('trigger_build')
+
+ # Try to cache Trigger build information to database
+ try:
+ trigger_dbci_build = CiBuild.objects.get(name=trigger_build.get('name'), number=trigger_build.get('number'))
+ trigger_dbci_build.duration = trigger_build.get('duration').total_seconds()
+ trigger_dbci_build.timestamp = trigger_build.get('start_timestamp')
+ trigger_dbci_build.result = trigger_build.get('status')
+ trigger_dbci_build.save()
+ except CiBuild.DoesNotExist:
+ CiBuild.objects.create(name=trigger_build.get('name'),
+ number=trigger_build.get('number'),
+ kernel_change=kernel_change,
+ duration=trigger_build.get('duration').total_seconds(),
+ timestamp=trigger_build.get('start_timestamp'),
+ result=trigger_build.get('status'))
+
+
+ # Try to cache CI build information to database
+ jenkins_ci_builds = kernel_change_report.get('jenkins_ci_builds')
+ for ci_build in jenkins_ci_builds:
+ CiBuild.objects.filter(name=ci_build.get('name'),
+ number=ci_build.get('number')
+ ).update(duration=ci_build.get('duration').total_seconds(),
+ timestamp=ci_build.get('start_timestamp'),
+ result=ci_build.get('status'))
+
+ # Try to cache kernel change result informtion to database
finished_timestamp = kernel_change_report.get('finished_timestamp')
start_timestamp = kernel_change_report.get('start_timestamp')
test_numbers = kernel_change_report.get('test_numbers')
kernel_change = kernel_change_report.get('kernel_change')
- kernel_change.reported = True
+ kernel_change.reported = (status == 'ALL_COMPLETED')
kernel_change.result = status
kernel_change.timestamp = start_timestamp
kernel_change.duration = (finished_timestamp - start_timestamp).total_seconds()
-
kernel_change.number_passed = test_numbers.number_passed
kernel_change.number_failed = test_numbers.number_failed
kernel_change.number_total = test_numbers.number_total
kernel_change.modules_done = test_numbers.modules_done
kernel_change.modules_total = test_numbers.modules_total
-
kernel_change.save()
- trigger_build = kernel_change_report.get('trigger_build')
- if not trigger_build.get('building'):
- # should always be here
- try:
- trigger_dbci_build = CiBuild.objects.get(name=trigger_build.get('name'), number=trigger_build.get('number'))
- trigger_dbci_build.duration = trigger_build.get('duration').total_seconds()
- trigger_dbci_build.timestamp = trigger_build.get('start_timestamp')
- trigger_dbci_build.result = trigger_build.get('result')
- except CiBuild.DoesNotExist:
- CiBuild.objects.create(name=trigger_build.get('name'),
- number=trigger_build.get('number'),
- kernel_change=kernel_change,
- duration=trigger_build.get('duration').total_seconds(),
- timestamp=trigger_build.get('start_timestamp'),
- result=trigger_build.get('result'))
-
- jenkins_ci_builds = kernel_change_report.get('jenkins_ci_builds')
- for ci_build in jenkins_ci_builds:
- if build.get('building'):
- # there should be no such case
- continue
- CiBuild.objects.filter(name=ci_build.get('name'),
- number=ci_build.get('number')
- ).update(duration=ci_build.get('duration').total_seconds(),
- timestamp=ci_build.get('start_timestamp'),
- result=ci_build.get('result'))
-
+ # Try to cache report build informtion to database
for qareport_build in kernel_change_report.get('qa_report_builds'):
jenkins_ci_build = qareport_build.get('ci_build')
dbci_build = jenkins_ci_build.get('dbci_build')