Gradle与Gatling脚本集成

简介: Gatling作为次时代的性能测试工具,由于其API简洁明了、性能出众,越来越受欢迎。但是运行Gatling脚本却有诸多不便,其提供的默认方式不是很方便。考虑到Gatling脚本本质上是Scala类,运行的时候还是使用的是java虚拟机,我们可以将其脚本的运行与Gradle结合起来。

Gatling作为次时代的性能测试工具,由于其API简洁明了、性能出众,越来越受欢迎。但是运行Gatling脚本却有诸多不便,其提供的默认方式不是很方便。考虑到Gatling脚本本质上是Scala类,运行的时候还是使用的是java虚拟机,我们可以将其脚本的运行与Gradle结合起来。这样子就可以通过Gradle来运行Gatling脚本了。

废话少说,接下来就讲述下如何来进行配置。

创建一个标准的maven结构的工程目录,如下图所示。

img_8298c608329d6b0bffdb3fbff5ef2863.png

conf目录存放Gatling的基本配置文件。 Gatling的脚本文件存放在src/test/scala/simulations包里面。可以自行在此包下对脚本文件再分类。

在build.gradle文件中引入scala插件。

1
apply plugin: 'scala'

然后引入有gatling库的maven repo。

1
2
3
4
5
6
repositories {
    mavenCentral ()
    maven {
        url 'http://repository.excilys.com/content/groups/public'
    }
}

再加入scala和gatling的依赖项。

1
2
3
4
dependencies {
    compile 'org.scala-lang:scala-library:2.10.1'
    testCompile 'io.gatling.highcharts:gatling-charts-highcharts:2.0.0-M3a'
}

把conf文件夹作为test的source文件。

1
2
3
4
5
6
7
sourceSets {
    test {
        resources {
            srcDir 'conf'
        }
    }
}

创建一个名为gatling的task,目的是运行所有的gatling脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
task gatling (dependsOn: 'compileTestScala') << {

    logger.lifecycle (" ---- Executing all Gatling scenarios from: ${sourceSets.test.output.classesDir} ----")

    sourceSets.test.output.classesDir.eachFileRecurse { file ->
        if (file.isFile ()) {

            def gatlingScenarioClass = (file.getPath () - (sourceSets.test.output.classesDir.getPath () + File.separator) - '.class')
                    .replace (File.separator, '.')

            javaexec {
                main = 'io.gatling.app.Gatling'
                classpath = sourceSets.test.output + sourceSets.test.runtimeClasspath
                args '-sbf',
                        sourceSets.test.output.classesDir,
                        '-s',
                        gatlingScenarioClass,
                        '-rf',
                        'build/reports/gatling'
            }
        }

    }

    logger.lifecycle (" ---- Done executing all Gatling scenarios ----")
}

这是借助于Gatling的command line运行功能来实现的。具体参数指定官网上有,这里贴出原文。

Command Line Options # Gatling can be started with several options listed below:

  • -nr (–no-reports): Runs simulation but does not generate reports
  • -ro (–reports-only ): Generates the reports for the simulation log file located in /results/
  • -df (–data-folder ): Uses as the folder where feeders are stored
  • -rf (–results-folder ): Uses as the folder where results are stored
  • -bf (–request-bodies-folder ): Uses as the folder where request bodies are stored
  • -sf (–simulations-folder ): Uses as the folder where simulations are stored
  • -sbf (–simulations-binaries-folder ): Uses as the folder where simulation binaries are stored
  • -s (–simulation ): Uses as the name of the simulation to be run
  • -sd (–simulation-description ): Uses as simulation description

我在github上创建了一个示例项目,请参见https://github.com/huangbowen521/gatling-gradle

相关文章
|
7月前
|
SQL DataWorks
如果源表名是小写,而DataWorks的数据集成脚本中使用的是大写表名
【1月更文挑战第6天】【1月更文挑战第30篇】如果源表名是小写,而DataWorks的数据集成脚本中使用的是大写表名
70 3
|
存储 缓存 Java
《Gradle构建脚本的基本结构和语法》
《Gradle构建脚本的基本结构和语法》
141 0
|
Java 测试技术 Spring
Gradle从0入门到实战系列【八】SpringBoot集成Junit单元测试
JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。
1630 1
Gradle从0入门到实战系列【八】SpringBoot集成Junit单元测试
|
6月前
|
DataWorks Oracle 关系型数据库
DataWorks产品使用合集之手动添加上了,但是同步过来的数据这个字段依然显示为空,是什么原因
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
6月前
|
弹性计算 分布式计算 DataWorks
DataWorks产品使用合集之在脚本离线同步节点如何修改集成资源组
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
6月前
|
Android开发
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
301 0
|
7月前
|
DataWorks 安全 关系型数据库
DataWorks产品使用合集之在 DataWorks 中使用数据集成从 MySQL 导入数据到 GDB 执行同步任务脚本的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
73 0
|
7月前
|
SQL DataWorks
如果源表名是小写,而DataWorks的数据集成脚本中使用的是大写表名,就会导致报错
如果源表名是小写,而DataWorks的数据集成脚本中使用的是大写表名,就会导致报错
81 1
|
专有云
专有云数据集成自定义资源组服务器的初始化脚本
专有云数据集成自定义资源组服务器的初始化脚本
137 1
|
Java API Maven
手把手教你使用Gradle脚本上传代码仓库
手把手教你使用Gradle脚本上传代码仓库
904 0
手把手教你使用Gradle脚本上传代码仓库