MCPcopy
hub / github.com/crowdsecurity/crowdsec / testSubSet

Function testSubSet

pkg/parser/parsing_test.go:315–375  ·  view source on GitHub ↗
(testSet TestFile, pctx UnixParserCtx, nodes []Node)

Source from the content-addressed store, hash-verified

313}
314
315func testSubSet(testSet TestFile, pctx UnixParserCtx, nodes []Node) (bool, error) {
316 var results []pipeline.Event
317
318 for _, in := range testSet.Lines {
319 out, err := Parse(pctx, in, nodes, nil)
320 if err != nil {
321 log.Errorf("Failed to process %s : %v", spew.Sdump(in), err)
322 }
323 // log.Infof("Parser output : %s", spew.Sdump(out))
324 results = append(results, out)
325 }
326
327 log.Infof("parsed %d lines", len(testSet.Lines))
328 log.Infof("got %d results", len(results))
329
330 /*
331 check the results we got against the expected ones
332 only the keys of the expected part are checked against result
333 */
334 if len(testSet.Results) == 0 && len(results) == 0 {
335 return false, errors.New("no tests, no results")
336 }
337
338reCheck:
339 failinfo := []string{}
340
341 for ridx, result := range results {
342 for eidx, expected := range testSet.Results {
343 explain, match := matchEvent(expected, result, debug)
344 if match {
345 log.Infof("expected %d/%d matches result %d/%d", eidx, len(testSet.Results), ridx, len(results))
346
347 if len(explain) > 0 {
348 log.Printf("-> %s", explain[len(explain)-1])
349 }
350 // don't do this at home : delete current element from list and redo
351 results[len(results)-1], results[ridx] = results[ridx], results[len(results)-1]
352 results = results[:len(results)-1]
353
354 testSet.Results[len(testSet.Results)-1], testSet.Results[eidx] = testSet.Results[eidx], testSet.Results[len(testSet.Results)-1]
355 testSet.Results = testSet.Results[:len(testSet.Results)-1]
356
357 goto reCheck
358 }
359
360 failinfo = append(failinfo, explain...)
361 }
362 }
363
364 if len(results) > 0 {
365 log.Printf("Errors : %s", strings.Join(failinfo, " / "))
366 return false, fmt.Errorf("leftover results : %+v", results)
367 }
368
369 if len(testSet.Results) > 0 {
370 log.Printf("Errors : %s", strings.Join(failinfo, " / "))
371 return false, fmt.Errorf("leftover expected results : %+v", testSet.Results)
372 }

Callers 1

testFileFunction · 0.85

Calls 2

ParseFunction · 0.85
matchEventFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…