Tinkoff / gatling-amqp-plugin

Plugin for support performance testing with AMQP in Gatling (3.7.x)
Apache License 2.0
33 stars 19 forks source link

Issue while publishing the message to RabbitMQ #30

Closed naveenincture closed 3 years ago

naveenincture commented 3 years ago

Hi @red-bashmak.. thank you for the plugin.

i have created a simple scala project using Maven and added dependency for the plugin as per the link below, https://search.maven.org/artifact/ru.tinkoff/gatling-amqp-plugin_2.13

below is my code snippet for publishing the message into our queue,


package simulations

import io.gatling.core.Predef. import io.gatling.core.structure.ScenarioBuilder import ru.tinkoff.gatling.amqp.Predef. import ru.tinkoff.gatling.amqp.protocol.AmqpProtocolBuilder

class HinoRabbitMQPublish extends Simulation{

val amqpConf: AmqpProtocolBuilder = amqp .connectionFactory( rabbitmq .host("hasty-whale.rmq.cloudamqp.com") .port(5672) .username("***") .password("*") .vhost("****") ) .usePersistentDeliveryMode .declare(queue("measurement_data_hino_us_pilot_uat"))

val scn: ScenarioBuilder = scenario("AMQP test") .exec( amqp("publish to us_pilot_uat") .publish .queueExchange("measurement_data_hino_us_pilot_uat") .textMessage("Hello message - ${id}") .messageId("${id}") .priority(0) )

setUp( scn.inject(atOnceUsers(1))).protocols(amqpConf) }


i am receiving below error, while running the script,


