@@ -10,9 +10,13 @@ import (
10
10
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/signalfxreceiver"
11
11
"go.opentelemetry.io/collector/component/componenttest"
12
12
"go.opentelemetry.io/collector/consumer/consumertest"
13
+ "go.opentelemetry.io/collector/pdata/plog"
13
14
"go.opentelemetry.io/collector/pdata/pmetric"
14
15
"go.opentelemetry.io/collector/pdata/ptrace"
15
16
"go.opentelemetry.io/collector/receiver/receivertest"
17
+ v1 "k8s.io/api/core/v1"
18
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
19
+ "k8s.io/client-go/kubernetes"
16
20
"os"
17
21
"path/filepath"
18
22
"runtime"
@@ -106,6 +110,11 @@ func writeNewExpectedMetricsResult(t *testing.T, file string, metric *pmetric.Me
106
110
require .NoError (t , golden .WriteMetrics (t , filepath .Join ("results" , filepath .Base (file )), * metric ))
107
111
}
108
112
113
+ func writeNewExpectedLogsResult (t * testing.T , file string , log * plog.Logs ) {
114
+ require .NoError (t , os .MkdirAll ("results" , 0755 ))
115
+ require .NoError (t , golden .WriteLogs (t , filepath .Join ("results" , filepath .Base (file )), * log ))
116
+ }
117
+
109
118
func setupSignalfxReceiver (t * testing.T , port int ) * consumertest.MetricsSink {
110
119
mc := new (consumertest.MetricsSink )
111
120
f := signalfxreceiver .NewFactory ()
@@ -123,3 +132,57 @@ func setupSignalfxReceiver(t *testing.T, port int) *consumertest.MetricsSink {
123
132
124
133
return mc
125
134
}
135
+
136
+ func checkPodsReady (t * testing.T , clientset * kubernetes.Clientset , namespace , labelSelector string , timeout time.Duration ) {
137
+ require .Eventually (t , func () bool {
138
+ pods , err := clientset .CoreV1 ().Pods (namespace ).List (context .TODO (), metav1.ListOptions {
139
+ LabelSelector : labelSelector ,
140
+ })
141
+ require .NoError (t , err )
142
+ if len (pods .Items ) == 0 {
143
+ return false
144
+ }
145
+ for _ , pod := range pods .Items {
146
+ if pod .Status .Phase != v1 .PodRunning {
147
+ return false
148
+ }
149
+ ready := false
150
+ for _ , condition := range pod .Status .Conditions {
151
+ if condition .Type == v1 .PodReady && condition .Status == v1 .ConditionTrue {
152
+ ready = true
153
+ break
154
+ }
155
+ }
156
+ if ! ready {
157
+ return false
158
+ }
159
+ }
160
+ return true
161
+ }, timeout , 5 * time .Second , "Pods in namespace %s with label %s are not ready" , namespace , labelSelector )
162
+ }
163
+
164
+ func createNamespace (t * testing.T , clientset * kubernetes.Clientset , name string ) {
165
+ ns := & v1.Namespace {
166
+ ObjectMeta : metav1.ObjectMeta {
167
+ Name : name ,
168
+ },
169
+ }
170
+ _ , err := clientset .CoreV1 ().Namespaces ().Create (context .TODO (), ns , metav1.CreateOptions {})
171
+ require .NoError (t , err , "failed to create namespace %s" , name )
172
+
173
+ require .Eventually (t , func () bool {
174
+ _ , err := clientset .CoreV1 ().Namespaces ().Get (context .TODO (), name , metav1.GetOptions {})
175
+ return err == nil
176
+ }, 1 * time .Minute , 5 * time .Second , "namespace %s is not available" , name )
177
+ }
178
+
179
+ func labelNamespace (t * testing.T , clientset * kubernetes.Clientset , name , key , value string ) {
180
+ ns , err := clientset .CoreV1 ().Namespaces ().Get (context .TODO (), name , metav1.GetOptions {})
181
+ require .NoError (t , err )
182
+ if ns .Labels == nil {
183
+ ns .Labels = make (map [string ]string )
184
+ }
185
+ ns .Labels [key ] = value
186
+ _ , err = clientset .CoreV1 ().Namespaces ().Update (context .TODO (), ns , metav1.UpdateOptions {})
187
+ require .NoError (t , err )
188
+ }
0 commit comments