def setUp(self):
     super(DatastoreHooksTest, self).setUp()
     testing_common.SetIsInternalUser('*****@*****.**', True)
     testing_common.SetIsInternalUser('*****@*****.**', False)
     self._AddDataToDatastore()
     datastore_hooks.InstallHooks()
     self.PatchDatastoreHooksRequest()
Beispiel #2
0
    def setUp(self):
        self.testbed = testbed.Testbed()
        self.testbed.activate()
        self.addCleanup(self.testbed.deactivate)

        self.testbed.init_datastore_v3_stub()
        self.testbed.init_mail_stub()
        self.testbed.init_memcache_stub()
        self.testbed.init_taskqueue_stub(root_path=_QUEUE_YAML_DIR)
        self.testbed.init_user_stub()
        self.testbed.init_urlfetch_stub()
        ndb.get_context().clear_cache()

        self.mail_stub = self.testbed.get_stub(testbed.MAIL_SERVICE_NAME)
        self.mock_get_request = None
        self._PatchIsInternalUser()
        self._PatchIsAdministrator()
        datastore_hooks.InstallHooks()
        SetIsInternalUser(INTERNAL_USER, True)
        SetIsInternalUser(EXTERNAL_USER, False)
        self.testapp = None
        self.logger = logging.getLogger()
        self.logger.level = logging.DEBUG
        self.stream_handler = logging.StreamHandler(sys.stdout)
        self.logger.addHandler(self.stream_handler)
        self.addCleanup(self.logger.removeHandler, self.stream_handler)
Beispiel #3
0
    def testPost_TestPath_ReturnsInternalData(self, mock_oauth, mock_utils):
        mock_oauth.get_current_user.return_value = GOOGLER_USER
        mock_oauth.get_client_id.return_value = (
            api_auth.OAUTH_CLIENT_ID_WHITELIST[0])
        mock_utils.return_value = True
        self._AddData()
        datastore_hooks.InstallHooks()
        test = utils.TestKey('ChromiumPerf/linux/page_cycler/warm/cnn').get()
        test.internal_only = True
        test.put()

        response = self.testapp.post(
            '/api/timeseries/ChromiumPerf/linux/page_cycler/warm/cnn')
        data = self.GetJsonValue(response, 'timeseries')
        self.assertEquals(10, len(data))
        self.assertEquals(
            ['revision', 'value', 'timestamp', 'r_not_every_row', 'r_v8'],
            data[0])
        self.assertEquals(100, data[1][0])
        self.assertEquals(900, data[9][0])
        self.assertEquals('1234a', data[1][4])

        improvement_direction = self.GetJsonValue(response,
                                                  'improvement_direction')
        self.assertEquals(improvement_direction, anomaly.UP)
Beispiel #4
0
 def testGet_WithNonInternalUserAndWhitelistedIP(self):
   self._AddMockInternalData()
   self.UnsetCurrentUser()
   datastore_hooks.InstallHooks()
   testing_common.SetIpWhitelist(['123.45.67.89'])
   query = '/graph_csv?test_path=ChromiumPerf/win7/dromaeo/dom&num_points=3'
   expected = [['revision', 'value']]
   self._CheckGet(query, expected, status=500)
Beispiel #5
0
 def testGet_InternalTestDataUnauthorized_DoesntShowData(self):
   """Tests a query for internal data for an unauthorized user."""
   self._AddInternalSampleData()
   self.UnsetCurrentUser()
   datastore_hooks.InstallHooks()
   response = self.testapp.get('/new_points')
   # Only the header row is listed, not any others rows.
   self.assertEqual(1, len(re.findall(r'<tr>', response.body)))
Beispiel #6
0
 def setUp(self):
     super(ListTestsTest, self).setUp()
     app = webapp2.WSGIApplication([('/list_tests',
                                     list_tests.ListTestsHandler)])
     self.testapp = webtest.TestApp(app)
     datastore_hooks.InstallHooks()
     self.UnsetCurrentUser()
     testing_common.SetIsInternalUser('*****@*****.**', True)
     testing_common.SetIsInternalUser('*****@*****.**', False)
Beispiel #7
0
 def testPost_InternalListPageToExternalUser(self):
     self._AddTableConfigDataStore('BestTable', True)
     self._AddTableConfigDataStore('SecondBestTable', True)
     self._AddTableConfigDataStore('ThirdBestTable', False)
     self.UnsetCurrentUser()
     datastore_hooks.InstallHooks()
     response = self.testapp.post('/speed_releasing/')
     self.assertIn('"show_list": true', response)
     self.assertIn('"list": ["ThirdBestTable"]', response)
