(t *testing.T)
| 475 | } |
| 476 | |
| 477 | func TestLotsOfEvents(t *testing.T) { |
| 478 | recorderCalled := make(chan struct{}) |
| 479 | loggerCalled := make(chan struct{}) |
| 480 | |
| 481 | // Fail each event a few times to ensure there's some load on the tested code. |
| 482 | var counts [1000]int |
| 483 | testEvents := testEventSink{ |
| 484 | OnCreate: func(event *v1.Event) (*v1.Event, error) { |
| 485 | num, err := strconv.Atoi(event.Message) |
| 486 | if err != nil { |
| 487 | t.Error(err) |
| 488 | return event, nil |
| 489 | } |
| 490 | counts[num]++ |
| 491 | if counts[num] < 5 { |
| 492 | return nil, fmt.Errorf("fake error") |
| 493 | } |
| 494 | recorderCalled <- struct{}{} |
| 495 | return event, nil |
| 496 | }, |
| 497 | } |
| 498 | |
| 499 | eventBroadcaster := NewBroadcasterForTests(0) |
| 500 | sinkWatcher := eventBroadcaster.StartRecordingToSink(&testEvents) |
| 501 | logWatcher := eventBroadcaster.StartLogging(func(formatter string, args ...interface{}) { |
| 502 | loggerCalled <- struct{}{} |
| 503 | }) |
| 504 | recorder := eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "eventTest"}) |
| 505 | for i := 0; i < maxQueuedEvents; i++ { |
| 506 | // we want a unique object to stop spam filtering |
| 507 | ref := &v1.ObjectReference{ |
| 508 | Kind: "Pod", |
| 509 | Name: fmt.Sprintf("foo-%v", i), |
| 510 | Namespace: "baz", |
| 511 | UID: "bar", |
| 512 | APIVersion: "version", |
| 513 | } |
| 514 | // we need to vary the reason to prevent aggregation |
| 515 | go recorder.Eventf(ref, v1.EventTypeNormal, "Reason-"+string(i), strconv.Itoa(i)) |
| 516 | } |
| 517 | // Make sure no events were dropped by either of the listeners. |
| 518 | for i := 0; i < maxQueuedEvents; i++ { |
| 519 | <-recorderCalled |
| 520 | <-loggerCalled |
| 521 | } |
| 522 | // Make sure that every event was attempted 5 times |
| 523 | for i := 0; i < maxQueuedEvents; i++ { |
| 524 | if counts[i] < 5 { |
| 525 | t.Errorf("Only attempted to record event '%d' %d times.", i, counts[i]) |
| 526 | } |
| 527 | } |
| 528 | sinkWatcher.Stop() |
| 529 | logWatcher.Stop() |
| 530 | } |
| 531 | |
| 532 | func TestEventfNoNamespace(t *testing.T) { |
| 533 | testPod := &v1.Pod{ |
nothing calls this directly
no test coverage detected