"C:\Users\Naveen Kumar.jdks\openjdk-15.0.2\bin\java.exe" -javaagent:F:\Incture\Performance\Software\IDE\ideaIC-2020.3.3.win\lib\idea_rt.jar=60454:F:\Incture\Performance\Software\IDE\ideaIC-2020.3.3.win\bin -Dfile.encoding=UTF-8 -classpath "C:\Users\Naveen Kumar\IdeaProjects\hino_performance\target\test-classes;C:\Users\Naveen Kumar.ivy2\cache\org.scala-lang\scala-library\jars\scala-library-2.13.5.jar;C:\Users\Naveen Kumar.ivy2\cache\org.scala-lang\scala-reflect\jars\scala-reflect-2.13.5.jar;C:\Users\Naveen Kumar.ivy2\cache\org.scala-lang\scala-library\srcs\scala-library-2.13.5-sources.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\highcharts\gatling-charts-highcharts\3.5.1\gatling-charts-highcharts-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\org\scala-lang\scala-library\2.13.3\scala-library-2.13.3.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-app\3.5.1\gatling-app-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-core\3.5.1\gatling-core-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-commons\3.5.1\gatling-commons-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-commons-shared\3.5.1\gatling-commons-shared-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\org\scala-lang\scala-reflect\2.13.3\scala-reflect-2.13.3.jar;C:\Users\Naveen Kumar.m2\repository\io\suzaku\boopickle_2.13\1.3.3\boopickle_2.13-1.3.3.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-commons-shared-unstable\3.5.1\gatling-commons-shared-unstable-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\org\typelevel\spire-macros_2.13\0.17.0\spire-macros_2.13-0.17.0.jar;C:\Users\Naveen Kumar.m2\repository\com\typesafe\scala-logging\scala-logging_2.13\3.9.2\scala-logging_2.13-3.9.2.jar;C:\Users\Naveen Kumar.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\Naveen Kumar.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-jsonpath\3.5.1\gatling-jsonpath-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\com\typesafe\akka\akka-slf4j_2.13\2.6.11\akka-slf4j_2.13-2.6.11.jar;C:\Users\Naveen Kumar.m2\repository\org\simpleflatmapper\lightning-csv\8.2.3\lightning-csv-8.2.3.jar;C:\Users\Naveen Kumar.m2\repository\org\simpleflatmapper\sfm-util\8.2.3\sfm-util-8.2.3.jar;C:\Users\Naveen Kumar.m2\repository\com\github\ben-manes\caffeine\caffeine\2.8.8\caffeine-2.8.8.jar;C:\Users\Naveen Kumar.m2\repository\org\checkerframework\checker-qual\3.8.0\checker-qual-3.8.0.jar;C:\Users\Naveen Kumar.m2\repository\com\google\errorprone\error_prone_annotations\2.4.0\error_prone_annotations-2.4.0.jar;C:\Users\Naveen Kumar.m2\repository\io\pebbletemplates\pebble\3.1.4\pebble-3.1.4.jar;C:\Users\Naveen Kumar.m2\repository\org\unbescape\unbescape\1.1.6.RELEASE\unbescape-1.1.6.RELEASE.jar;C:\Users\Naveen Kumar.m2\repository\org\scala-lang\modules\scala-parser-combinators_2.13\1.1.2\scala-parser-combinators_2.13-1.1.2.jar;C:\Users\Naveen Kumar.m2\repository\com\github\scopt\scopt_2.13\3.7.1\scopt_2.13-3.7.1.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-handler\4.1.58.Final\netty-handler-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-resolver\4.1.58.Final\netty-resolver-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\com\softwaremill\quicklens\quicklens_2.13\1.6.1\quicklens_2.13-1.6.1.jar;C:\Users\Naveen Kumar.m2\repository\net\sf\saxon\Saxon-HE\10.3\Saxon-HE-10.3.jar;C:\Users\Naveen Kumar.m2\repository\org\jodd\jodd-lagarto\6.0.3\jodd-lagarto-6.0.3.jar;C:\Users\Naveen Kumar.m2\repository\org\jodd\jodd-util\6.0.0\jodd-util-6.0.0.jar;C:\Users\Naveen Kumar.m2\repository\io\burt\jmespath-jackson\0.5.0\jmespath-jackson-0.5.0.jar;C:\Users\Naveen Kumar.m2\repository\io\burt\jmespath-core\0.5.0\jmespath-core-0.5.0.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-http\3.5.1\gatling-http-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-http-client\3.5.1\gatling-http-client-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-netty-util\3.5.1\gatling-netty-util-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-handler-proxy\4.1.58.Final\netty-handler-proxy-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-codec-socks\4.1.58.Final\netty-codec-socks-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-resolver-dns\4.1.58.Final\netty-resolver-dns-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-codec-dns\4.1.58.Final\netty-codec-dns-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-transport-native-epoll\4.1.58.Final\netty-transport-native-epoll-4.1.58.Final-linux-x86_64.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-transport-native-unix-common\4.1.58.Final\netty-transport-native-unix-common-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-codec-http2\4.1.58.Final\netty-codec-http2-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-tcnative-boringssl-static\2.0.36.Final\netty-tcnative-boringssl-static-2.0.36.Final.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-jms\3.5.1\gatling-jms-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\javax\jms\javax.jms-api\2.0.1\javax.jms-api-2.0.1.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-jdbc\3.5.1\gatling-jdbc-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-redis\3.5.1\gatling-redis-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\net\debasishg\redisclient_2.13\3.30\redisclient_2.13-3.30.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-graphite\3.5.1\gatling-graphite-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\org\hdrhistogram\HdrHistogram\2.1.12\HdrHistogram-2.1.12.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-charts\3.5.1\gatling-charts-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\com\tdunning\t-digest\3.1\t-digest-3.1.jar;C:\Users\Naveen Kumar.m2\repository\io\gatling\gatling-recorder\3.5.1\gatling-recorder-3.5.1.jar;C:\Users\Naveen Kumar.m2\repository\org\scala-lang\modules\scala-swing_2.13\3.0.0\scala-swing_2.13-3.0.0.jar;C:\Users\Naveen Kumar.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.12.1\jackson-databind-2.12.1.jar;C:\Users\Naveen Kumar.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.12.1\jackson-annotations-2.12.1.jar;C:\Users\Naveen Kumar.m2\repository\com\fasterxml\jackson\core\jackson-core\2.12.1\jackson-core-2.12.1.jar;C:\Users\Naveen Kumar.m2\repository\org\bouncycastle\bcpkix-jdk15on\1.68\bcpkix-jdk15on-1.68.jar;C:\Users\Naveen Kumar.m2\repository\org\bouncycastle\bcprov-jdk15on\1.68\bcprov-jdk15on-1.68.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-codec-http\4.1.58.Final\netty-codec-http-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-common\4.1.58.Final\netty-common-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-buffer\4.1.58.Final\netty-buffer-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-transport\4.1.58.Final\netty-transport-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\io\netty\netty-codec\4.1.58.Final\netty-codec-4.1.58.Final.jar;C:\Users\Naveen Kumar.m2\repository\com\typesafe\akka\akka-actor_2.13\2.6.11\akka-actor_2.13-2.6.11.jar;C:\Users\Naveen Kumar.m2\repository\com\typesafe\config\1.4.0\config-1.4.0.jar;C:\Users\Naveen Kumar.m2\repository\org\scala-lang\modules\scala-java8-compat_2.13\0.9.0\scala-java8-compat_2.13-0.9.0.jar;C:\Users\Naveen Kumar.m2\repository\ru\tinkoff\gatling-amqp-plugin_2.13\0.5.0\gatling-amqp-plugin_2.13-0.5.0.jar;C:\Users\Naveen Kumar.m2\repository\com\rabbitmq\amqp-client\5.11.0\amqp-client-5.11.0.jar;C:\Users\Naveen Kumar.m2\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;C:\Users\Naveen Kumar.m2\repository\org\apache\commons\commons-pool2\2.9.0\commons-pool2-2.9.0.jar;C:\Users\Naveen Kumar.m2\repository\com\eatthepath\fast-uuid\0.1\fast-uuid-0.1.jar" Engine 14:10:40.900 [main] INFO io.gatling.core.config.GatlingConfiguration$ - Gatling will try to use 'gatling.conf' as custom config file. 14:10:41.693 [GatlingSystem-akka.actor.default-dispatcher-4] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started 14:10:42.185 [main] DEBUG io.netty.util.internal.logging.InternalLoggerFactory - Using SLF4J as the default logging framework 14:10:42.323 [main] DEBUG io.netty.channel.MultithreadEventLoopGroup - -Dio.netty.eventLoopThreads: 16 14:10:42.340 [main] DEBUG io.netty.util.internal.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 14:10:42.340 [main] DEBUG io.netty.util.internal.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 14:10:42.349 [main] DEBUG io.netty.channel.nio.NioEventLoop - -Dio.netty.noKeySetOptimization: false 14:10:42.349 [main] DEBUG io.netty.channel.nio.NioEventLoop - -Dio.netty.selectorAutoRebuildThreshold: 512 14:10:42.367 [main] DEBUG io.netty.util.internal.PlatformDependent - Platform: Windows 14:10:42.369 [main] DEBUG io.netty.util.internal.PlatformDependent0 - -Dio.netty.noUnsafe: false 14:10:42.369 [main] DEBUG io.netty.util.internal.PlatformDependent0 - Java version: 15 14:10:42.370 [main] DEBUG io.netty.util.internal.PlatformDependent0 - sun.misc.Unsafe.theUnsafe: available 14:10:42.371 [main] DEBUG io.netty.util.internal.PlatformDependent0 - sun.misc.Unsafe.copyMemory: available 14:10:42.371 [main] DEBUG io.netty.util.internal.PlatformDependent0 - java.nio.Buffer.address: available 14:10:42.374 [main] DEBUG io.netty.util.internal.PlatformDependent0 - direct buffer constructor: unavailable java.lang.UnsupportedOperationException: Reflective setAccessible(true) disabled at io.netty.util.internal.ReflectionUtil.trySetAccessible(ReflectionUtil.java:31) at io.netty.util.internal.PlatformDependent0$4.run(PlatformDependent0.java:238) at java.base/java.security.AccessController.doPrivileged(AccessController.java:312) at io.netty.util.internal.PlatformDependent0.(PlatformDependent0.java:232) at io.netty.util.internal.PlatformDependent.isAndroid(PlatformDependent.java:293) at io.netty.util.internal.PlatformDependent.(PlatformDependent.java:92) at io.netty.channel.nio.NioEventLoop.newTaskQueue0(NioEventLoop.java:279) at io.netty.channel.nio.NioEventLoop.newTaskQueue(NioEventLoop.java:150) at io.netty.channel.nio.NioEventLoop.(NioEventLoop.java:138) at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:146) at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:37) at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:84) at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:58) at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:47) at io.netty.channel.MultithreadEventLoopGroup.(MultithreadEventLoopGroup.java:59) at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:86) at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:81) at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:68) at io.gatling.netty.util.Transports.newEventLoopGroup(Transports.java:41) at io.gatling.app.Gatling$.start(Gatling.scala:74) at io.gatling.app.Gatling$.fromMap(Gatling.scala:40) at Engine$.delayedEndpoint$Engine$1(Engine.scala:11) at Engine$delayedInit$body.apply(Engine.scala:4) at scala.Function0.apply$mcV$sp(Function0.scala:39) at scala.Function0.apply$mcV$sp$(Function0.scala:39) at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17) at scala.App.$anonfun$main$1(App.scala:76) at scala.App.$anonfun$main$1$adapted(App.scala:76) at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563) at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561) at scala.collection.AbstractIterable.foreach(Iterable.scala:919) at scala.App.main(App.scala:76) at scala.App.main$(App.scala:74) at Engine$.main(Engine.scala:4) at Engine.main(Engine.scala) 14:10:42.376 [main] DEBUG io.netty.util.internal.PlatformDependent0 - java.nio.Bits.unaligned: available, true 14:10:42.377 [main] DEBUG io.netty.util.internal.PlatformDependent0 - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable java.lang.IllegalAccessException: class io.netty.util.internal.PlatformDependent0$6 cannot access class jdk.internal.misc.Unsafe (in module java.base) because module java.base does not export jdk.internal.misc to unnamed module @5a955565 at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:385) at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:693) at java.base/java.lang.reflect.Method.invoke(Method.java:556) at io.netty.util.internal.PlatformDependent0$6.run(PlatformDependent0.java:352) at java.base/java.security.AccessController.doPrivileged(AccessController.java:312) at io.netty.util.internal.PlatformDependent0.(PlatformDependent0.java:343) at io.netty.util.internal.PlatformDependent.isAndroid(PlatformDependent.java:293) at io.netty.util.internal.PlatformDependent.(PlatformDependent.java:92) at io.netty.channel.nio.NioEventLoop.newTaskQueue0(NioEventLoop.java:279) at io.netty.channel.nio.NioEventLoop.newTaskQueue(NioEventLoop.java:150) at io.netty.channel.nio.NioEventLoop.(NioEventLoop.java:138) at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:146) at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:37) at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:84) at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:58) at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:47) at io.netty.channel.MultithreadEventLoopGroup.(MultithreadEventLoopGroup.java:59) at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:86) at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:81) at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:68) at io.gatling.netty.util.Transports.newEventLoopGroup(Transports.java:41) at io.gatling.app.Gatling$.start(Gatling.scala:74) at io.gatling.app.Gatling$.fromMap(Gatling.scala:40) at Engine$.delayedEndpoint$Engine$1(Engine.scala:11) at Engine$delayedInit$body.apply(Engine.scala:4) at scala.Function0.apply$mcV$sp(Function0.scala:39) at scala.Function0.apply$mcV$sp$(Function0.scala:39) at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17) at scala.App.$anonfun$main$1(App.scala:76) at scala.App.$anonfun$main$1$adapted(App.scala:76) at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563) at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561) at scala.collection.AbstractIterable.foreach(Iterable.scala:919) at scala.App.main(App.scala:76) at scala.App.main$(App.scala:74) at Engine$.main(Engine.scala:4) at Engine.main(Engine.scala) 14:10:42.377 [main] DEBUG io.netty.util.internal.PlatformDependent0 - java.nio.DirectByteBuffer.(long, int): unavailable 14:10:42.377 [main] DEBUG io.netty.util.internal.PlatformDependent - sun.misc.Unsafe: available 14:10:42.393 [main] DEBUG io.netty.util.internal.PlatformDependent - maxDirectMemory: 2120220672 bytes (maybe) 14:10:42.394 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.tmpdir: C:\Users\NAVEEN~1\AppData\Local\Temp (java.io.tmpdir) 14:10:42.394 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.bitMode: 64 (sun.arch.data.model) 14:10:42.395 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.maxDirectMemory: -1 bytes 14:10:42.396 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.uninitializedArrayAllocationThreshold: -1 14:10:42.397 [main] DEBUG io.netty.util.internal.CleanerJava9 - java.nio.ByteBuffer.cleaner(): available 14:10:42.397 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.noPreferDirect: false 14:10:42.406 [main] DEBUG io.netty.util.internal.PlatformDependent - org.jctools-core.MpscChunkedArrayQueue: available Choose a simulation number: [0] simulations.HinoRabbitMQPublish [1] simulations.TestAPI 0 Select run description (optional)

