Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有';否';从Gatling生成的.csv文件中的数据_Java_Scala_Csv_Gatling - Fatal编程技术网

Java 有';否';从Gatling生成的.csv文件中的数据

Java 有';否';从Gatling生成的.csv文件中的数据,java,scala,csv,gatling,Java,Scala,Csv,Gatling,我能够从下面的代码生成csv文件,但其中没有数据(它使用相同的查询与sqlYog交叉检查了数据)。它只在一列中打印“资产ID”,并抛出ClassCastException。谁能帮我解决这个问题?谢谢 这是我的剧本 import java.io._ import au.com.bytecode.opencsv.CSVWriter import io.gatling.jdbc.Predef._ import scala.collection.mutable.ArrayBuffer import

我能够从下面的代码生成csv文件,但其中没有数据(它使用相同的查询与sqlYog交叉检查了数据)。它只在一列中打印“资产ID”,并抛出ClassCastException。谁能帮我解决这个问题?谢谢

这是我的剧本

import java.io._
import au.com.bytecode.opencsv.CSVWriter
import io.gatling.jdbc.Predef._
import scala.collection.mutable.ArrayBuffer

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._

class generateCsv extends Simulation {

    val username = System.getProperty("username", "user1")
    val password = System.getProperty("password", "user1")
    val testUrl = System.getProperty("testUrl", "https://someurl.net")

    val csvFileLocation = "D:/myDir/myfile.csv"
    val dbQuery = jdbcFeeder("jdbc:mysql://10.10.40.10:3306/master", "admin", "admin", "SELECT ID_ assetID FROM TableName")

    var recordCount = dbQuery.records.length

    val out = new BufferedWriter(new FileWriter(csvFileLocation))
    val writer = new CSVWriter(out)
    var Ids = new Array[String](recordCount)

    Ids(0) = "Asset Ids"

    var i = 1

    val httpProtocol = http
        .baseURL(testUrl)
        .inferHtmlResources()
        .acceptHeader("""*/*""")
        .basicAuth(username, password)
        .acceptEncodingHeader("""gzip, deflate""")
        .acceptLanguageHeader("""en-US,en;q=0.8""")
        .connection("""keep-alive""")
        .userAgentHeader("""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36""")

    val scn = scenario("Database Query")
    .repeat (recordCount) {
        feed(dbQuery)
        .exec { session =>
                Ids(i)  = session("assetID").as[String]
                        i = i + 1
                        session
            }
    }
    after{
                writer.writeNext(Ids)
                writer.close()
            }

    setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
}
错误:

