Пример #1
0
 def testUpgradeNew(self):
     t = graph_data.TestMetadata(has_rows=True,
                                 id='master/bot/suite/measurement/case')
     t.UpdateSheriff()
     t.put()
     page_state.PageState(
         id='test_sid',
         value=json.dumps({
             'charts': [
                 {
                     'seriesGroups': [
                         ['master/bot/suite/measurement', ['measurement']],
                     ],
                 },
             ],
         })).put()
     response = self.testapp.get('/short_uri', {
         'sid': 'test_sid',
         'v2': 'true'
     })
     expected = {
         'testSuites': ['suite'],
         'measurements': ['measurement'],
         'bots': ['master:bot'],
         'testCases': [],
     }
     actual = json.loads(response.body)['chartSections'][0]['parameters']
     self.assertEqual(expected, actual)
     self.assertEqual(response.body,
                      ndb.Key('PageState', 'test_sid').get().value_v2)
Пример #2
0
    def testDeleteAllViaTaskqueue(self):
        page_state.PageState(id=1).put()
        page_state.PageState(id=2).put()

        limit_patch = mock.patch.object(delete_all_entities,
                                        'QUERY_PAGE_LIMIT', 1)
        limit_patch.start()
        self.addCleanup(limit_patch.stop)

        deferred_patch = mock.patch.object(delete_all_entities, 'deferred')
        deferred_patch.start()
        self.addCleanup(deferred_patch.stop)

        delete_all_entities.DeleteAllEntities('PageState')
        self.assertEqual(
            1, len(ndb.Query(kind='PageState').fetch(keys_only=True)))
        delete_all_entities.deferred.defer.assert_called_once_with(
            delete_all_entities.DeleteAllEntities, 'PageState')
Пример #3
0
    def testOnlyDeleteKind(self):
        anomaly.Anomaly(
            id='anomaly',
            test=utils.TestMetadataKey('master/bot/suite/measurement')).put()
        page_state.PageState(id='page_state').put()
        self.assertEqual(
            1, len(ndb.Query(kind='PageState').fetch(keys_only=True)))
        self.assertEqual(1,
                         len(ndb.Query(kind='Anomaly').fetch(keys_only=True)))

        delete_all_entities.DeleteAllEntities('PageState')
        self.assertEqual(
            0, len(ndb.Query(kind='PageState').fetch(keys_only=True)))
        self.assertEqual(1,
                         len(ndb.Query(kind='Anomaly').fetch(keys_only=True)))
Пример #4
0
    def post(self):
        """Handles saving page states and getting state id."""

        state = self.request.get('page_state')

        if not state:
            self.ReportError('Missing required parameters.', status=400)
            return

        state = state.encode('utf-8')

        state_id = GenerateHash(state)

        if not ndb.Key(page_state.PageState, state_id).get():
            page_state.PageState(id=state_id, value=state).put()

        self.response.out.write(json.dumps({'sid': state_id}))
Пример #5
0
  def testPost_WithValidSidParameter(self):
    sheriff_key = self._AddSheriff()
    test_keys = self._AddTests()
    selected_ranges = [(400, 900), (200, 700)]
    selected_keys = self._AddAnomalyEntities(
        selected_ranges, test_keys[0], sheriff_key)

    json_keys = json.dumps(selected_keys)
    state_id = short_uri.GenerateHash(','.join(selected_keys))
    page_state.PageState(id=state_id, value=json_keys).put()

    response = self.testapp.post('/group_report?sid=%s' % state_id)
    alert_list = self.GetJsonValue(response, 'alert_list')

    # Confirm the first N keys are the selected keys.
    first_keys = [alert_list[i]['key'] for i in xrange(len(selected_keys))]
    self.assertSetEqual(set(selected_keys), set(first_keys))
    self.assertEqual(2, len(alert_list))
Пример #6
0
    def testPost_WithValidSidParameter(self):
        sheriff_key = self._AddSheriff()
        test_keys = self._AddTests()
        selected_ranges = [(400, 900), (200, 700)]
        selected_keys = self._AddAnomalyEntities(selected_ranges, test_keys[0],
                                                 sheriff_key)

        json_keys = json.dumps(selected_keys)
        state_id = short_uri.GenerateHash(','.join(selected_keys))
        page_state.PageState(id=state_id, value=json_keys).put()

        response = self.testapp.post('/group_report?sid=%s' % state_id)
        alert_list = self.GetJsonValue(response, 'alert_list')

        self.assertEqual(unicode(selected_keys[1], 'utf-8'),
                         alert_list[0].get('key'))
        self.assertEqual(unicode(selected_keys[0], 'utf-8'),
                         alert_list[1].get('key'))
        self.assertEqual(2, len(alert_list))
Пример #7
0
    def _GetQueryStringForOldUri(self):
        """Gets a new query string if old URI parameters are present.

    SID is a hash string generated from a page state dictionary which is
    created here from old URI request parameters.

    Returns:
      A query string if request parameters are from old URI, otherwise None.
    """
        masters = self.request.get('masters')
        bots = self.request.get('bots')
        tests = self.request.get('tests')
        checked = self.request.get('checked')

        if not (masters and bots and tests):
            return None

        # Page state is a list of chart state.  Chart state is
        # a list of pair of test path and selected series which is used
        # to generate a chart on /report page.
        state = _CreatePageState(masters, bots, tests, checked)

        # Replace default separators to remove whitespace.
        state_json = json.dumps(state, separators=(',', ':'))
        state_id = short_uri.GenerateHash(state_json)

        # Save page state.
        if not ndb.Key(page_state.PageState, state_id).get():
            page_state.PageState(id=state_id, value=state_json).put()

        query_string = 'sid=' + state_id
        if self.request.get('start_rev'):
            query_string += '&start_rev=' + self.request.get('start_rev')
        if self.request.get('end_rev'):
            query_string += '&end_rev=' + self.request.get('end_rev')
        if self.request.get('rev'):
            query_string += '&rev=' + self.request.get('rev')
        return query_string
Пример #8
0
def GetOrCreatePageState(state):
    state = state.encode('utf-8')
    state_id = GenerateHash(state)
    if not ndb.Key(page_state.PageState, state_id).get():
        page_state.PageState(id=state_id, value=state).put()
    return state_id