`
sandybuster
  • 浏览: 2060 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Grinder 的脚本运行

阅读更多

Grinder运行脚本 我所了解的有三种

1. 单个运行

这个适合在调试,测试代码的时候用,方便,快捷。

grinder.properties  文件如下

**grinder.properties**
  #
  # helloworld grinder.properties
  #

  #以下为你的环境配置
  grinder.jvm.arguments=-Dpython.home=c::/devTools/jython
  grinder.jvm.arguments=-Dpython.path=c:/grinder/bin
  grinder.jvm.arguments=-Dpython.verbose=debug

  grinder.processes=1
  grinder.threads=1
  grinder.runs=1

  #grinder.useConsole=false

  grinder.logDirectory=log
  grinder.numberOfOldLogs=0

  #grinder.initialSleepTime=500
  #grinder.sleepTimeFactor=0.01
  #grinder.sleepTimeVariation=0.005
  
  #sequence.py 就是你要运行的单个的脚步
  grinder.script=sequence.py
  grinder.useConsole = true

 2.Run test scripts in sequence(按顺序运行脚本)

这个方法适合完成一个project后,一起运行。

grinder.properties  文件如下

**grinder.properties**
  #
  # helloworld grinder.properties
  #

  grinder.jvm.arguments=-Dpython.home=c::/devTools/jython
  grinder.jvm.arguments=-Dpython.path=c:/grinder/bin
  grinder.jvm.arguments=-Dpython.verbose=debug

  grinder.processes=1
  grinder.threads=1
  grinder.runs=1

  #grinder.useConsole=false

  grinder.logDirectory=log
  grinder.numberOfOldLogs=0

  #grinder.initialSleepTime=500
  #grinder.sleepTimeFactor=0.01
  #grinder.sleepTimeVariation=0.005
  
 #下面2个就是你要运行的脚步
  script1=ebayUSForumsSimpleSearch
  script2=ebayUSForumsAdvancedSearch
  
  #mian.py 是控制顺序运行的脚步的脚步
  grinder.script=main.py
  grinder.useConsole = true

 main.py

# Run test scripts in sequence
#
# Scripts are defined in Python modules (helloworld.py, goodbye.py)
# specified in grinder.properties:
#
#   script1=helloworld
#   script2=goodbye

from net.grinder.script.Grinder import grinder

from java.util import TreeMap

# TreeMap is the simplest way to sort a Java map.
scripts = TreeMap(grinder.properties.getPropertySubset("script"))

# Ensure modules are initialised in the process thread.
for module in scripts.values(): exec("import %s" % module)

def createTestRunner(module):
    exec("x = %s.TestRunner()" % module)
    return x

class TestRunner:
    def __init__(self):
        self.testRunners = [createTestRunner(m) for m in scripts.values()]

    # This method is called for every run.
    def __call__(self):
        for testRunner in self.testRunners: testRunner()

 这样的话,就可以顺序运行了。

 

3.Run test scripts in parallel(同时并行运行脚本)

个人认为这个方法有很多优点,可以更有效的进行压力测试

grinder.properties  文件如下

**grinder.properties**
  #
  # helloworld grinder.properties
  #

  grinder.jvm.arguments=-Dpython.home=c::/devTools/jython
  grinder.jvm.arguments=-Dpython.path=c:/grinder/bin
  grinder.jvm.arguments=-Dpython.verbose=debug

  grinder.processes=1
  #如果你要同时运行几个脚本,那么下面的grinder.threads的值应该>=脚本数。
  grinder.threads=4
  grinder.runs=1

  #grinder.useConsole=false

  grinder.logDirectory=log
  grinder.numberOfOldLogs=0

  #grinder.initialSleepTime=500
  #grinder.sleepTimeFactor=0.01
  #grinder.sleepTimeVariation=0.005
  
  grinder.script=main.py
  grinder.useConsole = true

 main.py

 

from net.grinder.script.Grinder import grinder

scripts = ["helloworld", "good"]
#If you want to add new scripts  you have two ways.
# 1.you can insert directly such as scripts = ["helloworld", "good"]
# 2.or you can do like this: scripts.append('xxx')


# Ensure modules are initialised in the process thread.
for script in scripts: exec("import %s" % script)
# import the scripts files such as helloworld.py good.py

def createTestRunner(script):
    exec("x = %s.TestRunner()" % script)
    return x

class TestRunner:
    def __init__(self):
        #script = scripts[grinder.threadID % len(scripts)]
        # it's ok on Grinder 3.0.1, but is not ok on Grinder 3.1
        script = scripts[grinder.getThreadNumber() % len(scripts)]
        #it's ok on 3.1 but not 3.0.1
	#script = scripts[grinder.threadNumber   % len(scripts)]
        #it's ok on 3.1 but not 3.0.1
	# If you set grinder.threads=n(in grinder.properties), the the ID is 1,2,3.
	# If ID=1, then 1%len(scripts)==1( there are 3 elements in scripts, so len(scripts) is 3, so 1%3==1)
	# so script=scripts[1], so script='ebayUSForumsGuestViewForum'
	# so thread 1 run  ebayUSForumsGuestViewForum.py

	# If ID=2, then 2%len(scripts)==2( there are 3 elements in scripts, so len(scripts) is 3, so 2%3==2)
	# so script=scripts[2], so script='ebayUSForumsGuestViewThread'
	# so thread 2 run  ebayUSForumsGuestViewThread.py

	# If ID=3, then 3%len(scripts)==0( there are 3 elements in scripts, so len(scripts) is 3, so 3%3==0)
	# so script=scripts[0], so script='ebayUSForumsAdvancedSearch'
	# so thread 3 run  ebayUSForumsAdvancedSearch.py

        self.testRunner = createTestRunner(script)

    # This method is called for every run.
    def __call__(self):
        self.testRunner()



 Ok,到此为止,主要是给自己的看的,如果你有需要可以看,有问题可以问我.

分享到:
评论

相关推荐

    grinder的使用步骤和运行命令

    Grinder脚本使用Jython编写,这是一种Python的Java实现。您可以在脚本中添加逻辑,例如循环、条件判断等,以模拟更复杂的用户行为。 五、运行测试 1. 创建配置文件:Grinder测试需要一个配置文件(`.properties`)...

    the grinder 3.0安装文件

    1. **创建测试脚本**:The Grinder 使用 Jython 作为脚本语言,你需要编写一个 `.py` 文件来定义测试逻辑。例如,你可以创建一个名为 `test_script.py` 的文件,并放置在您喜欢的位置。 2. **配置测试代理**:在 ...

    grinder安装使用说明文档

    Grinder是一款开源的负载和性能测试框架,其核心理念是“测试脚本化”,支持使用Jython(Python的Java版本)语言编写测试脚本,使得测试脚本的编写更为灵活和易读。Grinder提供了一个图形化的控制台,可以方便地管理...

    The Grinder3.0

    通过阅读提供的博客和分析这些文件,我们可以深入学习如何利用Grinder进行有效的性能测试,从而优化我们的应用程序,确保在高负载下的稳定运行。在源码分析和工具使用的领域,Grinder提供了一个宝贵的实践平台,对于...

    grinder 3.2 + 源代码 + 入门指南

    "grinder-3.2.zip"是Grinder 3.2的二进制发行版,包含了运行Grinder所需的所有文件,用户可以直接下载并启动进行性能测试。"grinder-3.2-src.zip"则提供了源代码,对于开发者来说,这是一个宝贵的资源,可以深入了解...

    grinder.dart:Dart工作流程,自动化

    要创建一个简单的grinder脚本,请运行: pub run grinder:init 通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build ()...

    Grinder入门介绍

    Grinder 是一个强大的框架,用于在多台机器上运行测试脚本。该框架由三种类型的进程组成:Worker 进程、Agent 进程以及控制台(Console)。每种进程的具体职责如下: - **Worker 进程**:解释执行 Jython 测试脚本...

    性能测试工具Grinder

    Grinder是一个将测试脚本运行在多个机器上的框架。Grinder框架由三个process(或program)组成:workerprocesses,agentprocesses,和console.每种process的职责如下:Workerprocesses解释Jython测试脚本,并启动worker...

    Grinder用户手册

    此外,Grinder 还提供了一个脚本库,里面包含了各种实用的示例脚本。这些脚本可以直接使用或者作为参考来创建自己的测试案例。 #### 7. SSL 支持 ##### 2.7.1. 准备工作 在开始使用 SSL 功能之前,需要做一些准备...

    Water_Websites:Water_Websites

    要创建一个简单的grinder脚本,请运行: pub run grinder:init通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build () ...

    论文研究-基于the Grinder的性能测试及应用 .pdf

    the Grinder作为一种负载生成工具,可以请求、购买或租借大量的测试客户机来测试运行在服务器上的应用程序。 the Grinder作为一个开源工具,除了具有良好的功能、易用性,以及适用于广泛J2EE性能问题的特点外,它还...

    男性马:男性马

    要创建一个简单的grinder脚本,请运行: pub run grinder:init通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build () ...

    Floppy_Disk_Sink:Floppy_Disk_Sink

    要创建一个简单的grinder脚本,请运行: pub run grinder:init通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build () ...

    Clock_Dislike:Clock_Dislike

    要创建一个简单的grinder脚本,请运行: pub run grinder:init 通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ; main (args) => grind (args); @DefaultTask ( 'Build the project.' ) ...

    Printer_BBQ:Printer_BBQ

    要创建一个简单的grinder脚本,请运行: pub run grinder:init通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build () ...

    Bird_Ice_cream:Bird_Ice_cream

    要创建一个简单的grinder脚本,请运行: pub run grinder:init通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build () ...

Global site tag (gtag.js) - Google Analytics