def test_get_metrics_data_with_parameters( client, mtm, ptm, plm, monkeypatch ): """ Test metrics data retrieval with all available query parameters. """ setup_data = setup_pushlog_walk_tests(mtm, ptm, plm, monkeypatch, True) metric_values = get_metric_values() sample_data = TestData(perftest_data()) sample_data['test_build']['branch'] = setup_data['branch'] parameters = _get_uri_parameters(sample_data) fail_revision = setup_data['fail_revision'] skip_revision = setup_data['skip_revision'] revision = setup_data['sample_revisions'][3] uri = "/{0}/testdata/metrics/{1}/{2}".format( ptm.project, setup_data['branch'], revision ) reference_response = client.get(uri) for params in parameters: uri_with_params = "{0}?{1}".format( uri, params['query_params'] ) fail_uri_with_params = "{0}?{1}".format( uri, params['fail_params'] ) success_response = client.get(uri_with_params) fail_response = client.get(fail_uri_with_params) if 'page_name' in params['query_params']: page_sample = reference_response.json[0].copy() page_filter = page_sample['pages']['three.com'] page_sample['pages'] = { 'three.com':page_filter } assert success_response.json[0] == page_sample #Failed page result will return the rest of the #data associated with the test but results will be #empty assert fail_response.json == [] else: assert success_response.json[0] == reference_response.json[0] assert fail_response.json == []
def test_get_test_data_parameters(client, ptm): """ Test raw test data retrieval with all available query parameters. """ sample_data = TestData(perftest_data()) revision = sample_data['test_build']['revision'] branch = sample_data['test_build']['branch'] uri = "/{0}/testdata/raw/{1}/{2}".format(ptm.project, branch, revision) #Store and process object ptm.store_test_data( json.dumps( sample_data ) ) ptm.process_objects(1) parameters = _get_uri_parameters(sample_data) for params in parameters: uri_with_params = "{0}?{1}".format( uri, params['query_params'] ) fail_uri_with_params = "{0}?{1}".format( uri, params['fail_params'] ) success_response = client.get(uri_with_params) fail_response = client.get(fail_uri_with_params) if 'page_name' in params['query_params']: #page name filter will only return the pages that match #the page name specified. Build a sample data structure #that matches. page_sample = sample_data.copy() page_filter = sample_data['results']['three.com'] page_sample['results'] = { 'three.com':page_filter } assert success_response.json[0] == page_sample #Failed page result will return the rest of the #data associated with the test but results will be #empty assert fail_response.json[0]['results'] == {} else: assert success_response.json[0] == sample_data assert fail_response.json == []
def test_get_metrics_summary_with_parameters( client, mtm, ptm, plm, monkeypatch ): """ Test the metrics data summary with all available query parameters. """ setup_data = setup_pushlog_walk_tests(mtm, ptm, plm, monkeypatch, True) metric_values = get_metric_values() sample_data = TestData(perftest_data()) sample_data['test_build']['branch'] = setup_data['branch'] parameters = _get_uri_parameters(sample_data) fail_revision = setup_data['fail_revision'] skip_revision = setup_data['skip_revision'] revision = setup_data['sample_revisions'][3] uri = ("/{0}/testdata/metrics/{1}/{2}/summary?" "product=Firefox&pushlog_project={3}") uri = uri.format( ptm.project, setup_data['branch'], revision, plm.project ) reference_response = client.get(uri) for params in parameters: if 'page_name' in params['query_params']: continue uri_with_params = "{0}&{1}".format( uri, params['query_params'] ) fail_uri_with_params = "{0}&{1}".format( uri, params['fail_params'] ) success_response = client.get(uri_with_params) fail_response = client.get(fail_uri_with_params) assert success_response.json.keys() == reference_response.json.keys() assert 'summary' not in fail_response.json
def test_get_test_data(client, ptm): """ Test raw test data retrieval through the web service """ sample_data = TestData(perftest_data()) revision = sample_data['test_build']['revision'] branch = sample_data['test_build']['branch'] uri = "/{0}/testdata/raw/{1}/{2}".format(ptm.project, branch, revision) #Store and process object ptm.store_test_data( json.dumps( sample_data ) ) ptm.process_objects(1) response = client.get(uri) assert response.json[0] == sample_data