WebKit Bugzilla
Attachment 360334 Details for
Bug 193735
: [ews-app] Add method to save Build data to database
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Updated patch
0003-ews-app-Add-method-to-save-Build-data-to-database.patch (text/plain), 6.36 KB, created by
Aakash Jain
on 2019-01-28 04:51:15 PST
(
hide
)
Description:
Updated patch
Filename:
MIME Type:
Creator:
Aakash Jain
Created:
2019-01-28 04:51:15 PST
Size:
6.36 KB
patch
obsolete
>From 7c5e65c1600dc11389949159bdeee8b7239ca2b3 Mon Sep 17 00:00:00 2001 >From: Aakash Jain <aakash_jain@apple.com> >Date: Sun, 27 Jan 2019 22:31:19 -0500 >Subject: [PATCH 3/4] [ews-app] Add method to save Build data to database > https://bugs.webkit.org/show_bug.cgi?id=193735 > >Reviewed by NOBODY (OOPS!). > >* BuildSlaveSupport/ews-app/ews/models/build.py: >(Build.save_build): Method to save build information to database. >(Build.get_existing_build): Method to fetch existing build from database. >(Build.is_valid_result): Method to validate build result. >* BuildSlaveSupport/ews-app/ews/common/util.py: >(is_valid_int_id): Method to validate valid id. >--- > .../ews-app/ews/common/util.py | 15 ++++- > .../ews-app/ews/models/build.py | 57 +++++++++++++++++++ > Tools/ChangeLog | 14 +++++ > 3 files changed, 85 insertions(+), 1 deletion(-) > >diff --git a/Tools/BuildSlaveSupport/ews-app/ews/common/util.py b/Tools/BuildSlaveSupport/ews-app/ews/common/util.py >index 21991383530..15f1cea30c6 100644 >--- a/Tools/BuildSlaveSupport/ews-app/ews/common/util.py >+++ b/Tools/BuildSlaveSupport/ews-app/ews/common/util.py >@@ -1,4 +1,4 @@ >-# Copyright (C) 2018 Apple Inc. All rights reserved. >+# Copyright (C) 2018-2019 Apple Inc. All rights reserved. > # > # Redistribution and use in source and binary forms, with or without > # modification, are permitted provided that the following conditions >@@ -41,3 +41,16 @@ def fetch_data_from_url(url): > _log.error('Accessed {url} with unexpected status code {status_code}.'.format(url=url, status_code=response.status_code)) > return None > return response >+ >+ >+def is_valid_id(id, expected_data_type=int): >+ if not id: >+ _log.warn('Invalid id: {}'.format(id)) >+ return False >+ if type(id) != expected_data_type: >+ _log.warn('Invalid type {} for id: {}, expected: {}'.format(type(id), id, expected_data_type)) >+ return False >+ if expected_data_type == int and id < 0: >+ _log.warn('Invalid id: {}, id should be positive integer.'.format(id)) >+ return False >+ return True >diff --git a/Tools/BuildSlaveSupport/ews-app/ews/models/build.py b/Tools/BuildSlaveSupport/ews-app/ews/models/build.py >index 7cf7ac8cfdf..5fdd0cf41b6 100644 >--- a/Tools/BuildSlaveSupport/ews-app/ews/models/build.py >+++ b/Tools/BuildSlaveSupport/ews-app/ews/models/build.py >@@ -22,8 +22,14 @@ > > from __future__ import unicode_literals > >+import logging >+ > from django.db import models >+from ews.config import ERR_UNEXPECTED, SUCCESS > from ews.models.patch import Patch >+import ews.common.util as util >+ >+_log = logging.getLogger(__name__) > > > class Build(models.Model): >@@ -40,3 +46,54 @@ class Build(models.Model): > > def __str__(self): > return str(self.build_id) >+ >+ @classmethod >+ def save_build(cls, patch_id, build_id, builder_id, number, result, state_string, started_at, complete_at=None): >+ if not Build.is_valid_result(patch_id, build_id, builder_id, number, result, state_string, started_at, complete_at): >+ return ERR_UNEXPECTED >+ >+ build = Build.get_existing_build(build_id) >+ if build: >+ # If the build data is already present in database, update it, e.g.: build complete event. >+ return Build.update_build(build, patch_id, build_id, builder_id, number, result, state_string, started_at, complete_at) >+ >+ # Save the new build data, e.g.: build start event. >+ Build(patch_id, build_id, builder_id, number, result, state_string, started_at, complete_at).save() >+ _log.info('Saved build {} in database for patch_id: {}'.format(build_id, patch_id)) >+ return SUCCESS >+ >+ @classmethod >+ def update_build(cls, build, patch_id, build_id, builder_id, number, result, state_string, started_at, complete_at): >+ if build.patch_id != patch_id: >+ _log.error('patch_id {} does not match with patch_id {}. Ignoring new data.'.format(build.patch_id, patch_id)) >+ return ERR_UNEXPECTED >+ if build.build_id != build_id: >+ _log.error('build_id {} does not match with build_id {}. Ignoring new data.'.format(build.build_id, build_id)) >+ return ERR_UNEXPECTED >+ if build.builder_id != builder_id: >+ _log.error('builder_id {} does not match with builder_id {}. Ignoring new data.'.format(build.builder_id, builder_id)) >+ return ERR_UNEXPECTED >+ if build.number != number: >+ _log.error('build number {} does not match with number {}. Ignoring new data.'.format(build.number, number)) >+ return ERR_UNEXPECTED >+ build.result = result >+ build.state_string = state_string >+ build.started_at = started_at >+ build.complete_at = complete_at >+ build.save(update_fields=['result', 'state_string', 'started_at', 'complete_at']) >+ _log.info('Updated build {} in database for patch_id: {}'.format(build_id, patch_id)) >+ return SUCCESS >+ >+ @classmethod >+ def get_existing_build(cls, build_id): >+ try: >+ return Build.objects.get(build_id=build_id) >+ except: >+ return None >+ >+ @classmethod >+ def is_valid_result(cls, patch_id, build_id, builder_id, number, result, state_string, started_at, complete_at=None): >+ if not (util.is_valid_id(patch_id) and util.is_valid_id(build_id) and util.is_valid_id(builder_id) and util.is_valid_id(number)): >+ return False >+ >+ return True >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 0736ef548a4..e05c0b662a1 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -8,6 +8,20 @@ > * BuildSlaveSupport/ews-app/ews/models/build.py: > * BuildSlaveSupport/ews-app/ews/models/step.py: > >+2019-01-27 Aakash Jain <aakash_jain@apple.com> >+ >+ [ews-app] Add method to save Build data to database >+ https://bugs.webkit.org/show_bug.cgi?id=193735 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * BuildSlaveSupport/ews-app/ews/models/build.py: >+ (Build.save_build): Method to save build information to database. >+ (Build.get_existing_build_info): Method to fetch existing build info from database. >+ (Build.is_valid_result): Method to validate build result. >+ * BuildSlaveSupport/ews-app/ews/common/util.py: >+ (is_valid_int_id): Method to validate valid id. >+ > 2019-01-27 Aakash Jain <aakash_jain@apple.com> > > [ews-app] Rename id variables >-- >2.17.2 (Apple Git-113) >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
lforschler
:
review+
commit-queue
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193735
:
359931
| 360334