Skip to content

Commit

Permalink
testing changes
Browse files Browse the repository at this point in the history
Signed-off-by: ashnamehrotra <ashnamehrotra@gmail.com>
  • Loading branch information
ashnamehrotra committed Jan 9, 2024
1 parent 4e62d5e commit a155ab0
Show file tree
Hide file tree
Showing 7 changed files with 136 additions and 6 deletions.
10 changes: 8 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ REMOVER_IMG ?= ${REMOVER_REPO}:${REMOVER_TAG}
COLLECTOR_REPO ?= ghcr.io/eraser-dev/collector
COLLECTOR_IMG ?= ${COLLECTOR_REPO}:${COLLECTOR_TAG}
VULNERABLE_IMG ?= docker.io/library/alpine:3.7.3
EOL_IMG ?= docker.io/library/alpine:3.1
EOL_IMG ?= docker.io/library/alpine:3.7.3
BUSYBOX_BASE_IMG ?= busybox:1.36.0
NON_VULNERABLE_IMG ?= ghcr.io/eraser-dev/non-vulnerable:latest
E2E_TESTS ?= $(shell find ./test/e2e/tests/ -mindepth 1 -type d)
E2E_TESTS ?= ./test/e2e/tests//collector_runtime_config
API_VERSIONS ?= ./api/v1alpha1,./api/v1,./api/v1alpha2,./api/v1alpha3

HELM_UPGRADE_TEST ?=
Expand Down Expand Up @@ -162,6 +162,11 @@ collector-dummy-img:
test/e2e/test-data
COLLECTOR_IMAGE_DUMMY=$(COLLECTOR_REPO):dummy

custom-node:
docker build -t custom-node:latest \
-f test/e2e/test-data/Dockerfile.customNode \
--build-arg NODE_VERSION=${KUBERNETES_VERSION} test/e2e/test-data
MODIFIED_NODE_IMAGE=custom-node:latest

