@@ -234,66 +234,172 @@ func DecoderSpec(c gs.Context) {
234
234
235
235
decoder := new (SandboxDecoder )
236
236
conf := decoder .ConfigStruct ().(* sandbox.SandboxConfig )
237
- conf .ScriptFilename = "../lua/testsupport/decoder.lua"
238
- conf .ScriptType = "lua"
239
237
supply := make (chan * pipeline.PipelinePack , 1 )
240
238
pack := pipeline .NewPipelinePack (supply )
241
239
dRunner := pm .NewMockDecoderRunner (ctrl )
242
- dRunner .EXPECT ().Name ().Return ("serialize" )
243
- err := decoder .Init (conf )
244
- c .Assume (err , gs .IsNil )
240
+ conf .ScriptType = "lua"
245
241
246
- c .Specify ("decodes simple messages" , func () {
247
- data := "1376389920 debug id=2321 url=example.com item=1"
248
- decoder .SetDecoderRunner (dRunner )
249
- pack .Message .SetPayload (data )
250
- _ , err = decoder .Decode (pack )
242
+ c .Specify ("that uses lpeg and inject_message" , func () {
243
+ dRunner .EXPECT ().Name ().Return ("serialize" )
244
+ conf .ScriptFilename = "../lua/testsupport/decoder.lua"
245
+ err := decoder .Init (conf )
251
246
c .Assume (err , gs .IsNil )
252
247
253
- c .Expect (pack .Message .GetTimestamp (),
254
- gs .Equals ,
255
- int64 (1376389920000000000 ))
256
-
257
- c .Expect (pack .Message .GetSeverity (), gs .Equals , int32 (7 ))
258
-
259
- var ok bool
260
- var value interface {}
261
- value , ok = pack .Message .GetFieldValue ("id" )
262
- c .Expect (ok , gs .Equals , true )
263
- c .Expect (value , gs .Equals , "2321" )
264
-
265
- value , ok = pack .Message .GetFieldValue ("url" )
266
- c .Expect (ok , gs .Equals , true )
267
- c .Expect (value , gs .Equals , "example.com" )
268
-
269
- value , ok = pack .Message .GetFieldValue ("item" )
270
- c .Expect (ok , gs .Equals , true )
271
- c .Expect (value , gs .Equals , "1" )
272
- decoder .Shutdown ()
273
- })
274
-
275
- c .Specify ("decodes an invalid messages" , func () {
276
- data := "1376389920 bogus id=2321 url=example.com item=1"
277
- decoder .SetDecoderRunner (dRunner )
278
- pack .Message .SetPayload (data )
279
- packs , err := decoder .Decode (pack )
280
- c .Expect (len (packs ), gs .Equals , 0 )
281
- c .Expect (err .Error (), gs .Equals , "Failed parsing: " + data )
282
- c .Expect (decoder .processMessageFailures , gs .Equals , int64 (1 ))
283
- decoder .Shutdown ()
248
+ c .Specify ("decodes simple messages" , func () {
249
+ data := "1376389920 debug id=2321 url=example.com item=1"
250
+ decoder .SetDecoderRunner (dRunner )
251
+ pack .Message .SetPayload (data )
252
+ _ , err = decoder .Decode (pack )
253
+ c .Assume (err , gs .IsNil )
254
+
255
+ c .Expect (pack .Message .GetTimestamp (),
256
+ gs .Equals ,
257
+ int64 (1376389920000000000 ))
258
+
259
+ c .Expect (pack .Message .GetSeverity (), gs .Equals , int32 (7 ))
260
+
261
+ var ok bool
262
+ var value interface {}
263
+ value , ok = pack .Message .GetFieldValue ("id" )
264
+ c .Expect (ok , gs .Equals , true )
265
+ c .Expect (value , gs .Equals , "2321" )
266
+
267
+ value , ok = pack .Message .GetFieldValue ("url" )
268
+ c .Expect (ok , gs .Equals , true )
269
+ c .Expect (value , gs .Equals , "example.com" )
270
+
271
+ value , ok = pack .Message .GetFieldValue ("item" )
272
+ c .Expect (ok , gs .Equals , true )
273
+ c .Expect (value , gs .Equals , "1" )
274
+ decoder .Shutdown ()
275
+ })
276
+
277
+ c .Specify ("decodes an invalid messages" , func () {
278
+ data := "1376389920 bogus id=2321 url=example.com item=1"
279
+ decoder .SetDecoderRunner (dRunner )
280
+ pack .Message .SetPayload (data )
281
+ packs , err := decoder .Decode (pack )
282
+ c .Expect (len (packs ), gs .Equals , 0 )
283
+ c .Expect (err .Error (), gs .Equals , "Failed parsing: " + data )
284
+ c .Expect (decoder .processMessageFailures , gs .Equals , int64 (1 ))
285
+ decoder .Shutdown ()
286
+ })
287
+
288
+ c .Specify ("Preserves data" , func () {
289
+ conf .ScriptFilename = "../lua/testsupport/serialize.lua"
290
+ conf .PreserveData = true
291
+ err := decoder .Init (conf )
292
+ c .Assume (err , gs .IsNil )
293
+ decoder .SetDecoderRunner (dRunner )
294
+ decoder .Shutdown ()
295
+ _ , err = os .Stat ("sandbox_preservation/serialize.data" )
296
+ c .Expect (err , gs .IsNil )
297
+ err = os .Remove ("sandbox_preservation/serialize.data" )
298
+ c .Expect (err , gs .IsNil )
299
+ })
284
300
})
285
301
286
- c .Specify ("Preserves data " , func () {
287
- conf .ScriptFilename = "../lua/testsupport/serialize .lua"
288
- conf . PreserveData = true
302
+ c .Specify ("that only uses write_message " , func () {
303
+ conf .ScriptFilename = "../lua/testsupport/write_message_decoder .lua"
304
+ dRunner . EXPECT (). Name (). Return ( "write_message" )
289
305
err := decoder .Init (conf )
290
- c .Assume (err , gs .IsNil )
291
306
decoder .SetDecoderRunner (dRunner )
292
- decoder .Shutdown ()
293
- _ , err = os .Stat ("sandbox_preservation/serialize.data" )
294
- c .Expect (err , gs .IsNil )
295
- err = os .Remove ("sandbox_preservation/serialize.data" )
296
- c .Expect (err , gs .IsNil )
307
+ c .Assume (err , gs .IsNil )
308
+
309
+ c .Specify ("adds a string field to the message" , func () {
310
+ data := "string field scribble"
311
+ pack .Message .SetPayload (data )
312
+ packs , err := decoder .Decode (pack )
313
+ c .Expect (err , gs .IsNil )
314
+ c .Expect (len (packs ), gs .Equals , 1 )
315
+ c .Expect (packs [0 ], gs .Equals , pack )
316
+ value , ok := pack .Message .GetFieldValue ("scribble" )
317
+ c .Expect (ok , gs .IsTrue )
318
+ c .Expect (value .(string ), gs .Equals , "foo" )
319
+ })
320
+
321
+ c .Specify ("adds a numeric field to the message" , func () {
322
+ data := "num field scribble"
323
+ pack .Message .SetPayload (data )
324
+ packs , err := decoder .Decode (pack )
325
+ c .Expect (err , gs .IsNil )
326
+ c .Expect (len (packs ), gs .Equals , 1 )
327
+ c .Expect (packs [0 ], gs .Equals , pack )
328
+ value , ok := pack .Message .GetFieldValue ("scribble" )
329
+ c .Expect (ok , gs .IsTrue )
330
+ c .Expect (value .(float64 ), gs .Equals , float64 (1 ))
331
+ })
332
+
333
+ c .Specify ("adds a boolean field to the message" , func () {
334
+ data := "bool field scribble"
335
+ pack .Message .SetPayload (data )
336
+ packs , err := decoder .Decode (pack )
337
+ c .Expect (err , gs .IsNil )
338
+ c .Expect (len (packs ), gs .Equals , 1 )
339
+ c .Expect (packs [0 ], gs .Equals , pack )
340
+ value , ok := pack .Message .GetFieldValue ("scribble" )
341
+ c .Expect (ok , gs .IsTrue )
342
+ c .Expect (value .(bool ), gs .Equals , true )
343
+ })
344
+
345
+ c .Specify ("sets type and payload" , func () {
346
+ data := "set type and payload"
347
+ pack .Message .SetPayload (data )
348
+ packs , err := decoder .Decode (pack )
349
+ c .Expect (err , gs .IsNil )
350
+ c .Expect (len (packs ), gs .Equals , 1 )
351
+ c .Expect (packs [0 ], gs .Equals , pack )
352
+ c .Expect (pack .Message .GetType (), gs .Equals , "my_type" )
353
+ c .Expect (pack .Message .GetPayload (), gs .Equals , "my_payload" )
354
+ })
355
+
356
+ c .Specify ("sets field value with representation" , func () {
357
+ data := "set field value with representation"
358
+ pack .Message .SetPayload (data )
359
+ packs , err := decoder .Decode (pack )
360
+ c .Expect (err , gs .IsNil )
361
+ c .Expect (len (packs ), gs .Equals , 1 )
362
+ c .Expect (packs [0 ], gs .Equals , pack )
363
+ fields := pack .Message .FindAllFields ("rep" )
364
+ c .Expect (len (fields ), gs .Equals , 1 )
365
+ field := fields [0 ]
366
+ values := field .GetValueString ()
367
+ c .Expect (len (values ), gs .Equals , 1 )
368
+ c .Expect (values [0 ], gs .Equals , "foo" )
369
+ c .Expect (field .GetRepresentation (), gs .Equals , "representation" )
370
+ })
371
+
372
+ c .Specify ("sets multiple field string values" , func () {
373
+ data := "set multiple field string values"
374
+ pack .Message .SetPayload (data )
375
+ packs , err := decoder .Decode (pack )
376
+ c .Expect (err , gs .IsNil )
377
+ c .Expect (len (packs ), gs .Equals , 1 )
378
+ c .Expect (packs [0 ], gs .Equals , pack )
379
+ fields := pack .Message .FindAllFields ("multi" )
380
+ c .Expect (len (fields ), gs .Equals , 2 )
381
+ values := fields [0 ].GetValueString ()
382
+ c .Expect (len (values ), gs .Equals , 1 )
383
+ c .Expect (values [0 ], gs .Equals , "first" )
384
+ values = fields [1 ].GetValueString ()
385
+ c .Expect (len (values ), gs .Equals , 1 )
386
+ c .Expect (values [0 ], gs .Equals , "second" )
387
+ })
388
+
389
+ c .Specify ("sets field string array value" , func () {
390
+ data := "set field string array value"
391
+ pack .Message .SetPayload (data )
392
+ packs , err := decoder .Decode (pack )
393
+ c .Expect (err , gs .IsNil )
394
+ c .Expect (len (packs ), gs .Equals , 1 )
395
+ c .Expect (packs [0 ], gs .Equals , pack )
396
+ fields := pack .Message .FindAllFields ("array" )
397
+ c .Expect (len (fields ), gs .Equals , 1 )
398
+ values := fields [0 ].GetValueString ()
399
+ c .Expect (len (values ), gs .Equals , 2 )
400
+ c .Expect (values [0 ], gs .Equals , "first" )
401
+ c .Expect (values [1 ], gs .Equals , "second" )
402
+ })
297
403
})
298
404
})
299
405
0 commit comments