This repository has been archived by the owner on Jun 19, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 82
/
test_broker_pubsub.go
114 lines (89 loc) · 4.45 KB
/
test_broker_pubsub.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/*
Copyright 2019 Google LLC
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
http://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 e2e
import (
"net/url"
"testing"
"knative.dev/eventing/pkg/apis/eventing"
eventingtestlib "knative.dev/eventing/test/lib"
"knative.dev/eventing/test/lib/duck"
eventingtestresources "knative.dev/eventing/test/lib/resources"
"knative.dev/pkg/test/helpers"
// The following line to load the gcp plugin (only required to authenticate against GKE clusters).
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
"github.com/google/knative-gcp/test/e2e/lib"
kngcphelpers "github.com/google/knative-gcp/test/e2e/lib/helpers"
)
/*
PubSubWithBrokerTestImpl tests the following scenario:
5 4
------------------ --------------------
| | | |
1 v 2 | v 3 |
(Sender or Source) ---> Broker(PubSub) ---> trigger -------> Knative Service(Receiver)
|
| 6 7
|-------> respTrigger -------> Service(Target)
Note: the number denotes the sequence of the event that flows in this test case.
*/
func BrokerWithPubSubChannelTestImpl(t *testing.T, authConfig lib.AuthConfig) {
client := lib.Setup(t, true, authConfig.WorkloadIdentity)
defer lib.TearDown(client)
brokerURL, brokerName := createBrokerWithPubSubChannel(client)
kngcphelpers.BrokerEventTransformationTestHelper(client, brokerURL, brokerName)
}
func PubSubSourceBrokerWithPubSubChannelTestImpl(t *testing.T, authConfig lib.AuthConfig) {
client := lib.Setup(t, true, authConfig.WorkloadIdentity)
defer lib.TearDown(client)
brokerURL, brokerName := createBrokerWithPubSubChannel(client)
kngcphelpers.BrokerEventTransformationTestWithPubSubSourceHelper(client, authConfig, brokerURL, brokerName)
// TODO(nlopezgi): assert StackDriver metrics after https://github.com/google/knative-gcp/issues/317 is resolved
}
func StorageSourceBrokerWithPubSubChannelTestImpl(t *testing.T, authConfig lib.AuthConfig) {
client := lib.Setup(t, true, authConfig.WorkloadIdentity)
defer lib.TearDown(client)
brokerURL, brokerName := createBrokerWithPubSubChannel(client)
kngcphelpers.BrokerEventTransformationTestWithStorageSourceHelper(client, authConfig, brokerURL, brokerName)
}
func AuditLogsSourceBrokerWithPubSubChannelTestImpl(t *testing.T, authConfig lib.AuthConfig) {
client := lib.Setup(t, true, authConfig.WorkloadIdentity)
defer lib.TearDown(client)
brokerURL, brokerName := createBrokerWithPubSubChannel(client)
kngcphelpers.BrokerEventTransformationTestWithAuditLogsSourceHelper(client, authConfig, brokerURL, brokerName)
}
func SchedulerSourceBrokerWithPubSubChannelTestImpl(t *testing.T, authConfig lib.AuthConfig) {
client := lib.Setup(t, true, authConfig.WorkloadIdentity)
defer lib.TearDown(client)
brokerURL, brokerName := createBrokerWithPubSubChannel(client)
kngcphelpers.BrokerEventTransformationTestWithSchedulerSourceHelper(client, authConfig, brokerURL, brokerName)
}
func createBrokerWithPubSubChannel(client *lib.Client) (url.URL, string) {
brokerName := helpers.AppendRandomString("pubsub")
// Create a new Broker.
// TODO(chizhg): maybe we don't need to create these RBAC resources as they will now be automatically created?
client.Core.CreateRBACResourcesForBrokers()
client.Core.CreateBrokerConfigMapOrFail(brokerName, lib.ChannelTypeMeta)
client.Core.CreateBrokerV1Beta1OrFail(brokerName,
eventingtestresources.WithBrokerClassForBrokerV1Beta1(eventing.MTChannelBrokerClassValue),
eventingtestresources.WithConfigMapForBrokerConfig(),
)
// Wait for broker ready.
client.Core.WaitForResourceReadyOrFail(brokerName, eventingtestlib.BrokerTypeMeta)
// Get broker URL.
metaAddressable := eventingtestresources.NewMetaResource(brokerName, client.Namespace, eventingtestlib.BrokerTypeMeta)
u, err := duck.GetAddressableURI(client.Core.Dynamic, metaAddressable)
if err != nil {
client.T.Error(err.Error())
}
return u, brokerName
}