Skip to content

Commit

Permalink
Merge branch 'main' into labels
Browse files Browse the repository at this point in the history
  • Loading branch information
k15r authored Feb 5, 2025
2 parents a173c72 + f6384aa commit 42a379f
Show file tree
Hide file tree
Showing 14 changed files with 221 additions and 62 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: PR Lifecycle
name: PR Upgrade

on:
merge_group:
Expand Down Expand Up @@ -48,7 +48,7 @@ jobs:
- name: Run test on latest tag
shell: bash
run: |
bin/ginkgo run --junit-report=junit-report-latest-version.xml --tags e2e --flake-attempts=5 --label-filter="operational" -v test/e2e
bin/ginkgo run --junit-report=junit-report-latest-version.xml --tags e2e --flake-attempts=5 --label-filter="upgrade || operational" -v test/e2e
- name: Switch back to current revision
uses: actions/checkout@v4
Expand Down Expand Up @@ -82,7 +82,7 @@ jobs:
shell: bash
run: |
make install-tools # delete after the tools via go modules are released
bin/ginkgo run --junit-report=junit-report-current-version.xml --tags e2e --flake-attempts=5 --label-filter="operational" -v test/e2e
bin/ginkgo run --junit-report=junit-report-current-version.xml --tags e2e --flake-attempts=5 --label-filter="upgrade" -v test/e2e
- name: Finalize test
uses: "./.github/template/finalize-test"
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Build the manager binary
FROM europe-docker.pkg.dev/kyma-project/prod/external/library/golang:1.23.5-alpine3.21 AS builder
FROM golang:1.23.5-alpine3.21 AS builder

