diff --git a/e2e/builder/global_test.go b/e2e/builder/global_test.go index 1e2650becc..0e0cd5db10 100644 --- a/e2e/builder/global_test.go +++ b/e2e/builder/global_test.go @@ -25,8 +25,10 @@ import ( "os" "testing" + camelv1 "github.com/apache/camel-k/pkg/apis/camel/v1" . "github.com/onsi/gomega" "github.com/stretchr/testify/assert" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" v1 "k8s.io/api/core/v1" @@ -49,14 +51,17 @@ func TestRunGlobalInstall(t *testing.T) { WithNewTestNamespace(t, func(ns string) { Expect(Kamel("install", "-n", ns, "--global").Execute()).To(Succeed()) - // NS2: namespace without operator + // NS2: namespace without operator but with platform WithNewTestNamespace(t, func(ns2 string) { + // Creating platform Expect(Kamel("install", "-n", ns2, "--skip-operator-setup", "--olm=false").Execute()).To(Succeed()) Expect(Kamel("run", "-n", ns2, "files/Java.java").Execute()).To(Succeed()) Eventually(IntegrationPodPhase(ns2, "java"), TestTimeoutMedium).Should(Equal(v1.PodRunning)) Eventually(IntegrationLogs(ns2, "java"), TestTimeoutShort).Should(ContainSubstring("Magicstring!")) Expect(Kamel("delete", "--all", "-n", ns2).Execute()).To(Succeed()) + Expect(Kits(ns2)()).Should(HaveLen(1)) + Expect(Kits(ns)()).Should(HaveLen(0)) Expect(ConfigMap(ns2, platform.OperatorLockName)()).To(BeNil(), "No locking configmap expected") }) @@ -75,6 +80,56 @@ func TestRunGlobalInstall(t *testing.T) { ) }) + // NS4: namespace without operator or platform + WithNewTestNamespace(t, func(ns4 string) { + Expect(Kamel("run", "-n", ns4, "files/Java.java").Execute()).To(Succeed()) + Eventually(IntegrationPodPhase(ns4, "java"), TestTimeoutMedium).Should(Equal(v1.PodRunning)) + Eventually(IntegrationLogs(ns4, "java"), TestTimeoutShort).Should(ContainSubstring("Magicstring!")) + Expect(Kamel("delete", "--all", "-n", ns4).Execute()).To(Succeed()) + Expect(Kits(ns4)()).Should(HaveLen(0)) + Expect(Kits(ns)()).Should(HaveLen(1)) // Kit built globally + + Expect(ConfigMap(ns4, platform.OperatorLockName)()).To(BeNil(), "No locking configmap expected") + }) + + // NS5: second namespace without operator or platform, using an external kit + WithNewTestNamespace(t, func(ns5 string) { + Expect(Kamel("run", "-n", ns5, "files/Java.java").Execute()).To(Succeed()) + Eventually(IntegrationPodPhase(ns5, "java"), TestTimeoutMedium).Should(Equal(v1.PodRunning)) + Eventually(IntegrationLogs(ns5, "java"), TestTimeoutShort).Should(ContainSubstring("Magicstring!")) + Expect(Kamel("delete", "--all", "-n", ns5).Execute()).To(Succeed()) + Expect(Kits(ns5)()).Should(HaveLen(0)) + globalKits := Kits(ns)() + Expect(globalKits).Should(HaveLen(1)) // Reusing the same global kit + if len(globalKits) == 1 { + kit := globalKits[0] + // external kit mirroring the global one + externalKit := camelv1.IntegrationKit{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: ns5, + Name: "external", + Labels: map[string]string{ + "camel.apache.org/kit.type": camelv1.IntegrationKitTypeExternal, + }, + }, + Spec: camelv1.IntegrationKitSpec{ + Image: kit.Status.Image, + }, + } + Expect(TestClient().Create(TestContext, &externalKit)).Should(BeNil()) + + Expect(Kamel("run", "-n", ns5, "files/Java.java", "--kit", "external").Execute()).To(Succeed()) + Eventually(IntegrationPodPhase(ns5, "java"), TestTimeoutMedium).Should(Equal(v1.PodRunning)) + Eventually(IntegrationLogs(ns5, "java"), TestTimeoutShort).Should(ContainSubstring("Magicstring!")) + Expect(IntegrationKit(ns5, "java")).Should(Equal("external")) + Expect(Kamel("delete", "--all", "-n", ns5).Execute()).To(Succeed()) + Expect(Kits(ns5)()).Should(HaveLen(1)) // the external one + Expect(Kits(ns)()).Should(HaveLen(1)) // the global one + } + + Expect(ConfigMap(ns5, platform.OperatorLockName)()).To(BeNil(), "No locking configmap expected") + }) + Expect(Kamel("uninstall", "-n", ns, "--skip-crd", "--skip-cluster-roles").Execute()).To(Succeed()) }) }