gatling / Scala:编写自定义馈线(从url读取csv) - 随机迭代器?

时间:2016-08-17 12:41:31

标签: scala csv random iterator gatling

我是scala的新手,我正在尝试编写一个自定义的gatling馈线,用于从url读取csv文件(类似jsonUrl-Feeder)。

我不确定如何做到这一点。我尝试了以下方法,但现在我需要实现其他方法:

package common

import scala.io.Source
import scala.collection.mutable.ListBuffer

class CsvURLFeeder(url: String) extends Map[String, String] {

 val source = Source.fromURL(url)
 val reader = source.bufferedReader()

 val attributeName = reader.readLine()

 var list : ListBuffer[Map[String, String]] = new ListBuffer[Map[String, String]]() 

 val input = Stream.continually(reader readLine)


 for( line <- input){
   list += Map(attributeName-> line) 
 }

 def getFeeder() : Iterator[Map[String, String]]  = {
   return list.iterator
 }

}

缺少方法:

// Members declared in scala.collection.immutable.Map
def +[B1 >: String](kv: (String, B1)): scala.collection.immutable.Map[String,B1] = ???

// Members declared in scala.collection.MapLike
def -(key: String): scala.collection.immutable.Map[String,String] = ???
def get(key: String): Option[String] = ???
1def iterator: Iterator[(String, String)] = ???

另外,我不知道如何使迭代器随机。我不想逐一浏览列表。

是不是有类似的喂食器为我做同样的事情? 或者实施这种进料器的最佳方法是什么?

提前致谢。

更新

拿走部分&#34;扩展Map [String,String]&#34;因为它显然没有做任何事情。现在 - 当然 - 我不再需要实施这些方法了。

现在我可以看到for循环出了问题......它永远不会停止打印&#34; null&#34;。另外,第一行是错误的。它是&#34; Stream(&#34;实际第一行&#34;,?)&#34;。

更新2 我把阅读部分改为

var list : ListBuffer[Map[String, String]] = new ListBuffer[Map[String, String]]() 

var line = "";
while ( {line = reader.readLine ; line != null} ){
  list += Map(attributeName-> line) 
}

......现在这个有效!!凉。

但它看起来很难看。有更优雅的方式吗?

0 个答案:

没有答案