Example #1
0
def test_get_formatted_drilldown_data_and_more():
    verdict = True
    verdictText = 'Not available'
    displayName = "My display name"
    pass_text = "my pass text"
    applyVerdictToSum = False
    viewName = 'MyTestDrv'
    displays = ['First', 'Second']
    report_group = pc.HIGHEST_PRIORITY_REPORT_GROUP
    drilldowndataObjects = []
    drilldowndata = {}
    drilldowndata[pc.SUMMARIZATION_OBJECT] = 'Port.Name'
    drilldowndata[pc.COLUMN_DISPLAY_NAMES] = displays
    resultviewdata1 = [1, 2]
    resultviewdata2 = [3, 4]
    resultviewdataList = [resultviewdata1, resultviewdata2]
    drilldowndata[pc.ROW] = resultviewdataList
    drilldowndataObjects.append(drilldowndata)

    drilldowndata = {}
    drilldowndata[pc.SUMMARIZATION_OBJECT] = 'Project.Name'
    drilldowndata[pc.COLUMN_DISPLAY_NAMES] = displays
    resultviewdata = [4, 6]
    resultviewdataList = [resultviewdata]
    drilldowndata[pc.ROW] = resultviewdataList
    drilldowndataObjects.append(drilldowndata)

    formatted_data = drv_utils.get_formatted_drilldown_data(drilldowndataObjects)

    provider_data = p.get_table_drv_drilldown_data(viewName,
                                                   verdict,
                                                   verdictText,
                                                   applyVerdictToSum,
                                                   formatted_data,
                                                   report_group,
                                                   displayName,
                                                   pass_text,
                                                   "")
    assert provider_data is not None
    info = provider_data[pc.INFO]
    status = provider_data[pc.STATUS]
    data = provider_data[pc.DATA]
    logger.info(json.dumps(provider_data, separators=(',', ':'), sort_keys=False))
    assert provider_data[pc.CLASS] == EnumDataClass.table_drv_drilldown
    assert provider_data[pc.DATA_FORMAT] == EnumDataFormat.table
    # verify info
    assert info[pc.RESULT_VIEW_NAME] == viewName
    assert info[pc.SUMMARIZATION_OBJECT] == 'Project.Name'
    assert info[pc.REPORT_GROUP] == pc.HIGHEST_PRIORITY_REPORT_GROUP
    assert info[pc.DISPLAY_NAME] == displayName
    # verify status
    assert status[pc.VERDICT] == EnumVerdict.passed
    assert status[pc.VERDICT_TEXT] == pass_text
    assert status[pc.EXEC_STATUS] == EnumExecStatus.completed
    assert status[pc.APPLY_VERDICT] == applyVerdictToSum

    assert len(data[pc.COLUMN_DISPLAY_NAMES]) == 2
    assert data[pc.COLUMN_DISPLAY_NAMES][0] == displays[0]
    assert data[pc.COLUMN_DISPLAY_NAMES][1] == displays[1]
    rows = data[pc.ROW]
    assert len(rows) == 1
    assert len(rows[0]) == 2
    assert rows[0][0] == 4
    assert rows[0][1] == 6
    assert (pc.LINKS in data) is True
    # verify drilldown results
    data = data[pc.LINKS]
    assert len(data) == 1
    data = data[0]
    data[pc.TAG] = 'Port.Name'
    assert (pc.LINK_DATA in data) is True
    data = data[pc.LINK_DATA]
    assert data[pc.CLASS] == EnumDataClass.drill_down_results
    assert data[pc.DATA_FORMAT] == EnumDataFormat.table
    assert data[pc.INFO][pc.SUMMARIZATION_OBJECT] == 'Port.Name'
    data = data[pc.DATA]
    assert len(data[pc.COLUMN_DISPLAY_NAMES]) == 2
    assert data[pc.COLUMN_DISPLAY_NAMES][0] == displays[0]
    assert data[pc.COLUMN_DISPLAY_NAMES][1] == displays[1]
    rows = data[pc.ROW]
    assert len(rows) == 2
    assert len(rows[0]) == 2
    assert rows[0][0] == 1
    assert rows[0][1] == 2
    assert rows[1][0] == 3
    assert rows[1][1] == 4
    assert (pc.LINKS in data) is False
def run(ApplyVerdictToSummary, DynamicResultViewName, OperationType,
        ResultCount, MinResultCount, MaxResultCount, ReportGroup, DisplayName,
        PassedVerdictExplanation, FailedVerdictExplanation):
    logger = PLLogger.GetLogger('methodology')
    global vdrvc_object
    try:
        drv = vdrvc_object
        # subscribe or refresh
        if drv_utils.subscribe(drv) is False:
            drv_utils.refresh(drv)

        # get verdict and text
        verdict_data = pu.get_comparision_verdict_with_text(OperationType,
                                                            drv.Get('ResultCount'),
                                                            ResultCount,
                                                            0,
                                                            0,
                                                            'result count')

        # generate drill down data
        prq = drv.GetObject('PresentationResultQuery')
        col_names = prq.GetCollection('SelectProperties')
        col_display_names = drv_utils.get_column_display_names(drv, col_names)

        active_groupby = drv_utils.get_active_groupby(drv)
        active_view_data = drv_utils.get_drilldown_data(drv,
                                                        active_groupby,
                                                        col_names,
                                                        col_display_names,
                                                        False)

        group_order_list = drv_utils.get_export_groupby_ordered(col_names, False)
        viewdata = []
        for groupbyKey in reversed(group_order_list):
            if active_groupby == groupbyKey:
                viewdata.append(active_view_data)
            else:
                viewdata.append(drv_utils.get_drilldown_data(drv,
                                                             groupbyKey,
                                                             col_names,
                                                             col_display_names,
                                                             True))

        drilldown_data = drv_utils.get_formatted_drilldown_data(viewdata)
        provider_data = p.get_table_drv_drilldown_data(DynamicResultViewName,
                                                       verdict_data[pc.VERDICT],
                                                       verdict_data[pc.VERDICT_TEXT],
                                                       ApplyVerdictToSummary,
                                                       drilldown_data,
                                                       ReportGroup,
                                                       DisplayName,
                                                       PassedVerdictExplanation,
                                                       FailedVerdictExplanation)
        p.submit_provider_data(provider_data)
        # revert drv config changes
        drv_utils.set_groupby(drv, active_groupby)
        drv_utils.refresh(drv)

    except Exception, e:
        stack_trace = traceback.format_exc()
        logger.LogError(stack_trace)
        p.submit_command_execution_error(DisplayName,
                                         str(e),
                                         stack_trace)
        return False