def test_run_fail_no_mix(stc): ctor = CScriptableCreator() stc_sys = CStcSystem.Instance() seq = stc_sys.GetObject('Sequencer') cmd = ctor.Create(PKG + '.AllocateTrafficMixLoadCommand', seq) command.get_this_cmd = MagicMock(return_value=cmd) ret = command.run(cmd.Get('StmTrafficMix'), cmd.Get('TrafficMixTagName'), cmd.Get('Load'), cmd.Get('LoadUnit')) assert False is ret
def test_load_adjust_for_kbps_mbps_load(stc): ctor = CScriptableCreator() stc_sys = CStcSystem.Instance() proj = stc_sys.GetObject('Project') port = ctor.Create('Port', proj) seq = stc_sys.GetObject('Sequencer') # Create the traffic mix traf_mix = ctor.Create('StmTrafficMix', proj) traf_mix.Set('MixInfo', mix_info_3_components()) tmpl_list = [] sb_list = [] tmpl_list.append(ctor.Create('StmTemplateConfig', traf_mix)) sb1 = ctor.Create('StreamBlock', port) sb_list.append(sb1) tmpl_list[-1].AddObject(sb1, RelationType('GeneratedObject')) tmpl_list.append(ctor.Create('StmTemplateConfig', traf_mix)) sb2 = ctor.Create('StreamBlock', port) sb_list.append(sb2) tmpl_list[-1].AddObject(sb2, RelationType('GeneratedObject')) cmd = ctor.Create(PKG + '.AllocateTrafficMixLoadCommand', seq) cmd.Set('StmTrafficMix', traf_mix.GetObjectHandle()) assert command.run(cmd.Get('StmTrafficMix'), '', 0.01, 'KILOBITS_PER_SECOND') lp_list = [sb.GetObject('StreamBlockLoadProfile', RelationType('AffiliationStreamBlockLoadProfile')) for sb in sb_list] load_list = [lp.Get('Load') for lp in lp_list] assert [1, 9] == load_list load_unit_list = [lp.Get('LoadUnit') for lp in lp_list] assert ['BITS_PER_SECOND', 'BITS_PER_SECOND'] == load_unit_list mix_info = traf_mix.Get('MixInfo') err_str, mix_info = json_utils.load_json(mix_info) assert err_str == "" mix_info["components"][0]["weight"] = "45.0%" mix_info["components"][1]["weight"] = "55.0%" mix_info["loadUnits"] = "MEGABITS_PER_SECOND" traf_mix.Set('MixInfo', json.dumps(mix_info)) assert command.run(cmd.Get('StmTrafficMix'), '', 0.01, 'MEGABITS_PER_SECOND') load_list = [lp.Get('Load') for lp in lp_list] assert [4.5, 5.5] == load_list load_unit_list = [lp.Get('LoadUnit') for lp in lp_list] assert ['KILOBITS_PER_SECOND', 'KILOBITS_PER_SECOND'] == load_unit_list
def test_run_with_tag(stc): ctor = CScriptableCreator() stc_sys = CStcSystem.Instance() proj = stc_sys.GetObject('Project') port = ctor.Create('Port', proj) seq = stc_sys.GetObject('Sequencer') # Create and tag the traffic mix traf_mix = ctor.Create('StmTrafficMix', proj) traf_mix.Set('MixInfo', mix_info_2_components()) tag_utils.add_tag_to_object(traf_mix, 'MixTag') cmd = ctor.Create(PKG + '.AllocateTrafficMixLoadCommand', seq) cmd.Set('StmTrafficMix', traf_mix.GetObjectHandle()) tmpl_list = [] sb_list = [] tmpl_list.append(ctor.Create('StmTemplateConfig', traf_mix)) sb1 = ctor.Create('StreamBlock', port) sb_list.append(sb1) tmpl_list[-1].AddObject(sb1, RelationType('GeneratedObject')) tmpl_list.append(ctor.Create('StmTemplateConfig', traf_mix)) sb2 = ctor.Create('StreamBlock', port) sb_list.append(sb2) tmpl_list[-1].AddObject(sb2, RelationType('GeneratedObject')) assert command.run(None, 'MixTag', 4, 'FRAMES_PER_SECOND') lp_list = [sb.GetObject('StreamBlockLoadProfile', RelationType('AffiliationStreamBlockLoadProfile')) for sb in sb_list] load_list = [lp.Get('Load') for lp in lp_list] assert [3, 1] == load_list gen = port.GetObject("Generator") assert gen is not None gen_conf = gen.GetObject("GeneratorConfig") assert gen_conf is not None assert gen_conf.Get('schedulingmode') == 'RATE_BASED' roots = traf_mix.Get('MixInfo') assert roots err_str, root = json_utils.load_json(roots) assert err_str == "" assert 'loadUnits' in root assert root['loadUnits'] == 'FRAMES_PER_SECOND' assert 'components' in root assert len(root['components']) == 2 assert 'appliedValue' in root['components'][0] assert root['components'][0]['appliedValue'] == 3 assert 'appliedValue' in root['components'][1] assert root['components'][1]['appliedValue'] == 1
def test_run_fail_invalid_mix(stc): ctor = CScriptableCreator() stc_sys = CStcSystem.Instance() proj = stc_sys.GetObject('Project') seq = stc_sys.GetObject('Sequencer') # Create the traffic mix traf_mix = ctor.Create('StmTrafficMix', proj) cmd = ctor.Create(PKG + '.AllocateTrafficMixLoadCommand', seq) command.get_this_cmd = MagicMock(return_value=cmd) cmd.Set('StmTrafficMix', traf_mix.GetObjectHandle()) ret = command.run(cmd.Get('StmTrafficMix'), cmd.Get('TrafficMixTagName'), cmd.Get('Load'), cmd.Get('LoadUnit')) assert False is ret
def test_run_fraction(stc): ctor = CScriptableCreator() stc_sys = CStcSystem.Instance() proj = stc_sys.GetObject('Project') port = ctor.Create('Port', proj) seq = stc_sys.GetObject('Sequencer') # Create the traffic mix traf_mix = ctor.Create('StmTrafficMix', proj) traf_mix.Set('MixInfo', mix_info_2_components()) cmd = ctor.Create(PKG + '.AllocateTrafficMixLoadCommand', seq) cmd.Set('StmTrafficMix', traf_mix.GetObjectHandle()) tmpl_list = [] sb_list = [] tmpl_list.append(ctor.Create('StmTemplateConfig', traf_mix)) sb1 = ctor.Create('StreamBlock', port) sb_list.append(sb1) tmpl_list[-1].AddObject(sb1, RelationType('GeneratedObject')) tmpl_list.append(ctor.Create('StmTemplateConfig', traf_mix)) sb2 = ctor.Create('StreamBlock', port) sb_list.append(sb2) tmpl_list[-1].AddObject(sb2, RelationType('GeneratedObject')) assert command.run(cmd.Get('StmTrafficMix'), '', 10.0, 'PERCENT_LINE_RATE') lp_list = [sb.GetObject('StreamBlockLoadProfile', RelationType('AffiliationStreamBlockLoadProfile')) for sb in sb_list] load_list = [lp.Get('Load') for lp in lp_list] assert [7.5, 2.5] == load_list roots = traf_mix.Get('MixInfo') assert roots err_str, root = json_utils.load_json(roots) assert err_str == "" assert 'loadUnits' in root assert root['loadUnits'] == 'PERCENT_LINE_RATE' assert 'components' in root assert len(root['components']) == 2 assert 'appliedValue' in root['components'][0] assert root['components'][0]['appliedValue'] == 7.5 assert 'appliedValue' in root['components'][1] assert root['components'][1]['appliedValue'] == 2.5