vulnerable-img:
docker pull $(VULNERABLE_IMG)
Expand Down Expand Up @@ -197,6 +202,7 @@ e2e-test: vulnerable-img eol-img non-vulnerable-img busybox-img collector-dummy-
NON_VULNERABLE_IMAGE=${NON_VULNERABLE_IMG} \
EOL_IMAGE=${EOL_IMG} \
NODE_VERSION=kindest/node:v${KUBERNETES_VERSION} \
MODIFIED_NODE_IMAGE=${MODIFIED_NODE_IMAGE} \
TEST_LOGDIR=${TEST_LOGDIR} \
go test -count=$(TEST_COUNT) -timeout=$(TIMEOUT) $(TESTFLAGS) -tags=e2e -v $$test ; \
done
Expand Down
6 changes: 6 additions & 0 deletions pkg/collector/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ var (
func main() {
flag.Parse()

log.Info("starting collector")

if *enableProfile {
go func() {
server := &http.Server{
Expand All @@ -43,11 +45,15 @@ func main() {
}()
}

log.Info("setting up logger")

if err := logger.Configure(); err != nil {
fmt.Fprintln(os.Stderr, "Error setting up logger:", err)
os.Exit(1)
}

log.Info("new collector client")

client, err := cri.NewCollectorClient(util.CRIPath)
if err != nil {
log.Error(err, "failed to get image client")
Expand Down
4 changes: 4 additions & 0 deletions test/e2e/kind-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,7 @@ nodes:
- role: control-plane
- role: worker
- role: worker
containerdConfigPatches:
- |
[grpc]
address = "/fake/socket/address.sock"
5 changes: 5 additions & 0 deletions test/e2e/test-data/Dockerfile.customNode
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
ARG NODE_VERSION
FROM kindest/node:v${NODE_VERSION}

RUN echo '[grpc]' >> /etc/containerd/config.toml \
&& echo ' address = "/fake/socket/address.sock"' >> /etc/containerd/config.toml
35 changes: 35 additions & 0 deletions test/e2e/tests/collector_runtime_config/eraser_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
//go:build e2e
// +build e2e

package e2e

import (
"context"
"testing"

"github.com/eraser-dev/eraser/test/e2e/util"

"sigs.k8s.io/e2e-framework/pkg/envconf"
"sigs.k8s.io/e2e-framework/pkg/features"
)

func TestCustomRuntimeAddress(t *testing.T) {
collectRuntimeFeat := features.New("Collector pods should run automatically, trigger the scanner, then the eraser pods. Helm test with custom runtime socket address.").
Assess("Vulnerable and EOL images are successfully deleted from all nodes", func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context {
ctxT, cancel := context.WithTimeout(ctx, util.Timeout)
defer cancel()
util.CheckImageRemoved(ctxT, t, util.GetClusterNodes(t), util.Alpine)

return ctx
}).
Assess("Get logs", func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context {
if err := util.GetPodLogs(t); err != nil {
t.Error("error getting eraser pod logs", err)
}

return ctx
}).
Feature()

util.Testenv.Test(t, collectRuntimeFeat)
}
70 changes: 70 additions & 0 deletions test/e2e/tests/collector_runtime_config/main_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
//go:build e2e
// +build e2e

package e2e

import (
"os"
"testing"

eraserv1alpha1 "github.com/eraser-dev/eraser/api/v1alpha1"
"github.com/eraser-dev/eraser/test/e2e/util"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/client-go/kubernetes/scheme"
"sigs.k8s.io/e2e-framework/pkg/env"
"sigs.k8s.io/e2e-framework/pkg/envconf"
"sigs.k8s.io/e2e-framework/pkg/envfuncs"
)

func TestMain(m *testing.M) {
utilruntime.Must(eraserv1alpha1.AddToScheme(scheme.Scheme))

removerImage := util.ParsedImages.RemoverImage
managerImage := util.ParsedImages.ManagerImage
collectorImage := util.ParsedImages.CollectorImage
scannerImage := util.ParsedImages.ScannerImage

util.Testenv = env.NewWithConfig(envconf.New())
// Create KinD Cluster
util.Testenv.Setup(
envfuncs.CreateKindClusterWithConfig(util.KindClusterName, util.NodeVersion, util.KindConfigPath),
envfuncs.CreateNamespace(util.TestNamespace),
util.LoadImageToCluster(util.KindClusterName, util.ManagerImage, util.ManagerTarballPath),
util.LoadImageToCluster(util.KindClusterName, util.RemoverImage, util.RemoverTarballPath),
util.LoadImageToCluster(util.KindClusterName, util.CollectorImage, util.CollectorTarballPath),
util.LoadImageToCluster(util.KindClusterName, util.VulnerableImage, ""),
util.LoadImageToCluster(util.KindClusterName, util.NonVulnerableImage, ""),
util.LoadImageToCluster(util.KindClusterName, util.EOLImage, ""),
util.LoadImageToCluster(util.KindClusterName, util.ScannerImage, util.ScannerTarballPath),
util.LoadImageToCluster(util.KindClusterName, util.RemoverImage, util.RemoverTarballPath),
util.HelmDeployLatestEraserRelease(util.TestNamespace,
"--set", util.ScannerEnable.Set("false"),
"--set", util.CollectorEnable.Set("false"),
"--set", util.RemoverImageRepo.Set(removerImage.Repo),
"--set", util.RemoverImageTag.Set(removerImage.Tag),
"--set", util.ManagerImageRepo.Set(managerImage.Repo),
"--set", util.ManagerImageTag.Set(managerImage.Tag),
),
util.UpgradeEraserHelm(util.TestNamespace,
"--set", util.ScannerEnable.Set("true"),
"--set", util.ScannerImageRepo.Set(scannerImage.Repo),
"--set", util.ScannerImageTag.Set(scannerImage.Tag),
"--set", util.RemoverImageRepo.Set(removerImage.Repo),
"--set", util.RemoverImageTag.Set(removerImage.Tag),
"--set", util.CollectorEnable.Set("true"),
"--set", util.CollectorImageRepo.Set(collectorImage.Repo),
"--set", util.CollectorImageTag.Set(collectorImage.Tag),
"--set", util.ManagerImageRepo.Set(managerImage.Repo),
"--set", util.ManagerImageTag.Set(managerImage.Tag),
"--set", util.CleanupOnSuccessDelay.Set("1m"),
// set deleteFailedImages to FALSE to catch a broken scanner
"--set-json", util.ScannerConfig.Set(util.ScannerConfigNoDeleteFailedJSON),
// set custom runtime socket as runtime address
"--set", util.CustomRuntimeAddress.Set("unix:///fake/socket/address.sock"),
"--set", util.CustomRuntimeName.Set("containerd"),
),
).Finish(
// envfuncs.DestroyKindCluster(util.KindClusterName),
)
os.Exit(util.Testenv.Run(m))
}
12 changes: 8 additions & 4 deletions test/e2e/util/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ const (
FilterNodesType = HelmPath("runtimeConfig.manager.nodeFilter.type")
ScheduleImmediate = HelmPath("runtimeConfig.manager.scheduling.beginImmediately")

CustomRuntimeAddress = HelmPath("runtimeConfig.manager.runtime.name")
CustomRuntimeName = HelmPath("runtimeConfig.manager.runtime.address")

CollectorLabel = "collector"
ManualLabel = "manual"
ImageJobTypeLabelKey = "eraser.sh/type"
Expand Down Expand Up @@ -116,10 +119,11 @@ var (
EraserV1ImagelistPath = filepath.Join(TestDataPath, "eraser_v1_imagelist.yaml")
ImagelistAlpinePath = filepath.Join(TestDataPath, "imagelist_alpine.yaml")

NodeVersion = os.Getenv("NODE_VERSION")
TestNamespace = envconf.RandomName("test-ns", 16)
EraserNamespace = pkgUtil.GetNamespace()
TestLogDir = os.Getenv("TEST_LOGDIR")
NodeVersion = os.Getenv("NODE_VERSION")
ModifiedNodeImage = os.Getenv("MODIFIED_NODE_IMAGE")
TestNamespace = envconf.RandomName("test-ns", 16)
EraserNamespace = pkgUtil.GetNamespace()
TestLogDir = os.Getenv("TEST_LOGDIR")

ParsedImages *Images
Timeout = time.Minute * 5
Expand Down

0 comments on commit a155ab0

Please sign in to comment.