14:10:51.991 [main] ERROR io.gatling.app.Gatling$ - Run crashed java.io.IOException: null at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:129) at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:125) at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:147) at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:968) at com.rabbitmq.client.impl.recovery.AutorecoveringChannel.queueDeclare(AutorecoveringChannel.java:343) at ru.tinkoff.gatling.amqp.protocol.AmqpProtocol$$anon$1$$anonfun$runInitAction$1.applyOrElse(AmqpProtocol.scala:64) at ru.tinkoff.gatling.amqp.protocol.AmqpProtocol$$anon$1$$anonfun$runInitAction$1.applyOrElse(AmqpProtocol.scala:60) at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) at scala.collection.immutable.List.foreach(List.scala:333) at ru.tinkoff.gatling.amqp.protocol.AmqpProtocol$$anon$1.$anonfun$newComponents$1(AmqpProtocol.scala:77) at io.gatling.core.protocol.ProtocolComponentsRegistry.comps$1(Protocol.scala:71) at io.gatling.core.protocol.ProtocolComponentsRegistry.$anonfun$components$4(Protocol.scala:73) at scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:454) at io.gatling.core.protocol.ProtocolComponentsRegistry.components(Protocol.scala:73) at ru.tinkoff.gatling.amqp.action.PublishBuilder.components(PublishBuilder.scala:14) at ru.tinkoff.gatling.amqp.action.PublishBuilder.build(PublishBuilder.scala:18) at io.gatling.core.structure.BuildAction.$anonfun$build$1(BuildAction.scala:28) at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169) at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165) at scala.collection.immutable.List.foldLeft(List.scala:79) at io.gatling.core.structure.BuildAction.build(BuildAction.scala:27) at io.gatling.core.structure.BuildAction.build$(BuildAction.scala:26) at io.gatling.core.structure.ScenarioBuilder.build(StructureBuilder.scala:51) at io.gatling.core.structure.PopulationBuilder.build(PopulationBuilder.scala:100) at io.gatling.core.scenario.SimulationParams.buildScenario(Simulation.scala:170) at io.gatling.core.scenario.SimulationParams.$anonfun$scenarios$1(Simulation.scala:174) at scala.collection.immutable.List.map(List.scala:246) at io.gatling.core.scenario.SimulationParams.scenarios(Simulation.scala:174) at io.gatling.app.Runner.run0(Runner.scala:82) at io.gatling.app.Runner.run(Runner.scala:52) at io.gatling.app.Gatling$.start(Gatling.scala:80) at io.gatling.app.Gatling$.fromMap(Gatling.scala:40) at Engine$.delayedEndpoint$Engine$1(Engine.scala:11) at Engine$delayedInit$body.apply(Engine.scala:4) at scala.Function0.apply$mcV$sp(Function0.scala:39) at scala.Function0.apply$mcV$sp$(Function0.scala:39) at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17) at scala.App.$anonfun$main$1(App.scala:76) at scala.App.$anonfun$main$1$adapted(App.scala:76) at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563) at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561) at scala.collection.AbstractIterable.foreach(Iterable.scala:919) at scala.App.main(App.scala:76) at scala.App.main$(App.scala:74) at Engine$.main(Engine.scala:4) at Engine.main(Engine.scala) Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'auto_delete' for queue 'measurement_data_hino_us_pilot_uat' in vhost 'fdc97e13-563c-41b1-843b-1ecf7dbc62d3': received 'true' but current is 'false', class-id=50, method-id=10) at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66) at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36) at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:502) at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:293) at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:141) ... 43 common frames omitted Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'auto_delete' for queue 'measurement_data_hino_us_pilot_uat' in vhost 'fdc97e13-563c-41b1-843b-1ecf7dbc62d3': received 'true' but current is 'false', class-id=50, method-id=10) at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:517) at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:341) at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:182) at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:114) at com.rabbitmq.client.impl.AMQConnection.readFrame(AMQConnection.java:739) at com.rabbitmq.client.impl.AMQConnection.access$300(AMQConnection.java:47) at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:666) at java.base/java.lang.Thread.run(Thread.java:832) Exception in thread "main" java.io.IOException at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:129) at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:125) at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:147) at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:968) at com.rabbitmq.client.impl.recovery.AutorecoveringChannel.queueDeclare(AutorecoveringChannel.java:343) at ru.tinkoff.gatling.amqp.protocol.AmqpProtocol$$anon$1$$anonfun$runInitAction$1.applyOrElse(AmqpProtocol.scala:64) at ru.tinkoff.gatling.amqp.protocol.AmqpProtocol$$anon$1$$anonfun$runInitAction$1.applyOrElse(AmqpProtocol.scala:60) at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) at scala.collection.immutable.List.foreach(List.scala:333) at ru.tinkoff.gatling.amqp.protocol.AmqpProtocol$$anon$1.$anonfun$newComponents$1(AmqpProtocol.scala:77) at io.gatling.core.protocol.ProtocolComponentsRegistry.comps$1(Protocol.scala:71) at io.gatling.core.protocol.ProtocolComponentsRegistry.$anonfun$components$4(Protocol.scala:73) at scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:454) at io.gatling.core.protocol.ProtocolComponentsRegistry.components(Protocol.scala:73) at ru.tinkoff.gatling.amqp.action.PublishBuilder.components(PublishBuilder.scala:14) at ru.tinkoff.gatling.amqp.action.PublishBuilder.build(PublishBuilder.scala:18) at io.gatling.core.structure.BuildAction.$anonfun$build$1(BuildAction.scala:28) at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169) at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165) at scala.collection.immutable.List.foldLeft(List.scala:79) at io.gatling.core.structure.BuildAction.build(BuildAction.scala:27) at io.gatling.core.structure.BuildAction.build$(BuildAction.scala:26) at io.gatling.core.structure.ScenarioBuilder.build(StructureBuilder.scala:51) at io.gatling.core.structure.PopulationBuilder.build(PopulationBuilder.scala:100) at io.gatling.core.scenario.SimulationParams.buildScenario(Simulation.scala:170) at io.gatling.core.scenario.SimulationParams.$anonfun$scenarios$1(Simulation.scala:174) at scala.collection.immutable.List.map(List.scala:246) at io.gatling.core.scenario.SimulationParams.scenarios(Simulation.scala:174) at io.gatling.app.Runner.run0(Runner.scala:82) at io.gatling.app.Runner.run(Runner.scala:52) at io.gatling.app.Gatling$.start(Gatling.scala:80) at io.gatling.app.Gatling$.fromMap(Gatling.scala:40) at Engine$.delayedEndpoint$Engine$1(Engine.scala:11) at Engine$delayedInit$body.apply(Engine.scala:4) at scala.Function0.apply$mcV$sp(Function0.scala:39) at scala.Function0.apply$mcV$sp$(Function0.scala:39) at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17) at scala.App.$anonfun$main$1(App.scala:76) at scala.App.$anonfun$main$1$adapted(App.scala:76) at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563) at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561) at scala.collection.AbstractIterable.foreach(Iterable.scala:919) at scala.App.main(App.scala:76) at scala.App.main$(App.scala:74) at Engine$.main(Engine.scala:4) at Engine.main(Engine.scala) Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'auto_delete' for queue 'measurement_data_hino_us_pilot_uat' in vhost 'fdc97e13-563c-41b1-843b-1ecf7dbc62d3': received 'true' but current is 'false', class-id=50, method-id=10) at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66) at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36) at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:502) at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:293) at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:141) ... 43 more Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'auto_delete' for queue 'measurement_data_hino_us_pilot_uat' in vhost 'fdc97e13-563c-41b1-843b-1ecf7dbc62d3': received 'true' but current is 'false', class-id=50, method-id=10) at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:517) at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:341) at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:182) at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:114) at com.rabbitmq.client.impl.AMQConnection.readFrame(AMQConnection.java:739) at com.rabbitmq.client.impl.AMQConnection.access$300(AMQConnection.java:47) at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:666) at java.base/java.lang.Thread.run(Thread.java:832)

