From 6b53feb856ed74c24c770399dba002ac269666a2 Mon Sep 17 00:00:00 2001 From: Pasquale Congiusti Date: Wed, 26 Jun 2024 13:25:17 +0200 Subject: [PATCH] feat: dependencies default order strategy --- e2e/common/misc/rest_test.go | 2 +- e2e/common/traits/builder_test.go | 16 ++++++++++++---- pkg/apis/camel/v1/trait/builder.go | 2 +- pkg/platform/defaults.go | 2 +- pkg/platform/defaults_test.go | 2 +- pkg/trait/builder_test.go | 10 ++++++++++ 6 files changed, 26 insertions(+), 8 deletions(-) diff --git a/e2e/common/misc/rest_test.go b/e2e/common/misc/rest_test.go index b5e285884e..e7a105462a 100644 --- a/e2e/common/misc/rest_test.go +++ b/e2e/common/misc/rest_test.go @@ -62,7 +62,7 @@ func TestRunRest(t *testing.T) { name := RandomizedSuffixName("Peter") route := Route(t, ctx, ns, "rest-consumer") g.Eventually(route, TestTimeoutShort).ShouldNot(BeNil()) - g.Eventually(RouteStatus(t, ctx, ns, "rest-consumer"), TestTimeoutMedium).Should(Equal("True")) + g.Eventually(RouteStatus(t, ctx, ns, "rest-consumer")).Should(Equal("True")) url := fmt.Sprintf("http://%s/customers/%s", route().Spec.Host, name) g.Eventually(httpRequest(url), TestTimeoutMedium).Should(Equal(fmt.Sprintf("%s Doe", name))) g.Eventually(IntegrationLogs(t, ctx, ns, "rest-consumer"), TestTimeoutShort).Should(ContainSubstring(fmt.Sprintf("get %s", name))) diff --git a/e2e/common/traits/builder_test.go b/e2e/common/traits/builder_test.go index 02d96fb165..d2aab88592 100644 --- a/e2e/common/traits/builder_test.go +++ b/e2e/common/traits/builder_test.go @@ -40,7 +40,11 @@ func TestBuilderTrait(t *testing.T) { WithNewTestNamespace(t, func(ctx context.Context, g *WithT, ns string) { t.Run("Run build strategy routine", func(t *testing.T) { name := RandomizedSuffixName("java") - g.Expect(KamelRun(t, ctx, ns, "files/Java.java", "--name", name, "-t", "builder.order-strategy=sequential", "-t", "builder.strategy=routine").Execute()).To(Succeed()) + g.Expect(KamelRun(t, ctx, ns, "files/Java.java", "--name", name, + // This is required in order to avoid reusing a Kit already existing (which is the default behavior) + "--build-property", "strategy=sequential", + "-t", "builder.order-strategy=sequential", + ).Execute()).To(Succeed()) g.Eventually(IntegrationPodPhase(t, ctx, ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning)) g.Eventually(IntegrationConditionStatus(t, ctx, ns, name, v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue)) @@ -66,7 +70,8 @@ func TestBuilderTrait(t *testing.T) { "--name", name, // This is required in order to avoid reusing a Kit already existing (which is the default behavior) "--build-property", "strategy=dependencies", - "-t", "builder.order-strategy=dependencies").Execute()).To(Succeed()) + "-t", "builder.order-strategy=dependencies", + ).Execute()).To(Succeed()) g.Eventually(IntegrationPodPhase(t, ctx, ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning)) g.Eventually(IntegrationConditionStatus(t, ctx, ns, name, v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue)) @@ -133,7 +138,6 @@ func TestBuilderTrait(t *testing.T) { builderKitName := fmt.Sprintf("camel-k-%s-builder", integrationKitName) g.Eventually(BuildConfig(t, ctx, integrationKitNamespace, integrationKitName)().Strategy, TestTimeoutShort).Should(Equal(v1.BuildStrategyPod)) - g.Eventually(BuildConfig(t, ctx, integrationKitNamespace, integrationKitName)().OrderStrategy, TestTimeoutShort).Should(Equal(v1.BuildOrderStrategySequential)) g.Eventually(BuildConfig(t, ctx, integrationKitNamespace, integrationKitName)().RequestCPU, TestTimeoutShort).Should(Equal("500m")) g.Eventually(BuildConfig(t, ctx, integrationKitNamespace, integrationKitName)().LimitCPU, TestTimeoutShort).Should(Equal("1000m")) g.Eventually(BuildConfig(t, ctx, integrationKitNamespace, integrationKitName)().RequestMemory, TestTimeoutShort).Should(Equal("2Gi")) @@ -150,7 +154,11 @@ func TestBuilderTrait(t *testing.T) { t.Run("Run custom pipeline task", func(t *testing.T) { name := RandomizedSuffixName("java-pipeline") - g.Expect(KamelRun(t, ctx, ns, "files/Java.java", "--name", name, "-t", "builder.tasks=custom1;alpine;tree", "-t", "builder.tasks=custom2;alpine;cat maven/pom.xml", "-t", "builder.strategy=pod").Execute()).To(Succeed()) + g.Expect(KamelRun(t, ctx, ns, "files/Java.java", "--name", name, + "-t", "builder.tasks=custom1;alpine;tree", + "-t", "builder.tasks=custom2;alpine;cat maven/pom.xml", + "-t", "builder.strategy=pod", + ).Execute()).To(Succeed()) g.Eventually(IntegrationPodPhase(t, ctx, ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning)) g.Eventually(IntegrationConditionStatus(t, ctx, ns, name, v1.IntegrationConditionReady), TestTimeoutLong).Should(Equal(corev1.ConditionTrue)) diff --git a/pkg/apis/camel/v1/trait/builder.go b/pkg/apis/camel/v1/trait/builder.go index 12054f95d4..62b04d4fa5 100644 --- a/pkg/apis/camel/v1/trait/builder.go +++ b/pkg/apis/camel/v1/trait/builder.go @@ -36,7 +36,7 @@ type BuilderTrait struct { BaseImage string `property:"base-image" json:"baseImage,omitempty"` // Use the incremental image build option, to reuse existing containers (default `true`) IncrementalImageBuild *bool `property:"incremental-image-build" json:"incrementalImageBuild,omitempty"` - // The build order strategy to use, either `dependencies`, `fifo` or `sequential` (default `sequential`) + // The build order strategy to use, either `dependencies`, `fifo` or `sequential` (default is the platform default) // +kubebuilder:validation:Enum=dependencies;fifo;sequential OrderStrategy string `property:"order-strategy" json:"orderStrategy,omitempty"` // When using `pod` strategy, the minimum amount of CPU required by the pod builder. diff --git a/pkg/platform/defaults.go b/pkg/platform/defaults.go index f4e7cd218e..2814d72eb5 100644 --- a/pkg/platform/defaults.go +++ b/pkg/platform/defaults.go @@ -90,7 +90,7 @@ func ConfigureDefaults(ctx context.Context, c client.Client, p *v1.IntegrationPl } if p.Status.Build.BuildConfiguration.OrderStrategy == "" { - p.Status.Build.BuildConfiguration.OrderStrategy = v1.BuildOrderStrategySequential + p.Status.Build.BuildConfiguration.OrderStrategy = v1.BuildOrderStrategyDependencies log.Debugf("Integration Platform %s [%s]: setting build order strategy %s", p.Name, p.Namespace, p.Status.Build.BuildConfiguration.OrderStrategy) } diff --git a/pkg/platform/defaults_test.go b/pkg/platform/defaults_test.go index 36d366dd38..4a5c7ee5d2 100644 --- a/pkg/platform/defaults_test.go +++ b/pkg/platform/defaults_test.go @@ -49,7 +49,7 @@ func TestIntegrationPlatformDefaults(t *testing.T) { assert.Equal(t, v1.IntegrationPlatformClusterKubernetes, ip.Status.Cluster) assert.Equal(t, v1.TraitProfile(""), ip.Status.Profile) assert.Equal(t, v1.BuildStrategyRoutine, ip.Status.Build.BuildConfiguration.Strategy) - assert.Equal(t, v1.BuildOrderStrategySequential, ip.Status.Build.BuildConfiguration.OrderStrategy) + assert.Equal(t, v1.BuildOrderStrategyDependencies, ip.Status.Build.BuildConfiguration.OrderStrategy) assert.Equal(t, defaults.BaseImage(), ip.Status.Build.BaseImage) assert.Equal(t, defaults.LocalRepository, ip.Status.Build.Maven.LocalRepository) assert.Equal(t, int32(3), ip.Status.Build.MaxRunningBuilds) // default for build strategy routine diff --git a/pkg/trait/builder_test.go b/pkg/trait/builder_test.go index fc6b18b56b..3ea5de9f03 100644 --- a/pkg/trait/builder_test.go +++ b/pkg/trait/builder_test.go @@ -684,3 +684,13 @@ func TestBuilderTraitPlatforms(t *testing.T) { assert.Equal(t, []string{"linux/amd64", "linux/arm64"}, env.Pipeline[2].Jib.Configuration.ImagePlatforms) } + +func TestBuilderTraitOrderStrategy(t *testing.T) { + env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyJib, v1.BuildStrategyRoutine) + builderTrait := createNominalBuilderTraitTest() + builderTrait.OrderStrategy = "fifo" + err := builderTrait.Apply(env) + require.NoError(t, err) + + assert.Equal(t, v1.BuildOrderStrategyFIFO, env.Pipeline[0].Builder.Configuration.OrderStrategy) +}