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

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

commit d948a43b57f4d969ba79336c619ede2231647876
Author: nferraro <ni.ferr...@gmail.com>
AuthorDate: Fri Jan 4 10:12:42 2019 +0100

    Fix #237: fix integration tests
---
 deploy/resources.go                                | 52 ----------------------
 .../client/cmd/client.go                           | 41 +++++++++--------
 pkg/client/cmd/root.go                             | 23 ++--------
 test/build_manager_integration_test.go             |  7 +--
 test/cluster_integration_test.go                   |  6 +--
 test/log_scrape_integration_test.go                | 14 +++---
 test/testing_env.go                                | 40 +++++++++++------
 7 files changed, 65 insertions(+), 118 deletions(-)

diff --git a/deploy/resources.go b/deploy/resources.go
index 72cd8dd..f256198 100644
--- a/deploy/resources.go
+++ b/deploy/resources.go
@@ -2813,58 +2813,6 @@ spec:
         enabled: "true"
 
 `
-       Resources["role.yaml"] =
-               `
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
-  creationTimestamp: null
-  name: camel-k
-rules:
-- apiGroups:
-  - ""
-  resources:
-  - pods
-  - services
-  - endpoints
-  - persistentvolumeclaims
-  - events
-  - configmaps
-  - secrets
-  verbs:
-  - '*'
-- apiGroups:
-  - ""
-  resources:
-  - namespaces
-  verbs:
-  - get
-- apiGroups:
-  - apps
-  resources:
-  - deployments
-  - daemonsets
-  - replicasets
-  - statefulsets
-  verbs:
-  - '*'
-- apiGroups:
-  - monitoring.coreos.com
-  resources:
-  - servicemonitors
-  verbs:
-  - get
-  - create
-- apiGroups:
-  - camel.apache.org
-  resources:
-  - '*'
-  - integrationcontexts
-  - integrationplatforms
-  verbs:
-  - '*'
-
-`
        Resources["user-cluster-role.yaml"] =
                `
 kind: ClusterRole
diff --git a/test/cluster_integration_test.go b/pkg/client/cmd/client.go
similarity index 51%
copy from test/cluster_integration_test.go
copy to pkg/client/cmd/client.go
index 28fc854..12f35e5 100644
--- a/test/cluster_integration_test.go
+++ b/pkg/client/cmd/client.go
@@ -1,7 +1,3 @@
-// +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
@@ -19,25 +15,28 @@ See the License for the specific language governing 
permissions and
 limitations under the License.
 */
 
-package test
+package cmd
 
 import (
-       "testing"
-
-       "github.com/apache/camel-k/pkg/install"
-       "github.com/stretchr/testify/assert"
+       "github.com/apache/camel-k/pkg/apis"
+       "sigs.k8s.io/controller-runtime/pkg/client"
+       "sigs.k8s.io/controller-runtime/pkg/client/config"
+       "sigs.k8s.io/controller-runtime/pkg/manager"
 )
 