84057 [GatlingSystem-akka.actor.default-dispatcher-6] ERROR i.g.c.a.b.SessionHookBuilder$$anonfun$build$1$$anon$1 - 'sessionHook-2' crashed on session Session(Database Query,8451783577631963111-0,Map(b1075cf5-e3c8-47d6-96bd-ff74284b4e7c -> 4, timestamp.b1075cf5-e3c8-47d6-96bd-ff74284b4e7c -> 1488276658897, assetID -> 6),1488276658892,0,KO,List(ExitOnCompleteLoopBlock(b1075cf5-e3c8-47d6-96bd-ff74284b4e7c)),<function1>), forwarding to the next one
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
    at com.abc.gatling.generateCsv$$anonfun$2.apply(generateCsv.scala:57) ~[na:na]
    at com.abc.gatling.generateCsv$$anonfun$2.apply(generateCsv.scala:56) ~[na:na]
    at io.gatling.core.action.SessionHook.executeOrFail(SessionHook.scala:35) ~[gatling-core-2.1.7.jar:2.1.7]
    at io.gatling.core.action.Failable$class.execute(Actions.scala:71) ~[gatling-core-2.1.7.jar:2.1.7]
    at io.gatling.core.action.SessionHook.execute(SessionHook.scala:28) ~[gatling-core-2.1.7.jar:2.1.7]
    at io.gatling.core.action.Action$$anonfun$receive$1.applyOrElse(Actions.scala:29) ~[gatling-core-2.1.7.jar:2.1.7]
    at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171) ~[scala-library-2.11.7.jar:na]
    at akka.actor.Actor$class.aroundReceive(Actor.scala:467) ~[akka-actor_2.11-2.3.12.jar:na]
    at io.gatling.core.akka.BaseActor.aroundReceive(BaseActor.scala:22) ~[gatling-core-2.1.7.jar:2.1.7]
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516) ~[akka-actor_2.11-2.3.12.jar:na]
    at akka.actor.ActorCell.invoke(ActorCell.scala:487) ~[akka-actor_2.11-2.3.12.jar:na]
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238) ~[akka-actor_2.11-2.3.12.jar:na]
    at akka.dispatch.Mailbox.run(Mailbox.scala:220) ~[akka-actor_2.11-2.3.12.jar:na]
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397) [akka-actor_2.11-2.3.12.jar:na]
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.11.7.jar:na]
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.11.7.jar:na]
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.11.7.jar:na]
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.11.7.jar:na]
84072 [GatlingSystem-akka.actor.default-dispatcher-6] INFO  i.g.core.controller.Controller - End user #8451783577631963111-0
84179 [main] INFO  i.g.c.result.reader.FileDataReader - Collected List(D:\gatling-charts-highcharts-bundle-2.1.7\results\generateCsv-1488276658757\simulation.log) from generateCsv-1488276658757
84057[GatlingSystem akka.actor.default-dispatcher-6]错误i.g.c.a.b.SessionHookBuilder$$anonfun$build$1$$anon$1-“sessionHook-2”在会话会话中崩溃(数据库查询,8451783577631963111-0,映射(b1075cf5-e3c8-47d6-96bd-ff74284b4e7c->4,时间戳b1075cf5-e3c8-47d6-96bd-ff74284b4e7c->->,assetID),1488276658892,0,KO,列表(ExitOnCompleteLoopBlock(b1075cf5-e3c8-47d6-96bd-ff74284b4e7c)),转发到下一个
java.lang.ClassCastException:java.lang.Long不能转换为java.lang.String
在com.abc.gatling.generateCsv$$anonfun$2.apply(generateCsv.scala:57)~[na:na]
在com.abc.gatling.generateCsv$$anonfun$2.apply(generateCsv.scala:56)~[na:na]
在io.gatling.core.action.SessionHook.executeOrFail(SessionHook.scala:35)~[gatling-core-2.1.7.jar:2.1.7]
在io.gatling.core.action.Failable$class.execute(Actions.scala:71)~[gatling-core-2.1.7.jar:2.1.7]
在io.gatling.core.action.SessionHook.execute(SessionHook.scala:28)~[gatling-core-2.1.7.jar:2.1.7]
在io.gatling.core.action.action$$anonfun$receive$1.applyOrElse(Actions.scala:29)~[gatling-core-2.1.7.jar:2.1.7]
在scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171)~[scala-library-2.11.7.jar:na]
在akka.actor.actor$class.aroundReceive(actor.scala:467)~[akka-actor_2.11-2.3.12.jar:na]
在io.gatling.core.akka.BaseActor.aroundReceive(BaseActor.scala:22)~[gatling-core-2.1.7.jar:2.1.7]
在akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)~[akka-actor_2.11-2.3.12.jar:na]
在akka.actor.ActorCell.invoke(ActorCell.scala:487)~[akka-actor_2.11-2.3.12.jar:na]
在akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)~[akka-actor_2.11-2.3.12.jar:na]
在akka.dispatch.Mailbox.run(Mailbox.scala:220)~[akka-actor_2.11-2.3.12.jar:na]
在akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)[akka-actor_2.11-2.3.12.jar:na]
在scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[scala-library-2.11.7.jar:na]
位于scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[scala-library-2.11.7.jar:na]
位于scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[scala-library-2.11.7.jar:na]
在scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[scala-library-2.11.7.jar:na]
84072[GatlingSystem akka.actor.default-dispatcher-6]信息i.g.core.controller.controller-最终用户#8451783577631963111-0
84179[main]信息i.g.c.result.reader.FileDataReader-从generateCsv-1488276658757收集的列表(D:\gatling-charts-highcharts-bundle-2.1.7\results\generateCsv-1488276658757\simulation.log)

堆栈跟踪中的第一行显示错误发生的位置:generateCsv.scala中的第57行。因为您的代码示例没有行号,并且小于57行,所以我假设这是行

Ids(i)  = session("assetID").as[String]
其中,您尝试将assetID大小写为字符串,但根据错误消息,它是Long类型的值。您可以使用toString方法将长字符串转换为字符串:

Ids(i)  = session("assetID").as[Long].toString

是的,那个行号是正确的。我已将.as[String]替换为.toString。在输出中,我得到了所有行的结果:SessionAttribute(Session(数据库查询,94900205950811697-0,Map(4a27dcfa-986d-41c6-81b9-c965ff0f6c40->0,timestamp.4a27dcfa-986d-41c6-81b9-c965ff0f6c40->1488284879536,assetID->-1),1488284879532,0,OK,List(ExitOnCompleteLoopBlock(4a27dcfa-986d-41c6-81b9-965FF0IDs),您可以尝试使用assetID)=session(“assetID”)。与[Long]一样长。ToString非常麻烦。成功了。请编辑您的答案。我会接受的。在excel文件中,数据按行打印,您知道如何将其更改为列吗?谢谢,您可以使用writeAll而不是writeNext。您可以将ID转换为writeAll方法的正确java类型,如下所示:
import collection.JavaConverters.\u
然后将writeNext调用替换为
writer.writeAll(Ids.iterator.toBuffer[String].map(s=>Array(s)).asJava)