Process finished with exit code -1


Really appreciate, if you could help in resolving the issues. Thank you in advance :)

-Naveen.

naveenincture commented 3 years ago

I am able to solve this by adding "autoDelete" tag in the declare.

.declare(queue("measurement_data_hino_us_pilot_uat",autoDelete = false))

I am trying to publish 100kb json date. I have stored the data in file and i am trying to use the file name in "textMessage" attribute. I am not able publish the data, could you please help with this ?

package simulations

import io.gatling.core.Predef. import io.gatling.core.structure.{ChainBuilder, ScenarioBuilder} import ru.tinkoff.gatling.amqp.Predef. import ru.tinkoff.gatling.amqp.protocol.AmqpProtocolBuilder

class PublishWithFeeeder extends Simulation{

//val publishMessage = ElFileBody("src/test/resources/testData/publish.json") val publishMessage = jsonFile("src/test/resources/testData/publish.json")

val amqpConf: AmqpProtocolBuilder = amqp .connectionFactory( rabbitmq .host("hasty-whale.rmq.cloudamqp.com") .port(5672) .username("HINO_US_PILOT_Fleet_Management") .password("RVkjh2pFu18KGVCc") .vhost("fdc97e13-563c-41b1-843b-1ecf7dbc62d3") ) .declare(queue("measurement_data_hino_us_pilot_uat",autoDelete = false))

def publishMessageWithFeeder(): ChainBuilder ={ repeat(1){ .exec( amqp("publish to us_pilot_uat") .publish .queueExchange("measurement_data_hino_us_pilot_uat") .textMessage("$publishMessage") .priority(0))

}

}

val scn = scenario("Message Publish with Feeder") .exec(publishMessageWithFeeder())

setUp( scn.inject(atOnceUsers(1))).protocols(amqpConf) }


