错误:找不到或加载主类io.gatling.app.Gatling

问题描述

获取错误:运行jar进行性能测试时找不到或加载主类io.gatling.app.Gatling ,但是当我在intellij上运行相同的代码时,效果很好 以下是执行代码的示例步骤

步骤:1 使用Gatling创建了PerformanceTest.jar的mvn包。

SampleTestPlayer.scala

ModuleNotFoundError: No module named 'bottle'

SampleTestRunner.scala

package com.performance.SampleTest
import com.performance.config.ScenarioConfiguration
import com.performance.{Player,Feeders}
import io.gatling.core.Predef._
import io.gatling.core.structure.{ChainBuilder,ScenarioBuilder}
import io.gatling.http.Predef._

import scala.concurrent.duration._
import scala.util.Random

class SampleTestPlayer extends SomeClass {

  val config: ScenarioConfiguration.type = ScenarioConfiguration
  gdmServerEndpoint = config.gdmServerUrl
  Name = config.Name

  val regexGsdViewArea = "VA~(?:[\\d\\|]+?)+"


  def play(): ChainBuilder = {
    exec(http(TEST)
      .post(ServerEndpoint)
      .body(StringBody(session => bodyXml(session,config.Name,prepareRequest(session,10,5))))
      .check(status.is(200),regex("<SUCCESS>true</SUCCESS>").exists,regex(errorMsgId).notExists,regex(errorProtocol).optional.saveAs(errorProtocol)
      )
    )
      .exec(checkForErrors)
      .pause(requestsInterval)
     
  }


  val scn: ScenarioBuilder = scenario("SampleTest_Performance_Tests")
    .feed(Feeders.operator1UsersFeeder)
    .exec({ session => session.set("recoverAfterRequest",false)})
    .repeat(config.numPlays) {
      play()
    }

  if (config.model == "closed") {
    setUp(
      scn.inject(
        rampUsers(config.numUsers) during (config.rampUpDuration)
      ).protocols(buildHttpConf(config.baseUrl))
    )
  }

  if (config.model == "open") {
    setUp(
      scn.inject(
        nothingFor(4 seconds),// 1
        atOnceUsers(10),// 2
        rampUsers(5) during (20 seconds),// 3
        constantUsersPerSec(2) during (15 seconds),// 4
        constantUsersPerSec(2) during (15 seconds) randomized,// 5
        rampUsersPerSec(2) to 5 during (1 minutes),// 6
        rampUsersPerSec(2) to 5 during (1 minutes) randomized,// 7
        heavisideUsers(100) during (20 seconds) // 8
      ).protocols(buildHttpConf(config.baseUrl))
    )
  }
}constantUsersPerSec(2) during (15 seconds) randomized,// 7
        heavisideUsers(100) during (20 seconds) // 8
      ).protocols(buildHttpConf(config.baseUrl))
    )
  }
}

步骤:2 创建一个launch.sh文件以运行这些测试。

launch.sh

package com.performance.SampleTest

import io.gatling.app.Gatling
import io.gatling.core.config.GatlingPropertiesBuilder

object SampleTestRunner {



  def main(args: Array[String]): Unit = {
    System.setProperty("baseUrl","https://SomeUrl")

    System.setProperty("Name","SampleTest")
  
    System.setProperty("requestsInterval","1000")

    val simulationClass = classOf[SampleTestPlayer].getName

    val props = new GatlingPropertiesBuilder
    props.simulationClass(simulationClass)

    Gatling.fromMap(props.build)
  }
}

解决方法

我使用以下代码在缺少-jar jar_name命令的情况下开始测试。

注意:首先是环境变量(以-D开头),然后是jar,然后是Player(java -jar perf_tests.jar -s PlayerClass

#!/bin/sh
USER_ARGS="-Dsomething=$1"
COMPILATION_CLASSPATH=`find -L . -maxdepth 1 -name "*.jar" -type f -exec printf :{} ';'`
JAVA_OPTS="-server -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Xms512M -Xmx2048M -XX:+HeapDumpOnOutOfMemoryError -XX:+AggressiveOpts -XX:+OptimizeStringConcat -XX:+UseFastAccessorMethods -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false 
java -DbaseUrl=https://SomeUrl -DnumPlays=100 -Dmodel=closed -DnumUsers=1000 -DrequestsInterval=3000 -jar performance-tests-1.0.0-SNAPSHOT.jar -s com.performance.sampletest.SampleTestPlayer

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...