def run():
    exit_state = True
    logger = PLLogger.GetLogger('methodology')
    try:
        sequencer = CStcSystem.Instance().GetObject("Sequencer")
        if sequencer is None:
            raise Exception('Unable to find sequencer object.')

        if sequencer.Get('StoppedCommand') == 0:
            # case 1: normal end of test
            logger.LogInfo("Calling end test.")
            ResultInterface.end_test()
        else:
            if sequencer.Get('TestState').lower() != 'failed':
                # case 2: sequencer manually stopped by user
                logger.LogInfo("Calling stop test.")
                ResultInterface.stop_test()
            else:
                # case 3: sequencer stopped on error
                logger.LogInfo("Calling stop test with error.")
                seq_status = sequencer.Get('Status')
                pdg.submit_sequencer_execution_error(seq_status)
                ResultInterface.stop_test()

    except Exception, e:
        stack_trace = traceback.format_exc()
        logger.LogError(stack_trace)
        pdg.submit_command_execution_error('EndOfTestCommand',
                                           str(e),
                                           stack_trace)
        ResultInterface.stop_test()
        exit_state = False
def run(ChartTemplateJsonFileName, Title,
        XAxisTitle, XAxisCategories,
        YAxisTitle, YAxisCategories,
        Series, SeriesDataType, CustomModifier,
        UseMultipleResultsDatabases, UseSummary, ReportGroup):
    logger = PLLogger.GetLogger('ExportDbChartCommand')
    try:
        db_list = get_dbs(UseMultipleResultsDatabases, UseSummary)
        result_data = init_chart_data_dict(ReportGroup)

        series_data = get_series_data(db_list)
        add_series_data_list(result_data, series_data)

        # If any sql queries were passed in, grab results from db
        sql_result_file_list = []
        sql_result_file_list.append(db_list[0])
        get_sql_data(result_data, sql_result_file_list)

        pdg.submit_provider_data(result_data)
    # Catch most of them here
    except Exception as e:
        trace = traceback.format_exc()
        logger.LogError(trace)
        pdg.submit_command_execution_error('ExportDbChartCommand',
                                           str(e), trace)
        return False
    except:
        trace = traceback.format_exc()
        logger.LogError(trace)
        pdg.submit_command_execution_error('ExportDbChartCommand',
                                           ProviderConst.UNKNOWN_EXCEPTION_MESSAGE,
                                           trace)
        return False
    return True
            else:
                # case 3: sequencer stopped on error
                logger.LogInfo("Calling stop test with error.")
                seq_status = sequencer.Get('Status')
                pdg.submit_sequencer_execution_error(seq_status)
                ResultInterface.stop_test()

    except Exception, e:
        stack_trace = traceback.format_exc()
        logger.LogError(stack_trace)
        pdg.submit_command_execution_error('EndOfTestCommand',
                                           str(e),
                                           stack_trace)
        ResultInterface.stop_test()
        exit_state = False
    except:
        stack_trace = traceback.format_exc()
        logger.LogError(stack_trace)
        pdg.submit_command_execution_error('EndOfTestCommand',
                                           pc.UNKNOWN_EXCEPTION_MESSAGE,
                                           tack_trace)
        ResultInterface.stop_test()
        exit_state = False

    clean_up()
    return exit_state


def reset():
    return True
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
                                                       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
    except:
        stack_trace = traceback.format_exc()
        logger.LogError(stack_trace)
        p.submit_command_execution_error(DisplayName,
                                         pc.UNKNOWN_EXCEPTION_MESSAGE,
                                         stack_trace)

        return False
    return True


def reset():
    global vdrvc_object
    vdrvc_object = None
    return True