Beispiel #8
0
 def setUp(self):
   super(ListTestSuitesTest, self).setUp()
   app = webapp2.WSGIApplication(
       [('/update_test_suites',
         update_test_suites.UpdateTestSuitesHandler)])
   self.testapp = webtest.TestApp(app)
   datastore_hooks.InstallHooks()
   testing_common.SetIsInternalUser('*****@*****.**', True)
   self.UnsetCurrentUser()
Beispiel #9
0
 def testGet_WhitelistedIPOnly(self):
     self.PatchDatastoreHooksRequest('123.45.67.89')
     self._AddMockInternalData()
     self.UnsetCurrentUser()
     datastore_hooks.InstallHooks()
     testing_common.SetIpWhitelist(['123.45.67.89'])
     query = '/graph_csv?test_path=ChromiumPerf/win7/dromaeo/dom&num_points=3'
     expected = [['revision', 'value'], ['47', '94.0'], ['48', '96.0'],
                 ['49', '98.0']]
     self._CheckGet(query, expected, whitelisted_ip='123.45.67.89')
Beispiel #10
0
 def testGet_InternalTestDataAuthorized_ShowsData(self):
   """Tests a query for internal data when the user should be authorized."""
   self._AddInternalSampleData()
   # The user doesn't need to be authorized as admin to view internal data,
   # they only need to have an internal email address.
   self.SetCurrentUser('*****@*****.**')
   datastore_hooks.InstallHooks()
   response = self.testapp.get('/new_points')
   # 50 rows for xtest, 1 for the header.
   self.assertEqual(51, len(re.findall(r'<tr>', response.body)))
Beispiel #11
0
    def testPost_ExternalUserInternalData_500Error(self, mock_oauth):
        mock_oauth.get_current_user.return_value = NON_GOOGLE_USER
        mock_oauth.get_client_id.return_value = (
            api_auth.OAUTH_CLIENT_ID_WHITELIST[0])
        self._AddData()
        datastore_hooks.InstallHooks()
        test = utils.TestKey('ChromiumPerf/linux/page_cycler/warm/cnn').get()
        test.internal_only = True
        test.put()

        self.testapp.post(
            '/api/timeseries/ChromiumPerf/linux/page_cycler/warm/cnn',
            status=500)
 def setUp(self):
     self.testbed = testbed.Testbed()
     self.testbed.activate()
     self.testbed.init_datastore_v3_stub()
     self.testbed.init_mail_stub()
     self.mail_stub = self.testbed.get_stub(testbed.MAIL_SERVICE_NAME)
     self.testbed.init_memcache_stub()
     ndb.get_context().clear_cache()
     self.testbed.init_taskqueue_stub(root_path=_QUEUE_YAML_DIR)
     self.testbed.init_user_stub()
     self.testbed.init_urlfetch_stub()
     self.mock_get_request = None
     self._PatchIsInternalUser()
     datastore_hooks.InstallHooks()
Beispiel #13
0
 def testPost_WithBugIdParameterExternalUser_ExternaData(
         self, mock_oauth, mock_utils):
     mock_oauth.get_current_user.return_value = NON_GOOGLE_USER
     mock_oauth.get_client_id.return_value = (
         api_auth.OAUTH_CLIENT_ID_WHITELIST[0])
     mock_utils.return_value = False
     datastore_hooks.InstallHooks()
     sheriff_key = self._AddSheriff()
     test_keys = self._AddTests()
     bug_data.Bug(id=123).put()
     self._AddAnomalyEntities([(200, 300), (100, 200), (400, 500)],
                              test_keys[0],
                              sheriff_key,
                              bug_id=123,
                              internal_only=True)
     self._AddAnomalyEntities([(150, 250)],
                              test_keys[0],
                              sheriff_key,
                              bug_id=123)
     response = self.testapp.post('/api/alerts/bug_id/123')
     anomalies = self.GetJsonValue(response, 'anomalies')
     self.assertEqual(1, len(anomalies))
def webapp_add_wsgi_middleware(app):
    from google.appengine.ext.appstats import recording
    app = recording.appstats_wsgi_middleware(app)
    return app


# pylint: enable=invalid-name


def _AddThirdPartyLibraries():
    """Registers the third party libraries with App Engine.

  In order for third-party libraries to be available in the App Engine
  runtime environment, they must be added with vendor.add. The directories
  added this way must be inside the App Engine project directory.
  """
    # The deploy script is expected to add links to third party libraries
    # before deploying. If the directories aren't there (e.g. when running tests)
    # then just ignore it.
    for library_dir in dashboard.THIRD_PARTY_LIBRARIES:
        if os.path.exists(library_dir):
            vendor.add(os.path.join(os.path.dirname(__file__), library_dir))


_AddThirdPartyLibraries()

# This is at the bottom because datastore_hooks may depend on third_party
# modules.
from dashboard.common import datastore_hooks
datastore_hooks.InstallHooks()