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
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()