also, i tried to add validaiton like "check" and its not available. Could you please help on this as well ?

red-bashmak commented 3 years ago

Hello @naveenincture.

  1. jsonFile works differently, look in the gatling documentation. In your case ElFileBody is correct solution, but you need to save file content in session before use it in textMessage . Something like this may help:

    import io.gatling.commons.validation.SuccessWrapper
    ...
    val publishMessage = ElFileBody("testData/publish.json").expression
    ...
    .exec { session =>
      for {
        json <- publishMessage(session)
        r    <- session.set("publishMessage", json).success
      } yield r
    }
    .exec(
     amqp("publish to us_pilot_uat")
       .publish
       .queueExchange("measurement_data_hino_us_pilot_uat")
       .textMessage("$publishMessage")
       .priority(0))
  2. check is not available because publish only publish message and not receive response. And for check need response. If you need response use requestReply

naveenincture commented 3 years ago

@red-bashmak

Thank you :) I am able to publish the message using ElFileBody as below.

Really appreciate the reply. I am getting started with Gatling and facing an another issue. I have seeked help from community as well. It would be really helpful, if you can give some inputs.


package simulations

import io.gatling.core.Predef. import io.gatling.core.structure.{ChainBuilder, ScenarioBuilder} import ru.tinkoff.gatling.amqp.Predef. import ru.tinkoff.gatling.amqp.protocol.AmqpProtocolBuilder

