Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 是否有人拥有LoadRunner自动化API的工作脚本?_Perl_Loadrunner - Fatal编程技术网

Perl 是否有人拥有LoadRunner自动化API的工作脚本?

Perl 是否有人拥有LoadRunner自动化API的工作脚本?,perl,loadrunner,Perl,Loadrunner,目前,我正在编写Perl脚本,该脚本创建LoadRunner场景,执行测试,收集结果,恢复环境,并使用不同的场景变量再次重复该循环 我在创建新场景、添加生成器、添加2个组+脚本+运行时设置方面没有问题。但我有一个问题: 将场景计划从“场景”设置为“组” 设置每组的时间表 下面是代码片段: use strict; use v5.10; use Win32::OLE; use Win32::OLE::Enum; use Win32::OLE::Variant; use Data::Dumper; u

目前,我正在编写Perl脚本,该脚本创建LoadRunner场景,执行测试,收集结果,恢复环境,并使用不同的场景变量再次重复该循环

我在创建新场景、添加生成器、添加2个组+脚本+运行时设置方面没有问题。但我有一个问题:

  • 将场景计划从“场景”设置为“组”
  • 设置每组的时间表
  • 下面是代码片段:

    use strict;
    use v5.10;
    use Win32::OLE;
    use Win32::OLE::Enum;
    use Win32::OLE::Variant;
    use Data::Dumper;
    use Win32::OLE::Const 'LoadRunner Automation Library';
    use constant False  =>  Variant(VT_BOOL,'');
    use constant True  =>  Variant(VT_BOOL,1);
    
    my $lrEngine = Win32::OLE->new('wlrun.LrEngine') or die "oops\n";
    my $lrScenario = $lrEngine->Scenario();
    my $rc = $lrScenario->new(0, 1); # do not save previous, Regular vusers based scenario 
    if ($rc != 0) {
        print "Win32::OLE::LastError: ".Win32::OLE::LastError()."\n";
        print "lrScenario->new(0, 1):rc: $rc\n";
    }
    # snip-snipped - add generator
    # snip-snipped - add @groups definition
    foreach my $group (@groups) {
        print "scriptName: $group->{scriptName}\n";
        my $scriptLocation = $group->{scriptLocation};
        my $scriptName = Variant(VT_BSTR|VT_BYREF, $group->{scriptName});
    
        { # add $group->{scriptName} script
            $rc = $lrScenario->Scripts->Add($scriptLocation, $scriptName);
            if ($rc != 0) {
                print "Win32::OLE::LastError: ".Win32::OLE::LastError()."\n";
                print "lrScenario->Scripts->Add($scriptLocation, $scriptName):rc: $rc\n";
            }
        }
        #############################################################################
        my $groupName = Variant(VT_BSTR|VT_BYREF, $group->{groupName});
        { # add $group->{groupName} group
            $rc = $lrScenario->Groups->Add($groupName);
            if ($rc != 0) {
                print "Win32::OLE::LastError: ".Win32::OLE::LastError()."\n";
                print "lrScenario->Groups->Add:rc: $rc\n";
            }
            $rc = $lrScenario->Groups->Item($groupName)->AddVusers($scriptName, $hostname, 3);
            if ($rc != 0) {
                print "Win32::OLE::LastError: ".Win32::OLE::LastError()."\n";
                print "lrScenario->Groups->Item($groupName)->AddVusers:rc: $rc\n";
            }
        }
        #############################################################################
        # snip-snipped - change group script run time setting
    }
    
    my $scheduleName = Variant(VT_BSTR|VT_BYREF, 'Schedule123');
    my $lrManualScheduleData = $lrScenario->ManualScheduler->AddSchedule($scheduleName, lrGroupSchedule); # Scenario schedule mode
    if (!$lrManualScheduleData) {
        say "Win32::OLE::LastError: ".Win32::OLE::LastError();
        say "lrScenario->ManualScheduler->AddSchedule:rc: $rc";
    }
    $rc = $lrScenario->ManualScheduler->SetCurrentSchedule($scheduleName);
    if ($rc != 0) {
        say "Win32::OLE::LastError: ".Win32::OLE::LastError();
        say "lrScenario->ManualScheduler->SetCurrentSchedule:rc: $rc";
    }
    print "\$lrScenario->ManualScheduler->SetScheduleMode($scheduleName, lrGroupSchedule):";
    $lrScenario->ManualScheduler->SetScheduleMode($scheduleName, lrGroupSchedule);
    #LrManualScheduleMode ->  lrGroupSchedule = 1, lrScenarioSchedule = 0
    say "Win32::OLE::LastError: ".Win32::OLE::LastError();
    
    $lrManualScheduleData->{'InitAllBeforeRun'} = 'True';
    $lrManualScheduleData->{'DurationMode'} = 1;
    $lrManualScheduleData->{'Duration'} = 60 * 60;
    $lrManualScheduleData->{'RampupBatchSize'} = 1;
    $lrManualScheduleData->{'RampupMode'} = lrRampupByGroupBatches;
    $lrManualScheduleData->{'RampupTimeInterval'} = 5;
    $lrManualScheduleData->{'RampdownBatchSize'} = 1;   
    $lrManualScheduleData->{'RampdownMode'} = lrRampupByGroupBatches;
    $lrManualScheduleData->{'RampdownTimeInterval'} = 5;
    
    $rc = $lrScenario->ManualScheduler->{'ScenarioStartTimeMode'} = 0; # Start scenario without delay 
    
    #test
    say "$scheduleName: ".$lrScenario->ManualScheduler->Schedule($scheduleName)->{'Duration'}; # returns 300
    

    我也有同样的问题。设置这些属性,然后调用setschedulemode或setcurrentschedule似乎不起作用。我发现的唯一解决方法是使用setscheduledata方法传递xml。您需要获取scheduledata的当前xml,然后更改xml,将修改后的xml传递给setscheduledata方法。希望这能有所帮助

    lrManualScheduleData data = engine.Scenario.ManualScheduler.get_Schedule("Schedule 1");
    
    String scheduleXML,errStr;
    
    int returncode = data.getScheduleData(out scheduleXML, out errStr);
    
    // Manipulate the XML to set whatever schedule you want
    
    data.SetScheduleData(scheduleXML, out errStr);