将Gatling集成到Gradle构建中–了解SourceSet和配置

我最近在一个项目中工作,我们不得不将出色的负载测试工具Gatling集成到基于Gradle的版本中。 有可用的gradle插件使此操作变得容易,其中两个是thisthis ,但是对于大多数需求而言,只需简单执行命令行工具本身就足够了,因此本文将详细介绍如何将gatling连接起来进入gradle构建过程,并在此过程中了解一些良好的gradle概念。

来源集和配置

要执行gatling cli,我需要做一些事情,需要一个位置来获取Gatling模拟的源代码和相关内容,并且需要一种获取gatling库的方法。 这是Gradle的两个概念(SourceSets和Configuration)起作用的地方。

让我们从第一个开始-SourceSets。

源集

SourceSet只是相关文件的逻辑分组,最好通过一个示例进行演示。 如果要在gradle版本中添加“ java”插件:

apply plugin: 'java'

现在,sourceSets属性将显示两个值“ main”和“ test”,如果我想查找这些sourceSets的详细信息,可以使用gradle任务来打印详细信息:

task sourceSetDetails {
    doLast {
        sourceSets {
            main {
                println java.properties
                println resources.properties
            }
        
            test {
                println java.properties
                println resources.properties
            }
        }
    }
}

回到gatling,我基本上可以创建一个新的sourceSet来保存gatling模拟:

sourceSets {
    simulations
}

现在,这将使加特林模拟驻留在“ src / simulations / java”中,并将与之相关的资源驻留在“ src / simulations / resources”文件夹中,这是可以的,但理想情况下,我希望将其与项目完全分开资料来源。 我希望我的文件夹结构在“ simulations / load”文件夹中包含负载模拟,在“ simulations / resources”文件夹中包含资源。 可以通过首先应用“ scala”插件来对此进行调整,该插件为项目带来了scala编译支持,然后根据以下内容修改了“ simulations”源集:

apply plugin: 'scala'

sourceSets {
    simulations {
        scala {
            srcDirs = ['simulations/load']
        }
        resources {
            srcDirs = ['simulations/resources']
        }
    }
}

通过这些更改,我现在可以将仿真放置在正确的位置,但是尚未掌握加特林和scala的依赖性,这就是gradle的“配置”功能所在的地方。

组态

Gradle配置是将相关依赖项分组在一起的一种方式。 如果我要使用任务来打印现有的一组配置:

task showConfigurations  {
    doLast {
        configurations.all { conf -> println(conf) }
    }
}

这些出现:

configuration ':archives'
configuration ':compile'
configuration ':compileClasspath'
configuration ':compileOnly'
configuration ':default'
configuration ':runtime'
configuration ':simulationsCompile'
configuration ':simulationsCompileClasspath'
configuration ':simulationsCompileOnly'
configuration ':simulationsRuntime'
configuration ':testCompile'
configuration ':testCompileClasspath'
configuration ':testCompileOnly'
configuration ':testRuntime'
configuration ':zinc'

应该熟悉“ compile”和“ testCompile”,即通常这样声明正常的源依赖项和测试依赖项:

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.21'
    testCompile 'junit:junit:4.12'   
}

但是,看起来现在还可以使用“ simulations”源集的配置–“ simulationsCompile”和“ simulationsRuntime”等,因此我可以使用这些配置声明我的加特林仿真所需的依赖项,但是我的目的是声明一个自定义配置只是为了进一步介绍该概念,因此让我们显式声明一个:

configurations {
    gatling
}

并使用此配置声明加特林的依赖关系:

dependencies {
    gatling 'org.scala-lang:scala-library:2.11.8'
    gatling 'io.gatling.highcharts:gatling-charts-highcharts:2.2.5'
}

几乎在那儿,现在我们如何通过稍微调整sourceSet来告诉模拟源集中的源使用来自gatling配置的依赖项。

sourceSets {
    simulations {
        scala {
            srcDirs = ['simulations/load']
        }
        resources {
            srcDirs = ['simulations/resources']
        }

        compileClasspath += configurations.gatling
    }
}

运行加特林场景

定义了源集和配置之后,我们要做的就是编写一个任务来运行一次加特林模拟,可以遵循以下步骤:

task gatlingRun(type: JavaExec) {
    description = 'Run gatling tests'
    new File("${buildDir}/reports/gatling").mkdirs()

    classpath = sourceSets.simulations.runtimeClasspath + configurations.gatling

    main = "io.gatling.app.Gatling"
    args = ['-s', 'simulations.SimpleSimulation',
            '-sf', 'simulations/resources',
            '-df', 'simulations/resources',
            '-rf', "${buildDir}/reports/gatling"
    ]
}

查看如何将模拟的编译源以及来自gatling配置的依赖项设置为“ JavaExec”任务的类路径

审查此问题的一种好方法是查看我在此处找到的完整的工作示例
我的github仓库 – https://github.com/bijukunjummen/cf-show-env

翻译自: https://www.javacodegeeks.com/2017/05/integrating-gatling-gradle-build-understanding-sourcesets-configuration.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter和Gatling都是常用的性能测试工具,它们各自有一些优点和缺点。 JMeter的优点包括: 1. 广泛应用:JMeter是一个成熟且广泛应用的性能测试工具,拥有大量的用户和社区支持。 2. 功能强大:JMeter提供了丰富的功能,可以进行多种类型的性能测试,包括负载测试、压力测试、功能测试等。 3. 可扩展性:JMeter支持插件机制,可以通过插件扩展其功能,满足不同场景下的需求。 4. 易于使用:JMeter提供了直观的图形界面,使得创建和管理测试计划变得相对简单。 JMeter的缺点包括: 1. 资源消耗:JMeter在模拟大规模并发用户时,对系统资源的消耗较大,可能需要更多的硬件资源支持。 2. 学习曲线:对于初学者来说,JMeter的学习曲线可能较陡峭,需要一定的时间和精力去掌握其使用方法和技巧。 Gatling的优点包括: 1. 高性能:Gatling是基于Scala编写的,采用了异步非阻塞的方式进行性能测试,具有出色的性能表现。 2. 脚本编写简单:Gatling使用基于DSL的脚本语言,语法简洁易懂,编写和维护测试脚本相对容易。 3. 实时报告:Gatling提供实时的测试报告和统计数据,可以方便地监控和分析测试结果。 Gatling的缺点包括: 1. 社区支持相对较少:相比于JMeter,Gatling的用户和社区规模相对较小,因此在遇到问题时可能需要更多的自行解决。 2. 功能相对较少:虽然Gatling提供了基本的性能测试功能,但相比于JMeter,其功能相对较少,可能无法满足一些特定的测试需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值