(testSet TestFile, pctx UnixParserCtx, nodes []Node)
| 313 | } |
| 314 | |
| 315 | func 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 | |
| 338 | reCheck: |
| 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 | } |
no test coverage detected
searching dependent graphs…