def run(Iteration):
    plLogger = PLLogger.GetLogger('methodology')
    plLogger.LogInfo(" Run IteratorValidateCommand")

    hnd_reg = CHandleRegistry.Instance()
    this_cmd = get_this_cmd()

    # This is bad but there doesn't seem to be any other way of getting
    # the current iterator command handle
    while_cmd = this_cmd.GetParent()
    if while_cmd is not None and while_cmd.IsTypeOf("SequencerWhileCommand"):
        iter_cmd_hnd = while_cmd.Get("ExpressionCommand")
        iter_cmd = hnd_reg.Find(iter_cmd_hnd)
        if iter_cmd is not None and \
           iter_cmd.IsTypeOf("spirent.methodology.IteratorCommand"):
            info_dict = ri.get_last_iteration_info_status(iter_cmd_hnd)
            if info_dict is not None:
                if info_dict[pc.STATUS][pc.VERDICT] == \
                   EnumVerdict.failed:
                    this_cmd.Set("Verdict", False)
                else:
                    # This is for none or passed
                    this_cmd.Set("Verdict", True)
            else:
                plLogger.LogError("ERROR: Failed to determine the " +
                                  "verdict of this iteration")
                # Not too sure what to do here
                this_cmd.Set("Verdict", True)
    else:
        # Set the verdict to True (PASS)
        this_cmd.Set("Verdict", True)

    return True
예제 #2
0
def test_multiple_iterator_get_status(stc, resource_cleanup):
    RI.create_test()
    RI.start_test()
    framesizelist = [64, 128, 256]
    loadlist = [10, 20]
    fs_itr_id = 1
    fs_iterator_handle = 12123
    load_handle = 5555
    assert RI.get_last_iteration_info_status(fs_iterator_handle) is None
    assert RI.get_last_iteration_info_status(load_handle) is None
    for fs in framesizelist:
        RI.set_iterator_current_value(fs_iterator_handle, 'FrameSize', fs, fs_itr_id)
        if fs_itr_id == 1:
            assert RI.get_last_iteration_info_status(fs_iterator_handle) is None
        else:
            assert RI.get_last_iteration_info_status(fs_iterator_handle) is not None
        load_id = 1
        for load in loadlist:
            RI.set_iterator_current_value(load_handle, 'Load', load, load_id)
            if load_id == 1:
                assert RI.get_last_iteration_info_status(load_handle) is None
            else:
                assert RI.get_last_iteration_info_status(load_handle) is not None
            RI.add_provider_result(test_utils.dummy_verify_result_failed)
            RI.add_provider_result(test_utils.dummy_verify_result_passed)
            if load_id == 1:
                assert RI.get_last_iteration_info_status(load_handle) is None
            else:
                assert RI.get_last_iteration_info_status(load_handle) is not None
            load_id += 1
            RI.complete_iteration()
            last_itr_data = RI.get_last_iteration_info_status(load_handle)
            assert last_itr_data is not None
            assert last_itr_data[pc.STATUS][pc.VERDICT] == EnumVerdict.failed
            assert last_itr_data[pc.STATUS][pc.EXEC_STATUS] == EnumExecStatus.completed
        RI.end_iterator()
        # result object should be deleted for load
        assert RI.get_last_iteration_info_status(load_handle) is None
        # frame size
        if fs_itr_id == 1:
            assert RI.get_last_iteration_info_status(fs_iterator_handle) is None
        else:
            assert RI.get_last_iteration_info_status(fs_iterator_handle) is not None
        fs_itr_id += 1
        RI.complete_iteration()
        last_itr_data = RI.get_last_iteration_info_status(fs_iterator_handle)
        assert last_itr_data is not None
        assert last_itr_data[pc.STATUS][pc.VERDICT] == EnumVerdict.none
        assert last_itr_data[pc.STATUS][pc.EXEC_STATUS] == EnumExecStatus.completed
    RI.end_iterator()
    # result object should be deleted for framesize
    assert RI.get_last_iteration_info_status(fs_iterator_handle) is None
    RI.end_test()
    RI.stop_test()