Exemplo n.º 1
0
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
Exemplo n.º 4
0
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": {}}