class PublishWithFeeeder extends Simulation{

val csvFeederVINNumber = csv("testData/vinNumber.csv").circular

val amqpConf: AmqpProtocolBuilder = amqp .connectionFactory(rabbitmq .host("hasty-whale.rmq.cloudamqp.com") .port(5672) .username("username") .password("password") .vhost("host")) .declare(queue("measurement_data_hino_us_pilot_uat",autoDelete = false))

def publishMessageWithFeeder(): ChainBuilder ={ feed(csvFeederVINNumber) .exec(amqp("publish to us_pilot_uat") .publish .queueExchange("measurement_data_hino_us_pilot_uat") .textMessage(ElFileBody("testData/publish.json")) .priority(0) .contentType("application/json")) .pause(1) }

val scn: ScenarioBuilder = scenario("Message Publish with Feeder") .exec(publishMessageWithFeeder())

setUp( scn.inject(atOnceUsers(1))).protocols(amqpConf) }


Issue Link : https://stackoverflow.com/questions/66950680/using-timestamp-in-json-file-in-gating Description :

I have json file in below format

Scenario :

Publishing message into RabbitMQ using Gatling. I have saved the json file in resource folder. Passing json file using "ElFileBody" builder. i have to get the current timestamp and increment current time accordingly in the downstream timestamps. Attached below ex Could you please help in generating the timestamp, how can we increment/decrement the current timestamps by seconds/minutes/hours/days and pass directly in json file.

