MCPcopy
hub / github.com/kubernetes/client-go / TestLotsOfEvents

Function TestLotsOfEvents

tools/record/event_test.go:477–530  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

475}
476
477func 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
532func TestEventfNoNamespace(t *testing.T) {
533 testPod := &v1.Pod{

Callers

nothing calls this directly

Calls 8

NewBroadcasterForTestsFunction · 0.85
ErrorMethod · 0.65
ErrorfMethod · 0.65
StartRecordingToSinkMethod · 0.65
StartLoggingMethod · 0.65
NewRecorderMethod · 0.65
EventfMethod · 0.65
StopMethod · 0.65

Tested by

no test coverage detected