From 874dc7394774622fa82621536464c83671523dd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Vav=C5=99=C3=ADk?= Date: Mon, 15 Jan 2024 23:18:30 +0100 Subject: [PATCH] Execute Quarkus JVM mode before native mode --- pkg/trait/quarkus.go | 4 ++++ pkg/trait/quarkus_test.go | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/pkg/trait/quarkus.go b/pkg/trait/quarkus.go index 8027436faf..cb8b216f0b 100644 --- a/pkg/trait/quarkus.go +++ b/pkg/trait/quarkus.go @@ -210,6 +210,10 @@ func (t *quarkusTrait) applyWhileBuildingKit(e *Environment) { kit := t.newIntegrationKit(e, packageType(t.Modes[0])) e.IntegrationKits = append(e.IntegrationKits, *kit) default: + // execute jvm mode before native mode + sort.Slice(t.Modes, func(i, j int) bool { + return t.Modes[i] != traitv1.NativeQuarkusMode + }) for _, md := range t.Modes { kit := t.newIntegrationKit(e, packageType(md)) if kit.Spec.Traits.Quarkus == nil { diff --git a/pkg/trait/quarkus_test.go b/pkg/trait/quarkus_test.go index 4b9312c0be..d924811670 100644 --- a/pkg/trait/quarkus_test.go +++ b/pkg/trait/quarkus_test.go @@ -20,6 +20,8 @@ package trait import ( "testing" + traitv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait" + "github.com/stretchr/testify/assert" v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" @@ -84,6 +86,24 @@ func TestApplyQuarkusTraitAnnotationKitConfiguration(t *testing.T) { } +func TestQuarkusTraitBuildModeOrder(t *testing.T) { + quarkusTrait, environment := createNominalQuarkusTest() + quarkusTrait.Modes = []traitv1.QuarkusMode{traitv1.NativeQuarkusMode, traitv1.JvmQuarkusMode} + environment.Integration.Status.Phase = v1.IntegrationPhaseBuildingKit + environment.Integration.Spec.Sources = []v1.SourceSpec{ + { + Language: v1.LanguageYaml, + }, + } + + err := quarkusTrait.Apply(environment) + assert.Nil(t, err) + assert.Len(t, environment.IntegrationKits, 2) + // assure jvm mode is executed before native mode + assert.Equal(t, environment.IntegrationKits[0].Labels[v1.IntegrationKitLayoutLabel], v1.IntegrationKitLayoutFastJar) + assert.Equal(t, environment.IntegrationKits[1].Labels[v1.IntegrationKitLayoutLabel], v1.IntegrationKitLayoutNativeSources) +} + func createNominalQuarkusTest() (*quarkusTrait, *Environment) { trait, _ := newQuarkusTrait().(*quarkusTrait) client, _ := test.NewFakeClient()