def make_query(index, combined_filter, includes, excludes, agg=None, size=1): """ Simplifies the execution and usage of a typical query, including cleaning up the results. Args: index: index to search on combined_filter: combined set of filters to run the query with includes: list of fields to include on the results (keep as small as possible to improve execution time) excludes: list of fields to explicitly exclude from the results size: [Optional] number of results to return. Defaults to 1. Returns: List of dicts with results of the query. """ search = BuildResults().search(index=index) search = search.source(includes=includes, excludes=excludes) if agg: search = search.aggs.metric("fail_count", agg) search = search.query("bool", filter=[combined_filter])[0:1] # pylint: disable=no-member search = search[0:size] response = search.execute() results = [] if agg: results = response["aggregations"]["fail_count"]["buckets"] else: for hit in response["hits"]["hits"]: results.append(hit["_source"]) return results
def test_create_factory_method(): """Test create factory method """ date_time = datetime.utcnow() build_results = BuildResults.create( job_name="my_jobname", job_link="my_joburl", build_date_time=str(date_time), build_id="1234", platform="Linux-x86_64", product="MyProduct", ) assert build_results.br_job_name == "my_jobname" assert build_results.br_job_url_key == "my_joburl" assert build_results.br_build_date_time == str(date_time) assert build_results.br_build_id_key == "1234" assert build_results.br_platform == "Linux-x86_64" assert build_results.br_product == "MyProduct" assert build_results.br_version_key == ebr_connector.__version__ assert build_results.to_dict() == { "br_build_date_time": str(date_time), "br_build_id_key": "1234", "br_job_name": "my_jobname", "br_job_url_key": "my_joburl", "br_platform": "Linux-x86_64", "br_product": "MyProduct", "br_version_key": ebr_connector.__version__, }
def assemble_build(args, retrieve_function, retrieve_args): """ Provides a CLI interface to send build results to Elasticsearch Requires a callback function for retrieving tests, but gets the status from command line arguments. Args: args: argparse'd arguments retrieve_function: call back argument to decode retrieve and decode tests retrieve_args: arguments to the retrieve_function callback """ job_info = get_json_job_details(args.buildurl) job_name = job_info["fullName"] build_info = get_json_job_details(args.buildurl + "/" + args.buildid) build_date_time = datetime.utcfromtimestamp( int(build_info["timestamp"]) / 1000).isoformat() build_job_url = build_info["url"] build_results = BuildResults.create( job_name=job_name, build_id=args.buildid, build_date_time=build_date_time, job_link=build_job_url, platform=args.platform, product_version=args.productversion, ) build_results.store_tests(retrieve_function, *retrieve_args) build_results.store_status(status_args, build_info["result"]) return build_results
def create_dummy_build_result(): """Creates a dummy build results object""" date_time = datetime.utcnow() return BuildResults.create( job_name="my_jobname", job_link="my_joburl", build_date_time=str(date_time), build_id="1234", platform="Linux-x86_64", product="MyProduct", )
def get_index_data(): """Return data to be stored in index. """ job_data_set = [ { "callback": get_test_data_for_failed_build, "buildstatus": "FAILURE", "buildid": 1234, "jobname": "cpp-reflection-tests-BB-baseline", }, { "callback": get_test_data_for_successful_build, "buildstatus": "SUCCESS", "buildid": 3, "jobname": "cpp-reflection-tests-BB/PR-1234", }, { "callback": get_test_data_for_successful_build, "buildstatus": "SUCCESS", "buildid": 12345, "jobname": "cpp-reflection-tests-BB-baseline", }, ] index_data = [] for job_data in job_data_set: date_time = (datetime.utcnow()).isoformat() build_results = BuildResults.create( job_name=job_data.get("jobname"), job_link="http://ci/%s" % job_data.get("jobname"), build_date_time=str(date_time), build_id=job_data.get("buildid"), platform="Linux-x86_64", product="MyProduct", ) mock_status_callback = MagicMock() mock_status_callback.return_value = job_data.get("buildstatus") build_results.store_tests(job_data.get("callback")) build_results.store_status(mock_status_callback) index_data.append({ "_index": get_index_name(), "_type": "doc", "_id": random.getrandbits(128), "_source": build_results.to_dict(), }) return index_data
def test_default_constructor(): """Test default constructor """ build_results = BuildResults() assert build_results.__dict__ == {"_d_": {}, "meta": {}}