diff options
author | Ben Murdoch <benm@google.com> | 2010-10-22 13:02:20 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2010-10-26 15:21:41 +0100 |
commit | a94275402997c11dd2e778633dacf4b7e630a35d (patch) | |
tree | e66f56c67e3b01f22c9c23cd932271ee9ac558ed /WebKitTools/Scripts/webkitpy/common/net/statusserver.py | |
parent | 09e26c78506587b3f5d930d7bc72a23287ffbec0 (diff) | |
download | external_webkit-a94275402997c11dd2e778633dacf4b7e630a35d.zip external_webkit-a94275402997c11dd2e778633dacf4b7e630a35d.tar.gz external_webkit-a94275402997c11dd2e778633dacf4b7e630a35d.tar.bz2 |
Merge WebKit at r70209: Initial merge by Git
Change-Id: Id23a68efa36e9d1126bcce0b137872db00892c8e
Diffstat (limited to 'WebKitTools/Scripts/webkitpy/common/net/statusserver.py')
-rw-r--r-- | WebKitTools/Scripts/webkitpy/common/net/statusserver.py | 70 |
1 files changed, 50 insertions, 20 deletions
diff --git a/WebKitTools/Scripts/webkitpy/common/net/statusserver.py b/WebKitTools/Scripts/webkitpy/common/net/statusserver.py index 57390b8..3d03dcd 100644 --- a/WebKitTools/Scripts/webkitpy/common/net/statusserver.py +++ b/WebKitTools/Scripts/webkitpy/common/net/statusserver.py @@ -41,14 +41,18 @@ _log = logging.getLogger("webkitpy.common.net.statusserver") class StatusServer: default_host = "queues.webkit.org" - def __init__(self, host=default_host): + def __init__(self, host=default_host, browser=None, bot_id=None): self.set_host(host) - self.browser = Browser() + self._browser = browser or Browser() + self.set_bot_id(bot_id) def set_host(self, host): self.host = host self.url = "http://%s" % self.host + def set_bot_id(self, bot_id): + self.bot_id = bot_id + def results_url_for_status(self, status_id): return "%s/results/%s" % (self.url, status_id) @@ -56,14 +60,14 @@ class StatusServer: if not patch: return if patch.bug_id(): - self.browser["bug_id"] = unicode(patch.bug_id()) + self._browser["bug_id"] = unicode(patch.bug_id()) if patch.id(): - self.browser["patch_id"] = unicode(patch.id()) + self._browser["patch_id"] = unicode(patch.id()) def _add_results_file(self, results_file): if not results_file: return - self.browser.add_file(results_file, "text/plain", "results.txt", 'results_file') + self._browser.add_file(results_file, "text/plain", "results.txt", 'results_file') def _post_status_to_server(self, queue_name, status, patch, results_file): if results_file: @@ -71,36 +75,61 @@ class StatusServer: results_file.seek(0) update_status_url = "%s/update-status" % self.url - self.browser.open(update_status_url) - self.browser.select_form(name="update_status") - self.browser["queue_name"] = queue_name + self._browser.open(update_status_url) + self._browser.select_form(name="update_status") + self._browser["queue_name"] = queue_name + if self.bot_id: + self._browser["bot_id"] = self.bot_id self._add_patch(patch) - self.browser["status"] = status + self._browser["status"] = status self._add_results_file(results_file) - return self.browser.submit().read() # This is the id of the newly created status object. + return self._browser.submit().read() # This is the id of the newly created status object. def _post_svn_revision_to_server(self, svn_revision_number, broken_bot): update_svn_revision_url = "%s/update-svn-revision" % self.url - self.browser.open(update_svn_revision_url) - self.browser.select_form(name="update_svn_revision") - self.browser["number"] = unicode(svn_revision_number) - self.browser["broken_bot"] = broken_bot - return self.browser.submit().read() + self._browser.open(update_svn_revision_url) + self._browser.select_form(name="update_svn_revision") + self._browser["number"] = unicode(svn_revision_number) + self._browser["broken_bot"] = broken_bot + return self._browser.submit().read() def _post_work_items_to_server(self, queue_name, work_items): update_work_items_url = "%s/update-work-items" % self.url - self.browser.open(update_work_items_url) - self.browser.select_form(name="update_work_items") - self.browser["queue_name"] = queue_name + self._browser.open(update_work_items_url) + self._browser.select_form(name="update_work_items") + self._browser["queue_name"] = queue_name work_items = map(unicode, work_items) # .join expects strings - self.browser["work_items"] = " ".join(work_items) - return self.browser.submit().read() + self._browser["work_items"] = " ".join(work_items) + return self._browser.submit().read() + + def _post_work_item_to_ews(self, attachment_id): + submit_to_ews_url = "%s/submit-to-ews" % self.url + self._browser.open(submit_to_ews_url) + self._browser.select_form(name="submit_to_ews") + self._browser["attachment_id"] = unicode(attachment_id) + self._browser.submit() + + def submit_to_ews(self, attachment_id): + _log.info("Submitting attachment %s to EWS queues" % attachment_id) + return NetworkTransaction().run(lambda: self._post_work_item_to_ews(attachment_id)) def next_work_item(self, queue_name): _log.debug("Fetching next work item for %s" % queue_name) patch_status_url = "%s/next-patch/%s" % (self.url, queue_name) return self._fetch_url(patch_status_url) + def _post_release_work_item(self, queue_name, patch): + release_patch_url = "%s/release-patch" % (self.url) + self._browser.open(release_patch_url) + self._browser.select_form(name="release_patch") + self._browser["queue_name"] = queue_name + self._browser["attachment_id"] = unicode(patch.id()) + self._browser.submit() + + def release_work_item(self, queue_name, patch): + _log.debug("Releasing work item %s from %s" % (patch.id(), queue_name)) + return NetworkTransaction(convert_404_to_None=True).run(lambda: self._post_release_work_item(queue_name, patch)) + def update_work_items(self, queue_name, work_items): _log.debug("Recording work items: %s for %s" % (work_items, queue_name)) return NetworkTransaction().run(lambda: self._post_work_items_to_server(queue_name, work_items)) @@ -114,6 +143,7 @@ class StatusServer: return NetworkTransaction().run(lambda: self._post_svn_revision_to_server(svn_revision_number, broken_bot)) def _fetch_url(self, url): + # FIXME: This should use NetworkTransaction's 404 handling instead. try: return urllib2.urlopen(url).read() except urllib2.HTTPError, e: |