From e4caf412049036aa482a15647ba990cef548fe26 Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Tue, 13 Oct 2020 19:19:49 +0200 Subject: [PATCH 1/3] Remove transformevents Signed-off-by: Francesco Guardiani --- .../helpers/broker_data_plane_test_helper.go | 14 +-- .../helpers/broker_tracing_test_helper.go | 15 +-- .../helpers/channel_tracing_test_helper.go | 13 ++- .../e2e/helpers/broker_channel_flow_helper.go | 13 ++- ...broker_event_transformation_test_helper.go | 13 ++- test/lib/recordevents/resources.go | 6 +- test/lib/resources/kube.go | 27 ------ test/test_images/transformevents/main.go | 95 ------------------- test/test_images/transformevents/pod.yaml | 9 -- 9 files changed, 44 insertions(+), 161 deletions(-) delete mode 100644 test/test_images/transformevents/main.go delete mode 100644 test/test_images/transformevents/pod.yaml diff --git a/test/conformance/helpers/broker_data_plane_test_helper.go b/test/conformance/helpers/broker_data_plane_test_helper.go index be88f7eb4c2..ceed3cc7f88 100644 --- a/test/conformance/helpers/broker_data_plane_test_helper.go +++ b/test/conformance/helpers/broker_data_plane_test_helper.go @@ -276,14 +276,16 @@ func BrokerV1Beta1ConsumerDataPlaneTestHelper( } transformMsg := []byte(`{"msg":"Transformed!"}`) - transformPod := resources.EventTransformationPod( + recordevents.DeployEventRecordOrFail( + ctx, + client, transformerName, - "reply-check-type", - "reply-check-source", - transformMsg, + recordevents.ReplyWithTransformedEvent( + "reply-check-type", + "reply-check-source", + string(transformMsg), + ), ) - client.CreatePodOrFail(transformPod, testlib.WithService(transformerName)) - client.WaitForAllTestResourcesReadyOrFail(ctx) trigger := client.CreateTriggerOrFailV1Beta1( triggerName, diff --git a/test/conformance/helpers/broker_tracing_test_helper.go b/test/conformance/helpers/broker_tracing_test_helper.go index 9c09109c9fa..8e482ae3de1 100644 --- a/test/conformance/helpers/broker_tracing_test_helper.go +++ b/test/conformance/helpers/broker_tracing_test_helper.go @@ -93,15 +93,18 @@ func setupBrokerTracing(ctx context.Context, brokerClass string) SetupTracingTes resources.WithSubscriberServiceRefForTriggerV1Beta1(loggerPodName), ) - // Create a transformer (EventTransfrmer) Pod that replies with the same event as the input, + // Create a transformer Pod (recordevents with tranform reply) that replies with the same event as the input, // except the reply's event's type is changed to bar. - eventTransformerPod := resources.EventTransformationPod( + eventTransformerPod := recordevents.DeployEventRecordOrFail( + ctx, + client, "transformer", - etLogger, - senderName, - []byte(eventBody), + recordevents.ReplyWithTransformedEvent( + etLogger, + senderName, + eventBody, + ), ) - client.CreatePodOrFail(eventTransformerPod, testlib.WithService(eventTransformerPod.Name)) // Create a Trigger that receives events (type=foo) and sends them to the transformer Pod. transformerTrigger := client.CreateTriggerOrFailV1Beta1( diff --git a/test/conformance/helpers/channel_tracing_test_helper.go b/test/conformance/helpers/channel_tracing_test_helper.go index c8d95f5677b..323ce8c6748 100644 --- a/test/conformance/helpers/channel_tracing_test_helper.go +++ b/test/conformance/helpers/channel_tracing_test_helper.go @@ -73,13 +73,16 @@ func setupChannelTracingWithReply( recordEventsPod := recordevents.DeployEventRecordOrFail(ctx, client, recordEventsPodName) // Create the subscriber, a Pod that mutates the event. - transformerPod := resources.EventTransformationPod( + transformerPod := recordevents.DeployEventRecordOrFail( + ctx, + client, "transformer", - "mutated", - eventSource, - nil, + recordevents.ReplyWithTransformedEvent( + "mutated", + eventSource, + "", + ), ) - client.CreatePodOrFail(transformerPod, testlib.WithService(transformerPod.Name)) // Create the Subscription linking the Channel to the mutator. client.CreateSubscriptionOrFail( diff --git a/test/e2e/helpers/broker_channel_flow_helper.go b/test/e2e/helpers/broker_channel_flow_helper.go index 7ff3061ee3b..de0d4648e3d 100644 --- a/test/e2e/helpers/broker_channel_flow_helper.go +++ b/test/e2e/helpers/broker_channel_flow_helper.go @@ -107,13 +107,16 @@ func BrokerChannelFlowWithTransformation( } // create the transformation service for trigger1 - transformationPod := resources.EventTransformationPod( + recordevents.DeployEventRecordOrFail( + ctx, + client, transformationPodName, - transformedEventType, - transformedEventSource, - []byte(transformedBody), + recordevents.ReplyWithTransformedEvent( + transformedEventType, + transformedEventSource, + transformedBody, + ), ) - client.CreatePodOrFail(transformationPod, testlib.WithService(transformationPodName)) // create trigger1 to receive the original event, and do event transformation if triggerVersion == "v1" { diff --git a/test/e2e/helpers/broker_event_transformation_test_helper.go b/test/e2e/helpers/broker_event_transformation_test_helper.go index 58448f60e8b..fd51fc09e59 100644 --- a/test/e2e/helpers/broker_event_transformation_test_helper.go +++ b/test/e2e/helpers/broker_event_transformation_test_helper.go @@ -73,13 +73,16 @@ func EventTransformationForTriggerTestHelper( client.WaitForResourceReadyOrFail(brokerName, testlib.BrokerTypeMeta) // create the transformation service - transformationPod := resources.EventTransformationPod( + recordevents.DeployEventRecordOrFail( + ctx, + client, transformationPodName, - transformedEventType, - transformedEventSource, - []byte(transformedBody), + recordevents.ReplyWithTransformedEvent( + transformedEventType, + transformedEventSource, + transformedBody, + ), ) - client.CreatePodOrFail(transformationPod, testlib.WithService(transformationPodName)) // create trigger1 for event transformation if triggerVersion == "v1" { diff --git a/test/lib/recordevents/resources.go b/test/lib/recordevents/resources.go index 7b018818c63..dd21dd652b9 100644 --- a/test/lib/recordevents/resources.go +++ b/test/lib/recordevents/resources.go @@ -90,7 +90,7 @@ func DeployEventRecordOrFail(ctx context.Context, client *testlib.Client, name s )) client.CreateRoleBindingOrFail(name, "Role", name, name, client.Namespace) - eventRecordPod := EventRecordPod(name, name) + eventRecordPod := eventRecordPod(name, name) client.CreatePodOrFail(eventRecordPod, append(options, testlib.WithService(name))...) err := pkgtest.WaitForPodRunning(ctx, client.Kube, name, client.Namespace) if err != nil { @@ -100,8 +100,8 @@ func DeployEventRecordOrFail(ctx context.Context, client *testlib.Client, name s return eventRecordPod } -// EventRecordPod creates a Pod that stores received events for test retrieval. -func EventRecordPod(name string, serviceAccountName string) *corev1.Pod { +// eventRecordPod creates a Pod that stores received events for test retrieval. +func eventRecordPod(name string, serviceAccountName string) *corev1.Pod { return recordEventsPod("recordevents", name, serviceAccountName) } diff --git a/test/lib/resources/kube.go b/test/lib/resources/kube.go index 67b6557d14b..d8f0658212b 100644 --- a/test/lib/resources/kube.go +++ b/test/lib/resources/kube.go @@ -37,33 +37,6 @@ type PodOption func(*corev1.Pod) // Option enables further configuration of a Role. type RoleOption func(*rbacv1.Role) -// EventTransformationPod creates a Pod that transforms events received receiving as arg a cloudevents sdk2 Event -func EventTransformationPod(name string, newEventType string, newEventSource string, newEventData []byte) *corev1.Pod { - const imageName = "transformevents" - return &corev1.Pod{ - ObjectMeta: metav1.ObjectMeta{ - Name: name, - Labels: map[string]string{"e2etest": string(uuid.NewUUID())}, - }, - Spec: corev1.PodSpec{ - Containers: []corev1.Container{{ - Name: imageName, - Image: pkgTest.ImagePath(imageName), - ImagePullPolicy: corev1.PullIfNotPresent, - Args: []string{ - "-event-type", - newEventType, - "-event-source", - newEventSource, - "-event-data", - string(newEventData), - }, - }}, - RestartPolicy: corev1.RestartPolicyAlways, - }, - } -} - // HelloWorldPod creates a Pod that logs "Hello, World!". func HelloWorldPod(name string, options ...PodOption) *corev1.Pod { const imageName = "print" diff --git a/test/test_images/transformevents/main.go b/test/test_images/transformevents/main.go deleted file mode 100644 index 651787eea54..00000000000 --- a/test/test_images/transformevents/main.go +++ /dev/null @@ -1,95 +0,0 @@ -/* -Copyright 2019 The Knative Authors - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package main - -import ( - "context" - "flag" - "log" - - "knative.dev/eventing/pkg/kncloudevents" - "knative.dev/eventing/test/test_images" - - cloudevents "github.com/cloudevents/sdk-go/v2" - "go.uber.org/zap" -) - -var ( - eventType string - eventSource string - eventData string -) - -func init() { - flag.StringVar(&eventType, "event-type", "", "The Event Type to use.") - flag.StringVar(&eventSource, "event-source", "", "Source URI to use. Defaults to the current machine's hostname") - flag.StringVar(&eventData, "event-data", "", "Cloudevent data body.") -} - -func gotEvent(event cloudevents.Event) (*cloudevents.Event, error) { - log.Println("Received a new event: ") - log.Printf("[%s] %s %s: %s", event.Time().String(), event.Source(), event.Type(), string(event.Data())) - - outputEvent := event.Clone() - - if eventSource != "" { - outputEvent.SetSource(eventSource) - } - if eventType != "" { - outputEvent.SetType(eventType) - } - if eventData != "" { - if err := outputEvent.SetData(cloudevents.ApplicationJSON, []byte(eventData)); err != nil { - return nil, err - } - } - - log.Println("Transform the event to: ") - log.Printf("[%s] %s %s: %s", outputEvent.Time().String(), outputEvent.Source(), outputEvent.Type(), string(outputEvent.Data())) - - return &outputEvent, nil -} - -func main() { - // parse the command line flags - flag.Parse() - - logger, _ := zap.NewDevelopment() - if err := test_images.ConfigureTracing(logger.Sugar(), ""); err != nil { - log.Fatalf("Unable to setup trace publishing: %v", err) - } - - t, err := cloudevents.NewHTTP( - cloudevents.WithPort(8080), - cloudevents.WithMiddleware(kncloudevents.CreateHandler), - ) - if err != nil { - log.Fatalf("failed to create transport, %v", err) - } - - c, err := cloudevents.NewClientObserved(t, - cloudevents.WithTracePropagation, - ) - if err != nil { - log.Fatalf("failed to create client, %v", err) - } - - log.Printf("listening on 8080") - if err := c.StartReceiver(context.Background(), gotEvent); err != nil { - log.Fatalf("failed to start receiver: %s", err) - } -} diff --git a/test/test_images/transformevents/pod.yaml b/test/test_images/transformevents/pod.yaml deleted file mode 100644 index 82cc5904207..00000000000 --- a/test/test_images/transformevents/pod.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: transformevents -spec: - containers: - - name: transformevents - image: ko://knative.dev/eventing/test/test_images/transformevents - From 9db66f0f101dd8d52de501fd114a5e8d2b0f1003 Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Tue, 13 Oct 2020 20:44:52 +0200 Subject: [PATCH 2/3] Comments Signed-off-by: Francesco Guardiani --- test/conformance/helpers/broker_tracing_test_helper.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/conformance/helpers/broker_tracing_test_helper.go b/test/conformance/helpers/broker_tracing_test_helper.go index 8e482ae3de1..4cf68a42aac 100644 --- a/test/conformance/helpers/broker_tracing_test_helper.go +++ b/test/conformance/helpers/broker_tracing_test_helper.go @@ -93,7 +93,7 @@ func setupBrokerTracing(ctx context.Context, brokerClass string) SetupTracingTes resources.WithSubscriberServiceRefForTriggerV1Beta1(loggerPodName), ) - // Create a transformer Pod (recordevents with tranform reply) that replies with the same event as the input, + // Create a transformer Pod (recordevents with transform reply) that replies with the same event as the input, // except the reply's event's type is changed to bar. eventTransformerPod := recordevents.DeployEventRecordOrFail( ctx, From 076f7ecf8df5472aeca49eaf535eab76cb5b47a7 Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Wed, 14 Oct 2020 12:03:47 +0200 Subject: [PATCH 3/3] Let's be less breaky: brought back the image Signed-off-by: Francesco Guardiani --- test/test_images/transformevents/main.go | 95 +++++++++++++++++++++++ test/test_images/transformevents/pod.yaml | 9 +++ 2 files changed, 104 insertions(+) create mode 100644 test/test_images/transformevents/main.go create mode 100644 test/test_images/transformevents/pod.yaml diff --git a/test/test_images/transformevents/main.go b/test/test_images/transformevents/main.go new file mode 100644 index 00000000000..651787eea54 --- /dev/null +++ b/test/test_images/transformevents/main.go @@ -0,0 +1,95 @@ +/* +Copyright 2019 The Knative Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "context" + "flag" + "log" + + "knative.dev/eventing/pkg/kncloudevents" + "knative.dev/eventing/test/test_images" + + cloudevents "github.com/cloudevents/sdk-go/v2" + "go.uber.org/zap" +) + +var ( + eventType string + eventSource string + eventData string +) + +func init() { + flag.StringVar(&eventType, "event-type", "", "The Event Type to use.") + flag.StringVar(&eventSource, "event-source", "", "Source URI to use. Defaults to the current machine's hostname") + flag.StringVar(&eventData, "event-data", "", "Cloudevent data body.") +} + +func gotEvent(event cloudevents.Event) (*cloudevents.Event, error) { + log.Println("Received a new event: ") + log.Printf("[%s] %s %s: %s", event.Time().String(), event.Source(), event.Type(), string(event.Data())) + + outputEvent := event.Clone() + + if eventSource != "" { + outputEvent.SetSource(eventSource) + } + if eventType != "" { + outputEvent.SetType(eventType) + } + if eventData != "" { + if err := outputEvent.SetData(cloudevents.ApplicationJSON, []byte(eventData)); err != nil { + return nil, err + } + } + + log.Println("Transform the event to: ") + log.Printf("[%s] %s %s: %s", outputEvent.Time().String(), outputEvent.Source(), outputEvent.Type(), string(outputEvent.Data())) + + return &outputEvent, nil +} + +func main() { + // parse the command line flags + flag.Parse() + + logger, _ := zap.NewDevelopment() + if err := test_images.ConfigureTracing(logger.Sugar(), ""); err != nil { + log.Fatalf("Unable to setup trace publishing: %v", err) + } + + t, err := cloudevents.NewHTTP( + cloudevents.WithPort(8080), + cloudevents.WithMiddleware(kncloudevents.CreateHandler), + ) + if err != nil { + log.Fatalf("failed to create transport, %v", err) + } + + c, err := cloudevents.NewClientObserved(t, + cloudevents.WithTracePropagation, + ) + if err != nil { + log.Fatalf("failed to create client, %v", err) + } + + log.Printf("listening on 8080") + if err := c.StartReceiver(context.Background(), gotEvent); err != nil { + log.Fatalf("failed to start receiver: %s", err) + } +} diff --git a/test/test_images/transformevents/pod.yaml b/test/test_images/transformevents/pod.yaml new file mode 100644 index 00000000000..82cc5904207 --- /dev/null +++ b/test/test_images/transformevents/pod.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Pod +metadata: + name: transformevents +spec: + containers: + - name: transformevents + image: ko://knative.dev/eventing/test/test_images/transformevents +