WORKDIR /telemetry-manager-workspace
# Copy the Go Modules manifests
Expand Down
150 changes: 146 additions & 4 deletions docs/contributor/assets/test-pyramid.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/contributor/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ The roles and responsibilities during the STLC:
| ------------------------------------------------------------------------------------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Unit (located along with the individual source files) | Unit | It tests the individual units of application logic in isolation, focusing on the implementation correctness. |
| [E2E Acceptance](../../test/e2e) | Acceptance (high-level) | It tests the usability scenarios of Telemetry Manager in a cluster. This test suite assesses the functional correctness of Telemetry Controller. |
| E2E Operational | System | It validates the operational aspects of the module (successful module upgrades, deletions, etc.). |
| E2E Upgrade | System | It validates the operational aspects of the module (successful module upgrades, deletions, etc.). |
| [E2E integration](https://github.com/kyma-project/telemetry-manager/issues/261#issuecomment-1647336680) | Integration (high-level) | tests the Telemetry Module integration with 3rd party components and modules (with a focus on contract fulfilment). |

![E2E Test Suites](assets/e2e-test-suites.png)
Expand All @@ -43,7 +43,7 @@ Testing a new functionality encompasses two activities: capturing the acceptance

#### Testing of Existing Functionality

The regression test suite validates the correctness of the product's previously released functionalities using the "retest all" technique. It encompasses the end-to-end and operational test suites.
The regression test suite validates the correctness of the product's previously released functionalities using the "retest all" technique. It encompasses the end-to-end and upgrade test suites.

### Non-Functional Tests

Expand Down
29 changes: 23 additions & 6 deletions docs/user/integration/sample-app/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,30 @@
FROM golang:1.23 AS builder
RUN mkdir /app
ADD . /app
# Build the app binary
FROM golang:1.23.5 AS builder

# Copy the project
WORKDIR /app
RUN CGO_ENABLED=0 GOOS=linux go build -o main ./...

# Copy the Go Modules manifests
COPY go.mod go.mod
COPY go.sum go.sum

# cache deps before building and copying source so that we don't need to re-download as much
# and so that source changes don't invalidate our downloaded layer
RUN go mod download

# Copy the go source
COPY *.go .

# Clean up unused (test) dependencies and build
RUN go mod tidy
RUN CGO_ENABLED=0 GOOS=linux go build -a -o main ./...

# Use the scratch image for a minimal image
FROM scratch
LABEL source=git@github.com:kyma-project/telemetry-manager.git
LABEL org.opencontainers.image.source="https://github.com/kyma-project/telemetry-manager"

COPY --from=builder /app .
# Copy the binary, no further dependencies
COPY --from=builder /app/main .
EXPOSE 8080

CMD ["./main"]
12 changes: 6 additions & 6 deletions test/e2e/logs_basic_v1alpha1_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ var _ = Describe(suite.ID(), Label(suite.LabelLogs), Ordered, func() {
var objs []client.Object
objs = append(objs, kitk8s.NewNamespace(mockNs).K8sObject())

backend := backend.New(mockNs, backend.SignalTypeLogs, backend.WithPersistentHostSecret(suite.IsOperational()))
backend := backend.New(mockNs, backend.SignalTypeLogs, backend.WithPersistentHostSecret(suite.IsUpgrade()))
logProducer := loggen.New(mockNs)
objs = append(objs, backend.K8sObjects()...)
objs = append(objs, logProducer.K8sObject())
Expand All @@ -45,7 +45,7 @@ var _ = Describe(suite.ID(), Label(suite.LabelLogs), Ordered, func() {
),
testutils.HTTPPort(backend.Port()),
)
if suite.IsOperational() {
if suite.IsUpgrade() {
pipelineBuilder.WithLabels(kitk8s.PersistentLabel)
}
logPipeline := pipelineBuilder.Build()
Expand All @@ -63,7 +63,7 @@ var _ = Describe(suite.ID(), Label(suite.LabelLogs), Ordered, func() {
Expect(kitk8s.CreateObjects(ctx, k8sClient, k8sObjects...)).Should(Succeed())
})

It("Should have a running pipeline", Label(suite.LabelOperational), func() {
It("Should have a running pipeline", Label(suite.LabelUpgrade), func() {
assert.LogPipelineHealthy(ctx, k8sClient, pipelineName)
})

Expand All @@ -75,15 +75,15 @@ var _ = Describe(suite.ID(), Label(suite.LabelLogs), Ordered, func() {
assert.LogPipelineUnsupportedMode(ctx, k8sClient, pipelineName, false)
})

It("Should have a log backend running", Label(suite.LabelOperational), func() {
It("Should have a log backend running", Label(suite.LabelUpgrade), func() {
assert.DeploymentReady(ctx, k8sClient, types.NamespacedName{Namespace: mockNs, Name: backend.DefaultName})
})

It("Should have a log producer running", Label(suite.LabelOperational), func() {
It("Should have a log producer running", Label(suite.LabelUpgrade), func() {
assert.DeploymentReady(ctx, k8sClient, types.NamespacedName{Namespace: mockNs, Name: loggen.DefaultName})
})

It("Should have produced logs in the backend", Label(suite.LabelOperational), func() {
It("Should have produced logs in the backend", Label(suite.LabelUpgrade), func() {
assert.LogsDelivered(proxyClient, loggen.DefaultName, backendExportURL)
})
})
Expand Down
4 changes: 2 additions & 2 deletions test/e2e/logs_otlp_output_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ var _ = Describe(suite.ID(), Label(suite.LabelLogs, suite.LabelExperimental), Or
var objs []client.Object
objs = append(objs, kitk8s.NewNamespace(mockNs).K8sObject())

backend := backend.New(mockNs, backend.SignalTypeLogsOtel, backend.WithPersistentHostSecret(suite.IsOperational()))
backend := backend.New(mockNs, backend.SignalTypeLogsOtel, backend.WithPersistentHostSecret(suite.IsUpgrade()))
logProducer := loggen.New(mockNs)
objs = append(objs, backend.K8sObjects()...)
objs = append(objs, logProducer.K8sObject())
Expand All @@ -52,7 +52,7 @@ var _ = Describe(suite.ID(), Label(suite.LabelLogs, suite.LabelExperimental), Or
hostSecretRef.Key,
),
)
if suite.IsOperational() {
if suite.IsUpgrade() {
pipelineBuilder.WithLabels(kitk8s.PersistentLabel)
}
logPipeline := pipelineBuilder.Build()
Expand Down
26 changes: 13 additions & 13 deletions test/e2e/metrics_basic_v1alpha1_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ var _ = Describe(suite.ID(), Label(suite.LabelMetrics), Label(suite.LabelSetB),

objs = append(objs, kitk8s.NewNamespace(mockNs).K8sObject())

backend := backend.New(mockNs, backend.SignalTypeMetrics, backend.WithPersistentHostSecret(suite.IsOperational()))
backend := backend.New(mockNs, backend.SignalTypeMetrics, backend.WithPersistentHostSecret(suite.IsUpgrade()))
objs = append(objs, backend.K8sObjects()...)
backendExportURL = backend.ExportURL(proxyClient)

Expand All @@ -49,7 +49,7 @@ var _ = Describe(suite.ID(), Label(suite.LabelMetrics), Label(suite.LabelSetB),
hostSecretRef.Namespace,
hostSecretRef.Key,
))
if suite.IsOperational() {
if suite.IsUpgrade() {
metricPipelineBuilder.WithLabels(kitk8s.PersistentLabel)
}
metricPipeline := metricPipelineBuilder.Build()
Expand All @@ -70,11 +70,11 @@ var _ = Describe(suite.ID(), Label(suite.LabelMetrics), Label(suite.LabelSetB),
Expect(kitk8s.CreateObjects(ctx, k8sClient, k8sObjects...)).Should(Succeed())
})

It("Should have a running metric gateway deployment", Label(suite.LabelOperational), func() {
It("Should have a running metric gateway deployment", Label(suite.LabelUpgrade), func() {
assert.DeploymentReady(ctx, k8sClient, kitkyma.MetricGatewayName)
})

It("Should reject scaling below minimum", Label(suite.LabelOperational), func() {
It("Should reject scaling below minimum", Label(suite.LabelUpgrade), func() {
var telemetry operatorv1alpha1.Telemetry
err := k8sClient.Get(ctx, kitkyma.TelemetryName, &telemetry)
Expect(err).NotTo(HaveOccurred())
Expand All @@ -93,7 +93,7 @@ var _ = Describe(suite.ID(), Label(suite.LabelMetrics), Label(suite.LabelSetB),
Expect(err).To(HaveOccurred())
})

It("Should scale up metric gateway replicas", Label(suite.LabelOperational), func() {
It("Should scale up metric gateway replicas", Label(suite.LabelUpgrade), func() {
Eventually(func(g Gomega) int32 {
var telemetry operatorv1alpha1.Telemetry
err := k8sClient.Get(ctx, kitkyma.TelemetryName, &telemetry)
Expand All @@ -115,7 +115,7 @@ var _ = Describe(suite.ID(), Label(suite.LabelMetrics), Label(suite.LabelSetB),
}, periodic.EventuallyTimeout, periodic.DefaultInterval).Should(Equal(int32(4)))
})

It("Should have 4 metric gateway replicas after scaling up", Label(suite.LabelOperational), func() {
It("Should have 4 metric gateway replicas after scaling up", Label(suite.LabelUpgrade), func() {
Eventually(func(g Gomega) int32 {
var deployment appsv1.Deployment
err := k8sClient.Get(ctx, kitkyma.MetricGatewayName, &deployment)
Expand All @@ -124,7 +124,7 @@ var _ = Describe(suite.ID(), Label(suite.LabelMetrics), Label(suite.LabelSetB),
}, periodic.EventuallyTimeout, periodic.DefaultInterval).Should(Equal(int32(4)))
})

It("Should scale down metric gateway replicas", Label(suite.LabelOperational), func() {
It("Should scale down metric gateway replicas", Label(suite.LabelUpgrade), func() {
Eventually(func(g Gomega) int32 {
var telemetry operatorv1alpha1.Telemetry
err := k8sClient.Get(ctx, kitkyma.TelemetryName, &telemetry)
Expand All @@ -146,7 +146,7 @@ var _ = Describe(suite.ID(), Label(suite.LabelMetrics), Label(suite.LabelSetB),
}, periodic.EventuallyTimeout, periodic.DefaultInterval).Should(Equal(int32(2)))
})

It("Should have 2 metric gateway replicas after scaling down", Label(suite.LabelOperational), func() {
It("Should have 2 metric gateway replicas after scaling down", Label(suite.LabelUpgrade), func() {
Eventually(func(g Gomega) int32 {
var deployment appsv1.Deployment
err := k8sClient.Get(ctx, kitkyma.MetricGatewayName, &deployment)
Expand All @@ -155,25 +155,25 @@ var _ = Describe(suite.ID(), Label(suite.LabelMetrics), Label(suite.LabelSetB),
}, periodic.EventuallyTimeout, periodic.DefaultInterval).Should(Equal(int32(2)))
})

It("Should have a metrics backend running", Label(suite.LabelOperational), func() {
It("Should have a metrics backend running", Label(suite.LabelUpgrade), func() {
assert.DeploymentReady(ctx, k8sClient, types.NamespacedName{Name: backend.DefaultName, Namespace: mockNs})
assert.ServiceReady(ctx, k8sClient, types.NamespacedName{Name: backend.DefaultName, Namespace: mockNs})
})

It("Should have a running pipeline", Label(suite.LabelOperational), func() {
It("Should have a running pipeline", Label(suite.LabelUpgrade), func() {
assert.MetricPipelineHealthy(ctx, k8sClient, pipelineName)
})

It("Should deliver telemetrygen metrics", Label(suite.LabelOperational), func() {
It("Should deliver telemetrygen metrics", Label(suite.LabelUpgrade), func() {
assert.MetricsFromNamespaceDelivered(proxyClient, backendExportURL, mockNs, telemetrygen.MetricNames)
})

It("Should be able to get metric gateway metrics endpoint", Label(suite.LabelOperational), func() {
It("Should be able to get metric gateway metrics endpoint", Label(suite.LabelUpgrade), func() {
gatewayMetricsURL := proxyClient.ProxyURLForService(kitkyma.MetricGatewayMetricsService.Namespace, kitkyma.MetricGatewayMetricsService.Name, "metrics", ports.Metrics)
assert.EmitsOTelCollectorMetrics(proxyClient, gatewayMetricsURL)
})

It("Should have a working network policy", Label(suite.LabelOperational), func() {
It("Should have a working network policy", Label(suite.LabelUpgrade), func() {
var networkPolicy networkingv1.NetworkPolicy
Expect(k8sClient.Get(ctx, kitkyma.MetricGatewayNetworkPolicy, &networkPolicy)).To(Succeed())

Expand Down
2 changes: 1 addition & 1 deletion test/e2e/metrics_basic_v1beta1_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ var _ = Describe(suite.ID(), Label(suite.LabelMetrics, suite.LabelExperimental),
assert.MetricPipelineHealthy(ctx, k8sClient, pipelineName)
})

It("Should deliver telemetrygen metrics", Label(suite.LabelOperational), func() {
It("Should deliver telemetrygen metrics", Label(suite.LabelUpgrade), func() {
assert.MetricsFromNamespaceDelivered(proxyClient, backendExportURL, mockNs, telemetrygen.MetricNames)
})

Expand Down
4 changes: 2 additions & 2 deletions test/e2e/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ var _ = BeforeSuite(func() {
Expect(err).NotTo(HaveOccurred())
Expect(k8sClient).NotTo(BeNil())

telemetryK8sObject = kitk8s.NewTelemetry("default", "kyma-system").Persistent(suite.IsOperational()).K8sObject()
telemetryK8sObject = kitk8s.NewTelemetry("default", "kyma-system").Persistent(suite.IsUpgrade()).K8sObject()
denyAllNetworkPolicyK8sObject := kitk8s.NewNetworkPolicy("deny-all-ingress-and-egress", kitkyma.SystemNamespaceName).K8sObject()
k8sObjects = []client.Object{
telemetryK8sObject,
Expand All @@ -82,7 +82,7 @@ var _ = BeforeSuite(func() {

var _ = AfterSuite(func() {
Expect(kitk8s.DeleteObjects(ctx, k8sClient, k8sObjects...)).Should(Succeed())
if !suite.IsOperational() {
if !suite.IsUpgrade() {
Eventually(func(g Gomega) {
var validatingWebhookConfiguration admissionregistrationv1.ValidatingWebhookConfiguration
g.Expect(k8sClient.Get(ctx, client.ObjectKey{Name: kitkyma.ValidatingWebhookName}, &validatingWebhookConfiguration)).Should(Succeed())
Expand Down
Loading

0 comments on commit 42a379f

Please sign in to comment.