Merge pull request #112334 from dgrisonnet/fix-eventseries-count

Fix EventSeries starting count discrepancy
This commit is contained in:
Kubernetes Prow Robot 2023-03-14 07:28:16 -07:00 committed by GitHub
commit 689fc37dd2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 62 additions and 2 deletions

View File

@ -183,7 +183,7 @@ func (e *eventBroadcasterImpl) recordToSink(event *eventsv1.Event, clock clock.C
return nil
}
isomorphicEvent.Series = &eventsv1.EventSeries{
Count: 1,
Count: 2,
LastObservedTime: metav1.MicroTime{Time: clock.Now()},
}
// Make a copy of the Event to make sure that recording it

View File

@ -108,7 +108,7 @@ func TestEventSeriesf(t *testing.T) {
nonIsomorphicEvent := expectedEvent.DeepCopy()
nonIsomorphicEvent.Action = "stopped"
expectedEvent.Series = &eventsv1.EventSeries{Count: 1}
expectedEvent.Series = &eventsv1.EventSeries{Count: 2}
table := []struct {
regarding k8sruntime.Object
related k8sruntime.Object

View File

@ -18,6 +18,7 @@ package events
import (
"context"
"fmt"
"testing"
"time"
@ -96,3 +97,62 @@ func TestEventCompatibility(t *testing.T) {
t.Fatalf("unexpected err: %v", err)
}
}
func TestEventSeries(t *testing.T) {
result := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--disable-admission-plugins", "ServiceAccount"}, framework.SharedEtcd())
defer result.TearDownFn()
client := clientset.NewForConfigOrDie(result.ClientConfig)
testPod := &v1.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Namespace: "default",
UID: "bar",
},
}
regarding, err := ref.GetReference(scheme.Scheme, testPod)
if err != nil {
t.Fatal(err)
}
related, err := ref.GetPartialReference(scheme.Scheme, testPod, ".spec.containers[0]")
if err != nil {
t.Fatal(err)
}
stopCh := make(chan struct{})
defer close(stopCh)
broadcaster := events.NewBroadcaster(&events.EventSinkImpl{Interface: client.EventsV1()})
defer broadcaster.Shutdown()
recorder := broadcaster.NewRecorder(scheme.Scheme, "k8s.io/kube-scheduler")
broadcaster.StartRecordingToSink(stopCh)
recorder.Eventf(regarding, related, v1.EventTypeNormal, "memoryPressure", "killed", "memory pressure")
recorder.Eventf(regarding, related, v1.EventTypeNormal, "memoryPressure", "killed", "memory pressure")
err = wait.PollImmediate(100*time.Millisecond, 20*time.Second, func() (done bool, err error) {
events, err := client.EventsV1().Events("").List(context.TODO(), metav1.ListOptions{})
if err != nil {
return false, err
}
if len(events.Items) != 1 {
return false, nil
}
if events.Items[0].Series == nil {
return false, nil
}
if events.Items[0].Series.Count != 2 {
return false, fmt.Errorf("expected EventSeries to have a starting count of 2, got: %d", events.Items[0].Series.Count)
}
return true, nil
})
if err != nil {
t.Fatalf("error waiting for an Event with a non nil Series to be created: %v", err)
}
}