This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch camel-main
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit f49e2077e2608179caa189ce3c50f8a9c07072d3
Author: Tadayoshi Sato <sato.tadayo...@gmail.com>
AuthorDate: Fri Jun 11 12:38:58 2021 +0900

    chore(e2e): allow e2e to use nexus mirror to speed up testing #2387
    
    If env variable TEST_ENABLE_NEXUS=true is set, testing hook will look
    for 'nexus' service in 'nexus' ns and if available it's assigned to
    camel-k platform as the maven mirror during e2e testing.
---
 e2e/knative/kamelet_test.go     |  1 +
 e2e/support/files/nexus.yaml    | 56 ++++++++++++++++++++++++++++++++++
 e2e/support/test_nexus_hooks.go | 66 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 123 insertions(+)

diff --git a/e2e/knative/kamelet_test.go b/e2e/knative/kamelet_test.go
index 7e705d4..5de5dbe 100644
--- a/e2e/knative/kamelet_test.go
+++ b/e2e/knative/kamelet_test.go
@@ -55,5 +55,6 @@ func TestKameletChange(t *testing.T) {
                Eventually(IntegrationPodPhase(ns, "timer-binding"), 
TestTimeoutMedium).Should(Equal(v1.PodRunning))
                Eventually(IntegrationCondition(ns, "timer-binding", 
camelv1.IntegrationConditionReady), 
TestTimeoutShort).Should(Equal(v1.ConditionTrue))
                Eventually(IntegrationLogs(ns, "display"), 
TestTimeoutShort).Should(ContainSubstring("message is Hi"))
+               Expect(Kamel("delete", "--all", "-n", 
ns).Execute()).To(Succeed())
        })
 }
diff --git a/e2e/support/files/nexus.yaml b/e2e/support/files/nexus.yaml
new file mode 100644
index 0000000..c4e8403
--- /dev/null
+++ b/e2e/support/files/nexus.yaml
@@ -0,0 +1,56 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: nexus
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: nexus
+  namespace: nexus
+spec:
+  selector:
+    app: nexus
+  ports:
+    - protocol: TCP
+      port: 80
+      targetPort: 8081
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: nexus
+  namespace: nexus
+spec:
+  selector:
+    matchLabels:
+      app: nexus
+  template:
+    metadata:
+      labels:
+        app: nexus
+    spec:
+      containers:
+        - name: nexus
+          image: sonatype/nexus3
+          ports:
+            - containerPort: 8081
+              name: 8081-tcp
+          livenessProbe:
+            httpGet:
+              path: /service/rest/v1/status
+              port: 8081
+            initialDelaySeconds: 90
+            periodSeconds: 3
+          readinessProbe:
+            httpGet:
+              path: /service/rest/v1/status
+              port: 8081
+            initialDelaySeconds: 90
+            periodSeconds: 3
+          volumeMounts:
+            - name: nexus-data
+              mountPath: /nexus-data
+      volumes:
+        - name: nexus-data
+          emptyDir: {}
diff --git a/e2e/support/test_nexus_hooks.go b/e2e/support/test_nexus_hooks.go
new file mode 100644
index 0000000..a04bb6e
--- /dev/null
+++ b/e2e/support/test_nexus_hooks.go
@@ -0,0 +1,66 @@
+// +build integration
+
+// To enable compilation of this file in Goland, go to "Settings -> Go -> 
Vendoring & Build Tags -> Custom Tags" and add "integration"
+
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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 support
+
+import (
+       "fmt"
+       "os"
+
+       corev1 "k8s.io/api/core/v1"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
+)
+
+const (
+       nexusNamespace   = "nexus"
+       nexusService     = "nexus"
+       nexusMavenMirror = 
"http://nexus.nexus/repository/maven-public/@id=nexus@mirrorOf=central";
+)
+
+func init() {
+       // Nexus repository mirror is disabled by default for E2E testing
+       nexus := os.Getenv("TEST_ENABLE_NEXUS")
+       if nexus == "true" {
+               svcChecked := false
+               svcExists := true
+               KamelHooks = append(KamelHooks, func(args []string) []string {
+                       if len(args) > 0 && args[0] == "install" {
+                               // Enable mirror only if nexus service exists
+                               if !svcChecked {
+                                       svc := corev1.Service{}
+                                       key := ctrl.ObjectKey{
+                                               Namespace: nexusNamespace,
+                                               Name:      nexusService,
+                                       }
+
+                                       if err := TestClient().Get(TestContext, 
key, &svc); err != nil {
+                                               svcExists = false
+                                       }
+                                       svcChecked = true
+                               }
+                               if svcExists {
+                                       args = append(args, 
fmt.Sprintf("--maven-repository=%s", nexusMavenMirror))
+                               }
+                       }
+                       return args
+               })
+       }
+}

Reply via email to