如何通过源码生成Gatling可执行工具

发表于:2018-7-31 15:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:shihuc    来源:博客园

       这个过程,比较像mvn install将生成的模块安装到本地.m2仓库中的过程。到此,gatling引擎部分编译和发布完成。
  然后,进入gatling-highchats,和上述编译gatling的过程类似,执行sbt compile,然后在发布到本地ivy仓库。注意,一定要先对gatling进行发布后再编译gatling-highchats,否则在编译gatling-highchats的时候会报错的,找不到依赖的库。
  至此,编译部分都完成了,那么,问题来了,生成的工具(可执行文件)在什么地方呢?在什么地方可以执行刚才生成的工具呢?官网上说的比较清楚,我也倾向于用bundle的文件来执行。默认情况下,这个文件会在ivy的仓库里面。就拿我的环境来说,其目录如下:
  1 [root@CloudGame zips]# pwd
  2 /root/.ivy2/local/io.gatling.highcharts/gatling-charts-highcharts-bundle/2.2.0-SNAPSHOT/zips
  文件内容如下:
  1 [root@CloudGame gatling-charts-highcharts-bundle-2.2.0-SNAPSHOT]# ll
  2 total 28
  3 drwxr-xr-x 2 root root  4096 Jan  8 15:04 bin
  4 drwxr-xr-x 3 root root  4096 Jan  8 15:04 lib
  5 -rw-r--r-- 1 root root 11367 Jan  8 15:04 LICENSE
  6 drwxr-xr-x 2 root root  4096 Jan  8 15:04 results
  7 drwxr-xr-x 5 root root  4096 Jan  8 15:04 user-files
  8 [root@CloudGame gatling-charts-highcharts-bundle-2.2.0-SNAPSHOT]# cd bin/
  9 [root@CloudGame bin]# ll
  10 total 16
  11 -rwxr--r-- 1 root root 2898 Jan  8 15:04 gatling.bat
  12 -rwxr--r-- 1 root root 1946 Jan  8 15:04 gatling.sh
  13 -rwxr--r-- 1 root root 1992 Jan  8 15:04 recorder.bat
  14 -rwxr--r-- 1 root root 1134 Jan  8 15:04 recorder.sh
  上面加黑的目录,就是我们想要的被解压后的目录,里面有我们期待的内容:
  1 [root@CloudGame gatling-bundle-2.2.0-SNAPSHOT]# ll
  2 total 24
  3 drwxr-xr-x 2 root root  4096 Jan  8 13:26 bin
  4 -rw-r--r-- 1 root root 11367 Jan  8 13:10 LICENSE
  5 drwxr-xr-x 2 root root  4096 Jan  8 13:26 results
  6 drwxr-xr-x 5 root root  4096 Jan  8 13:26 user-files
  7 [root@CloudGame gatling-bundle-2.2.0-SNAPSHOT]# cd bin/
  8 [root@CloudGame bin]# ll
  9 total 16
  10 -rwxr-xr-x 1 root root 2898 Jan  8 13:10 gatling.bat
  11 -rwxr-xr-x 1 root root 1946 Jan  8 13:10 gatling.sh
  12 -rwxr-xr-x 1 root root 1992 Jan  8 13:10 recorder.bat
  13 -rwxr-xr-x 1 root root 1134 Jan  8 13:10 recorder.sh
  到这里,可以说从源码生成gatling的过程结束了!
  在此,我要说明一点就是,2.2.0-SNAPSHOT的版本,比较新,里面有些api是JDK8的,所以,在编译运行的时候,保证你的环境是jdk8哟,否则会出现下面的错误:
  1 [root@CloudGame bin]# ./recorder.sh
  2 GATLING_HOME is set to /root/.ivy2/local/io.gatling.highcharts/gatling-charts-highcharts-bundle/2.2.0-SNAPSHOT/zips/gatling-charts-highcharts-bundle-2.2.0-SNAPSHOT
  3 Exception in thread "main" java.lang.UnsupportedClassVersionError: com/typesafe/config/ConfigRenderOptions : Unsupported major.minor version 52.0
  4     at java.lang.ClassLoader.defineClass1(Native Method)
  5     at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
  6     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
  7     at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
  8     at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
  9     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
  10     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  11     at java.security.AccessController.doPrivileged(Native Method)
  12     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  13     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
  14     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
  15     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
  16     at io.gatling.recorder.config.RecorderConfiguration$.<init>(RecorderConfiguration.scala:48)
  17     at io.gatling.recorder.config.RecorderConfiguration$.<clinit>(RecorderConfiguration.scala)
  18     at io.gatling.recorder.GatlingRecorder$.io$gatling$recorder$GatlingRecorder$$initRecorder(GatlingRecorder.scala:37)
  19     at io.gatling.recorder.GatlingRecorder$$anonfun$fromArgs$1.apply(GatlingRecorder.scala:30)
  20     at io.gatling.recorder.GatlingRecorder$$anonfun$fromArgs$1.apply(GatlingRecorder.scala:30)
  21     at scala.Option.map(Option.scala:146)
  22     at io.gatling.recorder.GatlingRecorder$.fromArgs(GatlingRecorder.scala:30)
  23     at io.gatling.recorder.GatlingRecorder$.main(GatlingRecorder.scala:26)
  24     at io.gatling.recorder.GatlingRecorder.main(GatlingRecorder.scala)
  最后,测试一下源码来的工具是否可用,哈哈,看到recorder的启动界面了,如下图,说明一切正常!
   
  附加一下设置项目的javaHome的命令,即相关的操作!
  1 gatling-parent > set every javaHome := sys.env.get("JAVA_HOME") map file
  2 [info] Defining */*:javaHome
  3 [info] The new value will be used by gatling-app/*:compilers, gatling-app/*:console::compilers and 125 others.
  4 [info]     Run `last` for details.
  5 [info] Reapplying settings...
  6 [info] Set current project to gatling-parent (in build file:/mnt/workwps/gatling2.1.7/gatling/)
  7 gatling-parent > show javaHome
  8 [info] gatling-core/*:javaHome
  9 [info]     Some(/usr/java/jdk1.8.0_65)
  10 [info] gatling-compiler/*:javaHome
  11 [info]     Some(/usr/java/jdk1.8.0_65)
  12 [info] gatling-redis/*:javaHome
  13 [info]     Some(/usr/java/jdk1.8.0_65)
  14 [info] gatling-metrics/*:javaHome
  15 [info]     Some(/usr/java/jdk1.8.0_65)
  16 [info] gatling-commons/*:javaHome
  17 [info]     Some(/usr/java/jdk1.8.0_65)
  18 [info] gatling-recorder/*:javaHome
  19 [info]     Some(/usr/java/jdk1.8.0_65)
  20 [info] gatling-jms/*:javaHome
  21 [info]     Some(/usr/java/jdk1.8.0_65)
  22 [info] gatling-app/*:javaHome
  23 [info]     Some(/usr/java/jdk1.8.0_65)
  24 [info] gatling-test-framework/*:javaHome
  25 [info]     Some(/usr/java/jdk1.8.0_65)
  26 [info] gatling-http/*:javaHome
  27 [info]     Some(/usr/java/jdk1.8.0_65)
  28 [info] gatling-charts/*:javaHome
  29 [info]     Some(/usr/java/jdk1.8.0_65)
  30 [info] gatling-bundle/*:javaHome
  31 [info]     Some(/usr/java/jdk1.8.0_65)
  32 [info] gatling-jdbc/*:javaHome
  33 [info]     Some(/usr/java/jdk1.8.0_65)
  34 [info] gatling-parent/*:javaHome
  35 [info]     Some(/usr/java/jdk1.8.0_65)
  36 gatling-parent >

  OK,完工!

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号