2016-06-07 29 views
0

我有一个jsonurl,我想读,它看起来像这样:如何为gatling json编写自定义进纸器?

> { 
>  "elements": [ 
>  { 
>   "box": { 
>   "x": 0, 
>   "y": 0, 
>   "width": 186, 
>   "height": 10.526316 
>   }, 
>   "type": "Header" 
>  }, 
>  { 
>   "box": { 
>   "x": 0, 
>   "y": 0, 
>   "width": 0, 
>   "height": 0 
>   }, 
>   "type": "Regular" 
>  }, 
>  { 
>   "box": { 
>   "x": 0, 
>   "y": 14.035088, 
>   "width": 43.333332, 
>   "height": 3.508772 
>   }, 
>   "type": "Regular" 
>  }, 
>  { 
>   "box": { 
>   "x": 95.08772, 
>   "y": 14.035088, 
>   "width": 90.87719, 
>   "height": 45.614037 
>   }, 
>   "type": "Image" 
>  }, 
>  { 
>   "box": { 
>   "x": 95.08772, 
>   "y": 63.157894, 
>   "width": 90.87719, 
>   "height": 3.508772 
>   }, 
>   "type": "Regular" 
>  }, 
>  { 
>   "box": { 
>   "x": 95.08772, 
>   "y": 63.157894, 
>   "width": 90.87719, 
>   "height": 3.508772 
>   }, 
>   "type": "Regular" 
>  }, 
>  { 
>   "box": { 
>   "x": 47.54386, 
>   "y": 42.105263, 
>   "width": 43.333332, 
>   "height": 5.9649124 
>   }, 
>   "type": "Regular" 
>  }, 
>  { 
>   "box": { 
>   "x": 0, 
>   "y": 0, 
>   "width": 43.333332, 
>   "height": 98.24561 
>   }, 
>   "type": "Regular" 
>  }, 
>  { 
>   "box": { 
>   "x": 47.54386, 
>   "y": 0, 
>   "width": 43.333332, 
>   "height": 98.24561 
>   }, 
>   "type": "Regular" 
>  }, 
>  { 
>   "box": { 
>   "x": 95.08772, 
>   "y": 0, 
>   "width": 43.333332, 
>   "height": 98.24561 
>   }, 
>   "type": "Regular" 
>  }, 
>  { 
>   "box": { 
>   "x": 142.63158, 
>   "y": 0, 
>   "width": 43.333332, 
>   "height": 98.24561 
>   }, 
>   "type": "Regular" 
>  } 
>  ], 
>  "points": [ 
>  { 
>   "x": 190, 
>   "y": 22.192982 
>  }, 
>  { 
>   "x": 376, 
>   "y": 22.192982 
>  }, 
>  { 
>   "x": 376, 
>   "y": 120.4386 
>  }, 
>  { 
>   "x": 190, 
>   "y": 120.4386 
>  } 
>  ], 
>  "state": "UNUSED", 
>  "contentPath": "/content/ffx/print-authoring/en/newsholes/FNZ/DPT/2016/05/30/test_pages/q001/newshole-63019301", 
>  "assetId": null }, 

然后我想读的"state""contentPath"和映射。 目前我使用的是静态源,如:

VAL nhfeeder = jsonFile( “形状-data.json”)

使用如,

.feed(nhfeeder)

这是一个静态的源,所以我想要一个自定义的进纸器,可以直接从jsonurl读取,并做需要。

回答

0

Gatling documentation您可以在“JSON馈线”部分

val jsonUrlFeeder = jsonUrl("http://me.com/foo.json") 
+0

这不是一个非常有用的答案,也是通用的,除了重点 – VeRo

0

您需要更改的唯一的事情就是让你的JSON的根元素是一个数组找到解决方案。 不这样做,将导致:#

java.lang.IllegalArgumentException: Root element of JSON feeder file isn't an array

你的JSON结构应该是:

[ 
    {"box": { 
     "x": 0, 
     "y": 0, 
     "width": 186, 
     "height": 10.526316 
    }, 
    "type": "Header" 
    }, 
    { 
    "box": { 
     "x": 0, 
     "y": 0, 
     "width": 0, 
     "height": 0 
    }, 
    "type": "Regular" 
    }, 
    { 
    "box": { 
     "x": 0, 
     "y": 14.035088, 
     "width": 43.333332, 
     "height": 3.508772 
    }, 
    "type": "Regular" 
    } 
] 

从这点上来说,当你创建进纸器:

val nhfeeder = jsonUrl("http://url-to-json/shapes-data.json").records 

你现在有一个馈线,它将在会话表达式中使用时提供值:

scenario("my-scenario") 
.foreach(nhfeeder, "shape", "index") { 
exec(
    http("calculate-for-shape-{index}") 
    .get("/calculate-area/${shape.box.width}/${shape.box.height}") 
)} 

我想象一个场景,你想测试一个函数来计算你的形状的面积。这里的重要部分是您可以使用表达式语言来浏览记录。 Json数组内的Json对象。