1c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# Copyright 2014 The Chromium Authors. All rights reserved. 2c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# Use of this source code is governed by a BSD-style license that can be 3c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# found in the LICENSE file. 4c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch"""Request Handler that updates the Expectation version.""" 6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport webapp2 8c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport ispy_api 10c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochfrom common import constants 11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 12c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport gs_bucket 13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass RebaselineHandler(webapp2.RequestHandler): 16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch """Request handler to allow test mask updates.""" 17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def post(self): 19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch """Accepts post requests. 20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Expects a test_run as a parameter and updates the associated version file to 22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch use the expectations associated with that test run. 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch """ 24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch test_run = self.request.get('test_run') 25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Fail if test_run parameter is missing. 27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if not test_run: 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.response.headers['Content-Type'] = 'json/application' 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.response.write(json.dumps( 30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch {'error': '\'test_run\' must be supplied to rebaseline.'})) 31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return 32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Otherwise, set up the utilities. 33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bucket = gs_bucket.GoogleCloudStorageBucket(constants.BUCKET) 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy = ispy_api.ISpyApi(bucket) 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Update versions file. 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy.RebaselineToTestRun(test_run) 37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Redirect back to the sites list for the test run. 38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.redirect('/?test_run=%s' % test_run) 39