Skip to content

Commit

Permalink
feat(server)!: Sync dispatch of webhook events by default. Fixes argo…
Browse files Browse the repository at this point in the history
…proj#6981 and argoproj#6732

Signed-off-by: Alex Collins <[email protected]>
  • Loading branch information
alexec committed Oct 20, 2021
1 parent 6e349b9 commit 0735cd9
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions server/event/event_server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,43 +18,44 @@ import (

func TestController(t *testing.T) {
clientset := fake.NewSimpleClientset()
ctx := context.WithValue(context.TODO(), auth.WfKey, clientset)
newController := func(asyncDispatch bool) *Controller {
return NewController(instanceid.NewService("my-instanceid"), events.NewEventRecorderManager(fakekube.NewSimpleClientset()), 1, 1, asyncDispatch)
}
e1 := &eventpkg.EventRequest{Namespace: "my-ns", Payload: &wfv1.Item{}}
e2 := &eventpkg.EventRequest{}
t.Run("Async", func(t *testing.T) {

s := newController(true)

ctx := context.WithValue(context.TODO(), auth.WfKey, clientset)
_, err := s.ReceiveEvent(ctx, &eventpkg.EventRequest{Namespace: "my-ns", Payload: &wfv1.Item{}})
_, err := s.ReceiveEvent(ctx, e1)
assert.NoError(t, err)

assert.Len(t, s.operationQueue, 1, "one event to be processed")

_, err = s.ReceiveEvent(ctx, &eventpkg.EventRequest{})
_, err = s.ReceiveEvent(ctx, e2)
assert.EqualError(t, err, "operation queue full", "backpressure when queue is full")

stopCh := make(chan struct{}, 1)
stopCh <- struct{}{}
s.Run(stopCh)

assert.Len(t, s.operationQueue, 0, "all events were processed")

})
t.Run("Sync", func(t *testing.T) {

s := newController(false)

ctx := context.WithValue(context.TODO(), auth.WfKey, clientset)
_, err := s.ReceiveEvent(ctx, &eventpkg.EventRequest{Namespace: "my-ns", Payload: &wfv1.Item{}})
_, err := s.ReceiveEvent(ctx, e1)
assert.NoError(t, err)
_, err = s.ReceiveEvent(ctx, &eventpkg.EventRequest{})
_, err = s.ReceiveEvent(ctx, e2)
assert.NoError(t, err)
})
t.Run("SyncError", func(t *testing.T) {

s := newController(false)

ctx := context.WithValue(context.TODO(), auth.WfKey, clientset)
_, err := s.ReceiveEvent(ctx, &eventpkg.EventRequest{Namespace: "my-ns", Payload: &wfv1.Item{Value: json.RawMessage("!")}})
assert.EqualError(t, err, "failed to create workflow template expression environment: json: error calling MarshalJSON for type *v1alpha1.Item: invalid character '!' looking for beginning of value")
})
Expand Down

0 comments on commit 0735cd9

Please sign in to comment.