You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2019/01/07 14:25:39 UTC
[camel-k] 02/13: Fix #237: fix integration tests
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...@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 {