def run(ObjectList, TagList, IgnoreEmptyTags, CurrVal, Iteration): plLogger = PLLogger.GetLogger('methodology') plLogger.LogInfo("run") # Find the StmTrafficMix objects tm_list = dm_utils.process_inputs_for_objects(ObjectList, TagList, "StmTrafficMix") # Find the StreamBlocks sb_list = dm_utils.process_inputs_for_objects(ObjectList, TagList, "StreamBlock") sb_dict = {} for sb in sb_list: sb_dict[sb.GetObjectHandle()] = sb # Merge the lists for tm in tm_list: sb_list = get_traffic_mix_streamblocks(tm) for sb in sb_list: sb_dict[sb.GetObjectHandle()] = sb plLogger.LogInfo("modifying streamblocks: ") for sb_hnd in sb_dict.keys(): plLogger.LogInfo("sb: " + sb_dict[sb_hnd].Get("Name")) # Strip whitespace CurrVal = "".join(CurrVal.split()) # Process frame size from CurrVal match = parse_iterate_mode_input(CurrVal) plLogger.LogInfo("match: " + str(match) + " for " + CurrVal) if match is not None: for sb in sb_dict.values(): # Configure the Streamblock if match["type"] == "fixed": plLogger.LogInfo("Fixed frame size") # Fixed Frame Size sb.Set("FrameLengthMode", ENUM_FRAME_LENGTH_MODE_FIXED) sb.Set("FixedFrameLength", match["start"]) elif match["type"] == "incr": # Incr Frame Size plLogger.LogInfo("Incr frame size") sb.Set("FrameLengthMode", ENUM_FRAME_LENGTH_MODE_INCR) sb.Set("MinFrameLength", match["start"]) sb.Set("StepFrameLength", match["step"]) sb.Set("MaxFrameLength", match["end"]) elif match["type"] == "rand": plLogger.LogInfo("Random frame size") # Random Frame Size sb.Set("FrameLengthMode", ENUM_FRAME_LENGTH_MODE_RANDOM) sb.Set("MinFrameLength", match["start"]) sb.Set("MaxFrameLength", match["end"]) elif match["type"] == "imix": plLogger.LogInfo("IMIX frame size") frame_len_dist_handle = get_frame_len_dist(match["name"]) if frame_len_dist_handle == 0: plLogger.LogError("Invalid IMIX distribution named: " + match["name"]) return False sb.Set("FrameLengthMode", ENUM_FRAME_LENGTH_MODE_IMIX) # Need to remove any affiliated FrameLengthDistribution objects # before we can add a new one (should only be one) rel_name = "AffiliationFrameLengthDistribution" fld_list = sb.GetObjects("FrameLengthDistribution", RelationType(rel_name)) for fld in fld_list: sb.RemoveObject(fld, RelationType(rel_name)) sb.AddObject(frame_len_dist_handle, RelationType(rel_name)) else: plLogger.LogError("Invalid frame size mode: " + str(match["type"])) return False else: plLogger.LogError("Invalid frame size: " + str(CurrVal)) return False # Update the results hnd_reg = CHandleRegistry.Instance() this_cmd = hnd_reg.Find(__commandHandle__) update_results_with_current_value('FrameSize', CurrVal, Iteration, this_cmd) return True