-func TestInstallation(t *testing.T) {
-       installedCtxCRD, err := install.IsCRDInstalled("IntegrationContext")
-       assert.Nil(t, err)
-       assert.True(t, installedCtxCRD)
-
-       installedCRD, err := install.IsCRDInstalled("Integration")
-       assert.Nil(t, err)
-       assert.True(t, installedCRD)
-
-       installedClusterRole, err := install.IsClusterRoleInstalled()
-       assert.Nil(t, err)
-       assert.True(t, installedClusterRole)
+// NewCmdClient returns a new client that can be used from command line tools
+func NewCmdClient(namespace string) (client.Client, error) {
+       // Get a config to talk to the apiserver
+       cfg, err := config.GetConfig()
+       if err != nil {
+               return nil, err
+       }
+       // Create a new Cmd to provide shared dependencies and start components
+       mgr, err := manager.New(cfg, manager.Options{Namespace: namespace})
+
+       // Setup Scheme for all resources
+       if err := apis.AddToScheme(mgr.GetScheme()); err != nil {
+               return nil, err
+       }
+       return mgr.GetClient(), nil
 }
diff --git a/pkg/client/cmd/root.go b/pkg/client/cmd/root.go
index 0ed2cda..6b2aba9 100644
--- a/pkg/client/cmd/root.go
+++ b/pkg/client/cmd/root.go
@@ -19,14 +19,10 @@ package cmd
 
 import (
        "context"
-       "github.com/apache/camel-k/pkg/apis"
-       "sigs.k8s.io/controller-runtime/pkg/client"
-       "sigs.k8s.io/controller-runtime/pkg/client/config"
-       "sigs.k8s.io/controller-runtime/pkg/manager"
-
        "github.com/apache/camel-k/pkg/util/kubernetes"
        "github.com/pkg/errors"
        "github.com/spf13/cobra"
+       "sigs.k8s.io/controller-runtime/pkg/client"
 )
 
 const kamelCommandLongDescription = `
@@ -92,18 +88,7 @@ func (command *RootCmdOptions) GetCmdClient() 
(client.Client, error) {
        if command._client != nil {
                return command._client, nil
        }
-       // Get a config to talk to the apiserver
-       cfg, err := config.GetConfig()
-       if err != nil {
-               return nil, err
-       }
-       // Create a new Cmd to provide shared dependencies and start components
-       mgr, err := manager.New(cfg, manager.Options{Namespace: 
command.Namespace})
-
-       // Setup Scheme for all resources
-       if err := apis.AddToScheme(mgr.GetScheme()); err != nil {
-               return nil, err
-       }
-       command._client = mgr.GetClient()
-       return command._client, nil
+       var err error
+       command._client, err = NewCmdClient(command.Namespace)
+       return command._client, err
 }
diff --git a/test/build_manager_integration_test.go 
b/test/build_manager_integration_test.go
index b315ec4..b1f3342 100644
--- a/test/build_manager_integration_test.go
+++ b/test/build_manager_integration_test.go
@@ -22,7 +22,6 @@ limitations under the License.
 package test
 
 import (
-       "context"
        "testing"
        "time"
 
@@ -35,9 +34,8 @@ import (
 )
 
 func TestBuildManagerBuild(t *testing.T) {
-       ctx := context.TODO()
        namespace := getTargetNamespace()
-       b := builder.New(ctx, namespace)
+       b := builder.New(testContext, testClient, namespace)
 
        r := builder.Request{
                Meta: v1.ObjectMeta{
@@ -76,9 +74,8 @@ func TestBuildManagerBuild(t *testing.T) {
 }
 
 func TestBuildManagerFailedBuild(t *testing.T) {
-       ctx := context.TODO()
        namespace := getTargetNamespace()
-       b := builder.New(ctx, namespace)
+       b := builder.New(testContext, testClient, namespace)
 
        r := builder.Request{
                Meta: v1.ObjectMeta{
diff --git a/test/cluster_integration_test.go b/test/cluster_integration_test.go
index 28fc854..93897b8 100644
--- a/test/cluster_integration_test.go
+++ b/test/cluster_integration_test.go
@@ -29,15 +29,15 @@ import (
 )
 
 func TestInstallation(t *testing.T) {
-       installedCtxCRD, err := install.IsCRDInstalled("IntegrationContext")
+       installedCtxCRD, err := install.IsCRDInstalled(testContext, testClient, 
"IntegrationContext")
        assert.Nil(t, err)
        assert.True(t, installedCtxCRD)
 
-       installedCRD, err := install.IsCRDInstalled("Integration")
+       installedCRD, err := install.IsCRDInstalled(testContext, testClient, 
"Integration")
        assert.Nil(t, err)
        assert.True(t, installedCRD)
 
-       installedClusterRole, err := install.IsClusterRoleInstalled()
+       installedClusterRole, err := 
install.IsClusterRoleInstalled(testContext, testClient)
        assert.Nil(t, err)
        assert.True(t, installedClusterRole)
 }
diff --git a/test/log_scrape_integration_test.go 
b/test/log_scrape_integration_test.go
index 744d756..70f074d 100644
--- a/test/log_scrape_integration_test.go
+++ b/test/log_scrape_integration_test.go
@@ -23,24 +23,26 @@ package test
 
 import (
        "context"
+       "github.com/apache/camel-k/pkg/util/kubernetes"
        "strings"
        "testing"
        "time"
 
        "github.com/apache/camel-k/pkg/util/log"
-       "sigs.k8s.io/controller-runtime/pkg/client"
        "github.com/stretchr/testify/assert"
 )
 
 func TestPodLogScrape(t *testing.T) {
        token := "Hello Camel K!"
        pod, err := createDummyPod("scraped", "/bin/sh", "-c", "for i in `seq 1 
50`; do echo \""+token+"\" && sleep 2; done")
-       defer sdk.Delete(pod)
+       defer testClient.Delete(testContext, pod)
        assert.Nil(t, err)
 
        ctx, cancel := context.WithDeadline(context.Background(), 
time.Now().Add(30*time.Second))
        defer cancel()
-       scraper := log.NewPodScraper(pod.Namespace, pod.Name)
+       kc, err := kubernetes.AsKubernetesClient(testClient)
+       assert.Nil(t, err)
+       scraper := log.NewPodScraper(kc, pod.Namespace, pod.Name)
        in := scraper.Start(ctx)
 
        res := make(chan bool)
@@ -70,12 +72,14 @@ func TestSelectorLogScrape(t *testing.T) {
        token := "Hello Camel K!"
        replicas := int32(3)
        deployment, err := createDummyDeployment("scraped-deployment", 
&replicas, "scrape", "me", "/bin/sh", "-c", "for i in `seq 1 50`; do echo 
\""+token+"\" && sleep 2; done")
-       defer sdk.Delete(deployment)
+       defer testClient.Delete(testContext, deployment)
        assert.Nil(t, err)
 
        ctx, cancel := context.WithDeadline(context.Background(), 
time.Now().Add(30*time.Second))
        defer cancel()
-       scraper := log.NewSelectorScraper(deployment.Namespace, "scrape=me")
+       kc, err := kubernetes.AsKubernetesClient(testClient)
+       assert.Nil(t, err)
+       scraper := log.NewSelectorScraper(kc, deployment.Namespace, "scrape=me")
        in := scraper.Start(ctx)
 
        res := make(chan string)
diff --git a/test/testing_env.go b/test/testing_env.go
index cbbdada..f8df4c5 100644
--- a/test/testing_env.go
+++ b/test/testing_env.go
@@ -22,27 +22,40 @@ limitations under the License.
 package test
 
 import (
+       "context"
+       "github.com/apache/camel-k/pkg/client/cmd"
+       "k8s.io/apimachinery/pkg/labels"
        "time"
 
        "github.com/apache/camel-k/pkg/install"
        "github.com/apache/camel-k/pkg/util/kubernetes"
-       "sigs.k8s.io/controller-runtime/pkg/client"
        appsv1 "k8s.io/api/apps/v1"
        "k8s.io/api/core/v1"
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+       "sigs.k8s.io/controller-runtime/pkg/client"
 )
 
+var testContext context.Context
+var testClient client.Client
+
 func init() {
        // Initializes the kubernetes client to auto-detect the context
        kubernetes.InitKubeClient("")
 
-       err := install.SetupClusterwideResources()
+       testContext = context.TODO()
+       var err error
+       testClient, err = cmd.NewCmdClient(getTargetNamespace())
+       if err != nil {
+               panic(err)
+       }
+
+       err = install.SetupClusterwideResources(testContext, testClient)
        if err != nil {
                panic(err)
        }
 
-       err = install.Operator(getTargetNamespace())
+       err = install.Operator(testContext, testClient, getTargetNamespace())
        if err != nil {
                panic(err)
        }
@@ -58,8 +71,7 @@ func getTargetNamespace() string {
 
 func createDummyDeployment(name string, replicas *int32, labelKey string, 
labelValue string, command ...string) (*appsv1.Deployment, error) {
        deployment := getDummyDeployment(name, replicas, labelKey, labelValue, 
command...)
-       gracePeriod := int64(0)
-       err := sdk.Delete(&deployment, 
sdk.WithDeleteOptions(&metav1.DeleteOptions{GracePeriodSeconds: &gracePeriod}))
+       err := testClient.Delete(testContext, &deployment, 
client.GracePeriodSeconds(0))
        if err != nil && !k8serrors.IsNotFound(err) {
                return nil, err
        }
@@ -70,10 +82,13 @@ func createDummyDeployment(name string, replicas *int32, 
labelKey string, labelV
                                APIVersion: v1.SchemeGroupVersion.String(),
                        },
                }
-
-               err := sdk.List(getTargetNamespace(), &list, 
sdk.WithListOptions(&metav1.ListOptions{
-                       LabelSelector: labelKey + "=" + labelValue,
-               }))
+               options := client.ListOptions{
+                       Namespace: getTargetNamespace(),
+                       LabelSelector: labels.SelectorFromSet(labels.Set{
+                               labelKey: labelValue,
+                       }),
+               }
+               err := testClient.List(testContext, &options, &list)
                if err != nil {
                        return nil, err
                }
@@ -84,7 +99,7 @@ func createDummyDeployment(name string, replicas *int32, 
labelKey string, labelV
                        break
                }
        }
-       err = sdk.Create(&deployment)
+       err = testClient.Create(testContext, &deployment)
        return &deployment, err
 }
 
@@ -119,13 +134,12 @@ func getDummyDeployment(name string, replicas *int32, 
labelKey string, labelValu
 
 func createDummyPod(name string, command ...string) (*v1.Pod, error) {
        pod := getDummyPod(name, command...)
-       gracePeriod := int64(0)
-       err := sdk.Delete(&pod, 
sdk.WithDeleteOptions(&metav1.DeleteOptions{GracePeriodSeconds: &gracePeriod}))
+       err := testClient.Delete(testContext, &pod, 
client.GracePeriodSeconds(0))
        if err != nil && !k8serrors.IsNotFound(err) {
                return nil, err
        }
        for {
-               err := sdk.Create(&pod)
+               err := testClient.Create(testContext, &pod)
                if err != nil && k8serrors.IsAlreadyExists(err) {
                        time.Sleep(1 * time.Second)
                } else if err != nil {

Reply via email to