This is an automated email from the ASF dual-hosted git repository.

pcongiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git


The following commit(s) were added to refs/heads/main by this push:
     new f06b03d28 feat(traits): logging refactoring
f06b03d28 is described below

commit f06b03d28bf6ad0f43103107db5246e1e4a8643b
Author: Pasquale Congiusti <pasquale.congiu...@gmail.com>
AuthorDate: Fri Mar 22 10:45:30 2024 +0100

    feat(traits): logging refactoring
---
 e2e/advanced/platform_traits_test.go |  11 ----
 pkg/trait/logging.go                 |  39 ++++++++++++-
 pkg/trait/logging_test.go            | 110 ++++++++---------------------------
 3 files changed, 61 insertions(+), 99 deletions(-)

diff --git a/e2e/advanced/platform_traits_test.go 
b/e2e/advanced/platform_traits_test.go
index 662d1f4e1..56e9a7689 100644
--- a/e2e/advanced/platform_traits_test.go
+++ b/e2e/advanced/platform_traits_test.go
@@ -59,18 +59,7 @@ func TestTraitOnIntegrationPlatform(t *testing.T) {
                        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))
                        g.Eventually(IntegrationLogs(t, ctx, ns, name), 
TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
-
                        g.Expect(IntegrationPod(t, ctx, ns, 
name)().Spec.Containers[0].Name).To(BeEquivalentTo(containerTestName))
-
-                       found := false
-                       for _, env := range IntegrationPod(t, ctx, ns, 
name)().Spec.Containers[0].Env {
-                               if env.Name == "QUARKUS_LOG_LEVEL" {
-                                       
g.Expect(env.Value).To(BeEquivalentTo("DEBUG"))
-                                       found = true
-                                       break
-                               }
-                       }
-                       g.Expect(found).To(BeTrue(), "Can't find 
QUARKUS_LOG_LEVEL ENV variable")
                        g.Eventually(IntegrationLogs(t, ctx, ns, name), 
TestTimeoutShort).Should(ContainSubstring("DEBUG"))
 
                        g.Expect(Kamel(t, ctx, "delete", "--all", "-n", 
ns).Execute()).To(Succeed())
diff --git a/pkg/trait/logging.go b/pkg/trait/logging.go
index 97b028b85..00d26369c 100644
--- a/pkg/trait/logging.go
+++ b/pkg/trait/logging.go
@@ -61,6 +61,17 @@ func (l loggingTrait) Configure(e *Environment) (bool, 
*TraitCondition, error) {
 }
 
 func (l loggingTrait) Apply(e *Environment) error {
+       if e.CamelCatalog.Runtime.Capabilities["logging"].RuntimeProperties != 
nil {
+               l.setCatalogConfiguration(e)
+       } else {
+               l.setEnvConfiguration(e)
+       }
+
+       return nil
+}
+
+// Deprecated: to be removed in future release in favor of func 
setCatalogConfiguration().
+func (l loggingTrait) setEnvConfiguration(e *Environment) {
        envvar.SetVal(&e.EnvVars, envVarQuarkusLogLevel, l.Level)
 
        if l.Format != "" {
@@ -80,6 +91,32 @@ func (l loggingTrait) Apply(e *Environment) error {
                        envvar.SetVal(&e.EnvVars, envVarQuarkusConsoleColor, 
True)
                }
        }
+}
 
-       return nil
+func (l loggingTrait) setCatalogConfiguration(e *Environment) {
+       if e.ApplicationProperties == nil {
+               e.ApplicationProperties = make(map[string]string)
+       }
+       e.ApplicationProperties["camel.k.logging.level"] = l.Level
+       if l.Format != "" {
+               e.ApplicationProperties["camel.k.logging.format"] = l.Format
+       }
+       if pointer.BoolDeref(l.JSON, false) {
+               e.ApplicationProperties["camel.k.logging.json"] = True
+               if pointer.BoolDeref(l.JSONPrettyPrint, false) {
+                       
e.ApplicationProperties["camel.k.logging.jsonPrettyPrint"] = True
+               }
+       } else {
+               // If the trait is false OR unset, we default to false.
+               e.ApplicationProperties["camel.k.logging.json"] = False
+               if pointer.BoolDeref(l.Color, true) {
+                       e.ApplicationProperties["camel.k.logging.color"] = True
+               }
+       }
+
+       for _, cp := range 
e.CamelCatalog.Runtime.Capabilities["logging"].RuntimeProperties {
+               if CapabilityPropertyKey(cp.Value, e.ApplicationProperties) != 
"" {
+                       e.ApplicationProperties[CapabilityPropertyKey(cp.Key, 
e.ApplicationProperties)] = cp.Value
+               }
+       }
 }
diff --git a/pkg/trait/logging_test.go b/pkg/trait/logging_test.go
index 0947cb132..507cb2b46 100644
--- a/pkg/trait/logging_test.go
+++ b/pkg/trait/logging_test.go
@@ -117,101 +117,37 @@ func TestEmptyLoggingTrait(t *testing.T) {
        assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, env.ExecutedTraits)
 
-       quarkusConsoleColor := false
-       jsonFormat := false
-       jsonPrettyPrint := false
-       logLevelIsInfo := false
-       logFormatIsNotDefault := false
-
-       for _, e := range env.EnvVars {
-               if e.Name == envVarQuarkusConsoleColor {
-                       if e.Value == "true" {
-                               quarkusConsoleColor = true
-                       }
-               }
-
-               if e.Name == envVarQuarkusLogConsoleJSON {
-                       if e.Value == "true" {
-                               jsonFormat = true
-                       }
-               }
-
-               if e.Name == envVarQuarkusLogConsoleJSONPrettyPrint {
-                       if e.Value == "true" {
-                               jsonPrettyPrint = true
-                       }
-               }
-
-               if e.Name == envVarQuarkusLogLevel {
-                       if e.Value == "INFO" {
-                               logLevelIsInfo = true
-                       }
-               }
-
-               if e.Name == envVarQuarkusLogConsoleFormat {
-                       logFormatIsNotDefault = true
-               }
-       }
-
-       assert.True(t, quarkusConsoleColor)
-       assert.True(t, logLevelIsInfo)
-       assert.False(t, jsonFormat)
-       assert.False(t, jsonPrettyPrint)
-       assert.False(t, logFormatIsNotDefault)
-       assert.NotEmpty(t, env.ExecutedTraits)
+       assert.Equal(t, "INFO", 
env.ApplicationProperties["camel.k.logging.level"])
+       assert.Equal(t, "", env.ApplicationProperties["camel.k.logging.format"])
+       assert.Equal(t, "false", 
env.ApplicationProperties["camel.k.logging.json"])
+       assert.Equal(t, "", 
env.ApplicationProperties["camel.k.logging.jsonPrettyPrint"])
+       assert.Equal(t, "true", 
env.ApplicationProperties["camel.k.logging.color"])
+
+       assert.Equal(t, "${camel.k.logging.level}", 
env.ApplicationProperties["quarkus.log.level"])
+       assert.Equal(t, "", 
env.ApplicationProperties["quarkus.log.console.format"])
+       assert.Equal(t, "${camel.k.logging.json}", 
env.ApplicationProperties["quarkus.log.console.json"])
+       assert.Equal(t, "", 
env.ApplicationProperties["quarkus.log.console.json.pretty-print"])
+       assert.Equal(t, "${camel.k.logging.color}", 
env.ApplicationProperties["quarkus.console.color"])
 }
 
 func TestJsonLoggingTrait(t *testing.T) {
        // When running, this log should look like "09:07:00 INFO  (main) 
Profile prod activated."
-       env := createLoggingTestEnv(t, true, true, false, "TRACE", 
"%d{HH:mm:ss} %-5p (%t) %s%e%n")
+       env := createLoggingTestEnv(t, true, true, true, "TRACE", "%d{HH:mm:ss} 
%-5p (%t) %s%e%n")
        conditions, err := NewLoggingTestCatalog().apply(env)
 
        require.NoError(t, err)
        assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, env.ExecutedTraits)
 
-       quarkusConsoleColor := false
-       jsonFormat := true
-       jsonPrettyPrint := false
-       logLevelIsTrace := false
-       logFormatIsNotDefault := false
-
-       for _, e := range env.EnvVars {
-               if e.Name == envVarQuarkusConsoleColor {
-                       if e.Value == "true" {
-                               quarkusConsoleColor = true
-                       }
-               }
-
-               if e.Name == envVarQuarkusLogConsoleJSON {
-                       if e.Value == "true" {
-                               jsonFormat = true
-                       }
-               }
-
-               if e.Name == envVarQuarkusLogConsoleJSONPrettyPrint {
-                       if e.Value == "true" {
-                               jsonPrettyPrint = true
-                       }
-               }
-
-               if e.Name == envVarQuarkusLogLevel {
-                       if e.Value == "TRACE" {
-                               logLevelIsTrace = true
-                       }
-               }
-
-               if e.Name == envVarQuarkusLogConsoleFormat {
-                       if e.Value == "%d{HH:mm:ss} %-5p (%t) %s%e%n" {
-                               logFormatIsNotDefault = true
-                       }
-               }
-       }
-
-       assert.False(t, quarkusConsoleColor)
-       assert.True(t, jsonFormat)
-       assert.False(t, jsonPrettyPrint)
-       assert.True(t, logLevelIsTrace)
-       assert.True(t, logFormatIsNotDefault)
-       assert.NotEmpty(t, env.ExecutedTraits)
+       assert.Equal(t, "TRACE", 
env.ApplicationProperties["camel.k.logging.level"])
+       assert.Equal(t, "%d{HH:mm:ss} %-5p (%t) %s%e%n", 
env.ApplicationProperties["camel.k.logging.format"])
+       assert.Equal(t, "true", 
env.ApplicationProperties["camel.k.logging.json"])
+       assert.Equal(t, "true", 
env.ApplicationProperties["camel.k.logging.jsonPrettyPrint"])
+       assert.Equal(t, "", env.ApplicationProperties["camel.k.logging.color"])
+
+       assert.Equal(t, "${camel.k.logging.level}", 
env.ApplicationProperties["quarkus.log.level"])
+       assert.Equal(t, "${camel.k.logging.format}", 
env.ApplicationProperties["quarkus.log.console.format"])
+       assert.Equal(t, "${camel.k.logging.json}", 
env.ApplicationProperties["quarkus.log.console.json"])
+       assert.Equal(t, "${camel.k.logging.jsonPrettyPrint}", 
env.ApplicationProperties["quarkus.log.console.json.pretty-print"])
+       assert.Equal(t, "", env.ApplicationProperties["quarkus.console.color"])
 }

Reply via email to