{ "series": { "uid": "60329dd7-cc15-43ca-ac5d-6907126b017a", "seriesName": "APP", "valueType": "DOUBLE", "description": "", "signalCollectionId": "ed6a6744-32c7-4f96-969c-8e1bd1b26f41", "sourceId": "70f15369-9ac0-4533-8f49-c7f0326a2a05", "sourceName": "v7r2_J_ENG_DEC", "unit": "%", "protocol": "CAN_RAW", "type": "SIGNAL", "samplingRate": 1000 }, "dataPoints": [ { "uniqueId": "34ad93e0-bdb3-4cbc-8354-ab59a808960f", "timeStamp": "2021-03-15T13:13:01.111Z", //Current timestamp "value": 0 }, { "uniqueId": "f901ec1e-5fd5-4015-97ad-b14aadae17ff", "timeStamp": "2021-03-15T13:13:11.111Z", //Current timestamp + 10 seconds "value": 0 }, { "uniqueId": "abc79341-2388-447c-8bd1-4671c791f9b9", "timeStamp": "2021-03-15T13:13:21.111Z", //Current timestamp + 20 seconds "value": 0 } ] }

Thank you :)

Naveen.

antonydevanchi commented 3 years ago

Наркоманы, грохните тред к хуям, там же креды к AMQP инстансу попалены. Инстанс живой, там что-то вертится, какие-то данные в наличии.

FYI @naveenincture use translate.google.com, please. I'm just fuck English in 04:30 AM, sorry. FYI @red-bashmak @icyberdeveloper psknv@wearehackerone.com