Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue-Fix-#2665 feat: added implementation for explicit path for readiness and liveness Probes #3036

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

l3002
Copy link
Contributor

@l3002 l3002 commented May 9, 2024

Description

Fixes #2665

Added implementation for creating explicit path creation for readiness and liveness probes when management.health.probes.enabled is true.

Modified SpringBootHealthCheckEnricher to check if the suffix needs to be concatenated to the paths or not.

Created unit tests for the added implementation and verified if everything was working as expected.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • Feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change
  • Chore (non-breaking change which doesn't affect codebase;
    test, version modification, documentation, etc.)

Checklist

  • I have read the contributing guidelines
  • I signed-off my commit with a user that has signed the Eclipse Contributor Agreement
  • My code follows the style guidelines of this project
  • I Keep It Small and Simple: The smaller the PR is, the easier it is to review and have it merged
  • I use conventional commits in my commit messages
  • I have performed a self-review of my code
  • I Added CHANGELOG entry
  • I have updated the documentation accordingly
  • No new bugs, code smells, etc. in SonarCloud report
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • I tested my code in Kubernetes
  • I tested my code in OpenShift

…ss probes

Signed-off-by: l3002 <tanmaymathpal4545@gmail.com>
@manusa
Copy link
Member

manusa commented May 9, 2024

Eclipse JKube CI Report

Started new GH workflow run for #3036 (2024-05-09T12:35:48Z)

⚙️ JKube E2E Tests (9017189212)

Test results

✔️ Test reports (Minikube v1.28.1-dockerfile)
[✓] DockerFileITCase - k8sBuild - k8s:build, should create image inferring contextDir from provided dockerFile configuration
[✓] ContextDirAndCustomAssemblyITCase - k8sBuild - k8s:build, should create image with docker file and files read from provided contextDir configuration (within Dockerfile, files are read from configured Assembly properties)
[✓] ContextDirITCase - k8sBuild - k8s:build, should create image with docker file and files read from provided contextDir configuration
[✓] ContextDirAndDockerFileITCase - k8sBuild - k8s:build, should create image for configured special dockerFile with files added from provided contextDir
[✓] SimpleK8sITCase - k8sBuild - k8s:build, should create image
[✓] SimpleK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] SimpleK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] SimpleK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] All tests (1) passed successfully!!!

✔️ Test reports (Minikube v1.28.1-quarkus)
[✓] QuarkusK8sITCase - k8sBuild - k8s:build, should create image
[✓] QuarkusK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] QuarkusK8sITCase - k8sHelm - k8s:helm, should create Helm charts
[✓] QuarkusK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] QuarkusK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] All tests (5) passed successfully!!!

✔️ Test reports (Minikube v1.25.13-dockerfile)
[✓] DockerFileITCase - k8sBuild - k8s:build, should create image inferring contextDir from provided dockerFile configuration
[✓] ContextDirAndCustomAssemblyITCase - k8sBuild - k8s:build, should create image with docker file and files read from provided contextDir configuration (within Dockerfile, files are read from configured Assembly properties)
[✓] ContextDirAndDockerFileITCase - k8sBuild - k8s:build, should create image for configured special dockerFile with files added from provided contextDir
[✓] ContextDirITCase - k8sBuild - k8s:build, should create image with docker file and files read from provided contextDir configuration
[✓] SimpleK8sITCase - k8sBuild - k8s:build, should create image
[✓] SimpleK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] SimpleK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] SimpleK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] All tests (1) passed successfully!!!

✔️ Test reports (Minikube v1.25.13-quarkus)
[✓] QuarkusK8sITCase - k8sBuild - k8s:build, should create image
[✓] QuarkusK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] QuarkusK8sITCase - k8sHelm - k8s:helm, should create Helm charts
[✓] QuarkusK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] QuarkusK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] All tests (5) passed successfully!!!

✔️ Test reports (Minikube v1.25.13-quarkus-native)
[✓] QuarkusNativeK8sITCase - k8sBuild - k8s:build, should create image
[✓] QuarkusNativeK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] QuarkusNativeK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] QuarkusNativeK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] All tests (4) passed successfully!!!

✔️ Test reports (Minikube v1.28.1-quarkus-native)
[✓] QuarkusNativeK8sITCase - k8sBuild - k8s:build, should create image
[✓] QuarkusNativeK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] QuarkusNativeK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] QuarkusNativeK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] All tests (4) passed successfully!!!

✔️ Test reports (OpenShift v3.10.0-quarkus)
[✓] QuarkusOcTraceEnabledITCase - ocBuild - oc:build, with org.slf4j.simpleLogger.defaultLogLevel=trace, should create image and print trace logs
[✓] QuarkusOcTraceEnabledITCase - ocResource - oc:resource, should create manifests
[✓] QuarkusOcITCase - ocBuild - oc:build, should create image
[✓] QuarkusOcITCase - ocResource - oc:resource, should create manifests
[✓] QuarkusOcTraceEnabledITCase - ocApply - oc:apply, with org.slf4j.simpleLogger.defaultLogLevel=trace, should deploy pod and service and print trace logs
[✓] QuarkusOcITCase - ocHelm - oc:helm, should create Helm charts
[✓] QuarkusOcTraceEnabledITCase - ocLog - oc:log, with org.slf4j.simpleLogger.defaultLogLevel=trace, should retrieve log and print trace logs
[✓] QuarkusOcITCase - ocApply - oc:apply, should deploy pod and service
[✓] QuarkusOcTraceEnabledITCase - ocUndeploy - oc:undeploy, with org.slf4j.simpleLogger.defaultLogLevel=trace, should delete all applied resources and print trace logs
[✓] QuarkusOcITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] All tests (5) passed successfully!!!

✔️ Test reports (Windows)
[✓] WindowsITCase - k8sBuild - k8s:build, should create image
[✓] WindowsITCase - k8sPush - k8s:push, should push image to remote registry
[✓] WindowsITCase - k8sResource - k8s:resource, should create manifests
[✓] WindowsITCase - ocResource - oc:resource, should create manifests
[✓] WindowsITCase - k8sHelm - k8s:helm, should create Helm charts
[✓] WindowsITCase - ocHelm - oc:helm, should create Helm charts
[✓] All tests (6) passed successfully!!!

✔️ Test reports (Minikube v1.25.13-webapp)
[✓] JettyK8sITCase - k8sBuild - k8s:build, should create image
[✓] TomcatJakartaeeK8sITCase - k8sBuild - k8s:build should display the Tomcat webapps dir hint by default
[✓] TomcatJakartaeeWithWebappsDirK8sITCase - k8sBuild - k8s:build, with jkube.generator.webapp.env should not display the Tomcat webapps dir hint
[✓] ZeroConfigK8sITCase - k8sBuild - k8s:build, should create image
[✓] TomcatJavaeeK8sITCase - k8sBuild - k8s:build should display the Tomcat webapps dir hint by default
[✓] TomcatJavaeeWithWebappsDirK8sITCase - k8sBuild - k8s:build, with jkube.generator.webapp.env should not display the Tomcat webapps dir hint
[✓] WildFlyK8sITCase - k8sBuild - k8s:build, should create image
[✓] JettyK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] TomcatJakartaeeK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] TomcatJavaeeWithWebappsDirK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] TomcatJavaeeK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] TomcatJakartaeeWithWebappsDirK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] ZeroConfigK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] WildFlyK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] JettyK8sWatchBothITCase - k8sWatchBuildAndRun - k8s:watch, with mode=both, SHOULD hot deploy the application
[✓] JettyK8sWatchNoneITCase - k8sWatchNone - k8s:watch, with mode=none, SHOULD NOT hot deploy the application
[✓] JettyK8sWatchCopyITCase - k8sWatchCopy - k8s:watch, with mode=copy, SHOULD hot deploy the application
[✓] JettyK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] JettyK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] TomcatJakartaeeK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] JettyK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] TomcatJakartaeeK8sITCase - k8sLog - k8s:log, should retrieve log with migration notice
[✓] TomcatJakartaeeK8sITCase - testJakartaeeNodePortResponse - The JakartaEE servlet, exposed as a NodePort Service, should return a string and contain `Hello World`
[✓] TomcatJakartaeeK8sITCase - k8sUndeployJakartaEE - k8s:undeploy, should delete all applied resources
[✓] TomcatJavaeeWithWebappsDirK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] TomcatJavaeeK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] TomcatJakartaeeWithWebappsDirK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] ZeroConfigK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] ZeroConfigK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] WildFlyK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] ZeroConfigK8sITCase - testNodePortResponse - Service as NodePort response should return String
[✓] TomcatJavaeeWithWebappsDirK8sITCase - k8sLogWithoutJavaeeMigrationNotice - k8s:log, should retrieve log without JavaEE migration notice
[✓] WildFlyK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] TomcatJavaeeWithWebappsDirK8sITCase - testJavaEENodePortResponseError - JavaEE Service as NodePort response should return 500 and java.lang.NoClassDefFoundError message
[✓] ZeroConfigK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] WildFlyK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] TomcatJavaeeWithWebappsDirK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] TomcatJavaeeK8sITCase - k8sLog - k8s:log, should retrieve log with migration notice
[✓] TomcatJavaeeK8sITCase - testJavaeeNodePortResponse - The JavaEE servlet, exposed as a NodePort Service, should return a string and contain `Hello World`
[✓] TomcatJakartaeeWithWebappsDirK8sITCase - testJakartaEENodePortResponse - JakartaEE Service as NodePort response should return String
[✓] TomcatJakartaeeWithWebappsDirK8sITCase - k8sLogWithoutJavaeeMigrationNotice - k8s:log, should retrieve log without JavaEE migration notice
[✓] TomcatJavaeeK8sITCase - k8sUndeployJavaEE - k8s:undeploy, should delete all applied resources
[✓] TomcatJakartaeeWithWebappsDirK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] All tests (5) passed successfully!!!

✔️ Test reports (Minikube v1.28.1-springboot)
[✓] HelmConfigITCase - k8sResource - k8s:resource, no specified profile, should create default resource manifests
[✓] CompleteDockerITCase - k8sBuild - k8s:build, should create image and assembly files
[✓] ZeroConfigFatJarK8sITCase - k8sBuild - k8s:build, should create fat jar image
[✓] CustomResourceK8sITCase - k8sBuild - k8s:build, should create image
[✓] ZeroConfigK8sITCase - k8sBuild - k8s:build, should create layered jar image
[✓] CompleteK8sITCase - k8sBuild - k8s:build, should create image
[✓] CompleteK8sJibITCase - k8sBuild - k8s:build, should create JIB image
[✓] HelmConfigITCase - k8sHelm - k8s:helm, should create Helm charts
[✓] CompleteDockerITCase - k8sResource - k8s:resource, should create manifests in specific directory
[✓] ZeroConfigFatJarK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] HelmConfigITCase - k8sHelmPush - k8s:helm-push, should push the charts
[✓] CompleteK8sJibITCase - k8sResource - k8s:resource, should create manifests
[✓] CustomResourceK8sITCase - k8sPush - k8s:push, should push image to remote registry
[✓] ZeroConfigK8sITCase - k8sPush - k8s:push, should push image to remote registry
[✓] CompleteDockerITCase - k8sApply - k8s:apply, should deploy pod and service form manifests in specific directory
[✓] CompleteK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] CompleteK8sJibITCase - k8sPush - k8s:push, should push image to remote registry
[✓] CompleteDockerITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] ZeroConfigK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] ZeroConfigFatJarK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] CustomResourceK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] ZeroConfigK8sITCase - k8sHelm - k8s:helm, should create Helm charts
[✓] ZeroConfigFatJarK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] CompleteK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] ZeroConfigK8sGradleITCase - k8sBuild - k8sBuild, should create image
[✓] ZeroConfigFatJarK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] CompleteK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] ZeroConfigK8sGradleITCase - k8sResource - k8sResource, should create manifests
[✓] ZeroConfigK8sGradleITCase - k8sHelm - k8sHelm, should create Helm charts
[✓] CompleteK8sJibITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] CompleteK8sJibITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] CustomResourceK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] ZeroConfigK8sGradleITCase - k8sPush - k8sPush, should push image to remote registry
[✓] CustomResourceK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] ZeroConfigK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] CustomResourceK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] ZeroConfigK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] ZeroConfigK8sGradleITCase - k8sApply - k8sApply, should deploy pod and service
[✓] ZeroConfigK8sGradleITCase - k8sLog - k8sLog, should retrieve log
[✓] ZeroConfigK8sGradleITCase - k8sUndeploy - k8sUndeploy, should delete all applied resources
[✓] ZeroConfigK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] All tests (6) passed successfully!!!

✔️ Test reports (Minikube v1.25.13-springboot)
[✓] HelmConfigITCase - k8sResource - k8s:resource, no specified profile, should create default resource manifests
[✓] CompleteDockerITCase - k8sBuild - k8s:build, should create image and assembly files
[✓] ZeroConfigFatJarK8sITCase - k8sBuild - k8s:build, should create fat jar image
[✓] ZeroConfigK8sITCase - k8sBuild - k8s:build, should create layered jar image
[✓] CustomResourceK8sITCase - k8sBuild - k8s:build, should create image
[✓] CompleteK8sITCase - k8sBuild - k8s:build, should create image
[✓] CompleteK8sJibITCase - k8sBuild - k8s:build, should create JIB image
[✓] HelmConfigITCase - k8sHelm - k8s:helm, should create Helm charts
[✓] CompleteDockerITCase - k8sResource - k8s:resource, should create manifests in specific directory
[✓] ZeroConfigFatJarK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] HelmConfigITCase - k8sHelmPush - k8s:helm-push, should push the charts
[✓] CompleteK8sJibITCase - k8sResource - k8s:resource, should create manifests
[✓] ZeroConfigK8sITCase - k8sPush - k8s:push, should push image to remote registry
[✓] CompleteDockerITCase - k8sApply - k8s:apply, should deploy pod and service form manifests in specific directory
[✓] CustomResourceK8sITCase - k8sPush - k8s:push, should push image to remote registry
[✓] CompleteK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] CompleteK8sJibITCase - k8sPush - k8s:push, should push image to remote registry
[✓] CompleteDockerITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] ZeroConfigK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] ZeroConfigFatJarK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] CustomResourceK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] ZeroConfigK8sITCase - k8sHelm - k8s:helm, should create Helm charts
[✓] ZeroConfigFatJarK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] ZeroConfigK8sGradleITCase - k8sBuild - k8sBuild, should create image
[✓] CompleteK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] ZeroConfigFatJarK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] ZeroConfigK8sGradleITCase - k8sResource - k8sResource, should create manifests
[✓] CompleteK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] ZeroConfigK8sGradleITCase - k8sHelm - k8sHelm, should create Helm charts
[✓] CompleteK8sJibITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] CompleteK8sJibITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] CustomResourceK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] ZeroConfigK8sGradleITCase - k8sPush - k8sPush, should push image to remote registry
[✓] CustomResourceK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] ZeroConfigK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] CustomResourceK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] ZeroConfigK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] ZeroConfigK8sGradleITCase - k8sApply - k8sApply, should deploy pod and service
[✓] ZeroConfigK8sGradleITCase - k8sLog - k8sLog, should retrieve log
[✓] ZeroConfigK8sGradleITCase - k8sUndeploy - k8sUndeploy, should delete all applied resources
[✓] ZeroConfigK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] All tests (6) passed successfully!!!

✔️ Test reports (Minikube v1.28.1-webapp)
[✓] JettyK8sITCase - k8sBuild - k8s:build, should create image
[✓] TomcatJakartaeeK8sITCase - k8sBuild - k8s:build should display the Tomcat webapps dir hint by default
[✓] TomcatJavaeeWithWebappsDirK8sITCase - k8sBuild - k8s:build, with jkube.generator.webapp.env should not display the Tomcat webapps dir hint
[✓] TomcatJavaeeK8sITCase - k8sBuild - k8s:build should display the Tomcat webapps dir hint by default
[✓] ZeroConfigK8sITCase - k8sBuild - k8s:build, should create image
[✓] TomcatJakartaeeWithWebappsDirK8sITCase - k8sBuild - k8s:build, with jkube.generator.webapp.env should not display the Tomcat webapps dir hint
[✓] JettyK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] WildFlyK8sITCase - k8sBuild - k8s:build, should create image
[✓] TomcatJavaeeK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] TomcatJakartaeeK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] TomcatJakartaeeWithWebappsDirK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] TomcatJavaeeWithWebappsDirK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] ZeroConfigK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] WildFlyK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] JettyK8sWatchNoneITCase - k8sWatchNone - k8s:watch, with mode=none, SHOULD NOT hot deploy the application
[✓] JettyK8sWatchCopyITCase - k8sWatchCopy - k8s:watch, with mode=copy, SHOULD hot deploy the application
[✓] JettyK8sWatchBothITCase - k8sWatchBuildAndRun - k8s:watch, with mode=both, SHOULD hot deploy the application
[✓] JettyK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] JettyK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] TomcatJavaeeK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] JettyK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] TomcatJavaeeK8sITCase - k8sLog - k8s:log, should retrieve log with migration notice
[✓] TomcatJakartaeeK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] TomcatJakartaeeK8sITCase - k8sLog - k8s:log, should retrieve log with migration notice
[✓] TomcatJakartaeeK8sITCase - testJakartaeeNodePortResponse - The JakartaEE servlet, exposed as a NodePort Service, should return a string and contain `Hello World`
[✓] TomcatJakartaeeK8sITCase - k8sUndeployJakartaEE - k8s:undeploy, should delete all applied resources
[✓] TomcatJakartaeeWithWebappsDirK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] TomcatJakartaeeWithWebappsDirK8sITCase - testJakartaEENodePortResponse - JakartaEE Service as NodePort response should return String
[✓] TomcatJakartaeeWithWebappsDirK8sITCase - k8sLogWithoutJavaeeMigrationNotice - k8s:log, should retrieve log without JavaEE migration notice
[✓] TomcatJakartaeeWithWebappsDirK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] TomcatJavaeeWithWebappsDirK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] ZeroConfigK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] ZeroConfigK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] WildFlyK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] TomcatJavaeeK8sITCase - testJavaeeNodePortResponse - The JavaEE servlet, exposed as a NodePort Service, should return a string and contain `Hello World`
[✓] ZeroConfigK8sITCase - testNodePortResponse - Service as NodePort response should return String
[✓] WildFlyK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] TomcatJavaeeK8sITCase - k8sUndeployJavaEE - k8s:undeploy, should delete all applied resources
[✓] TomcatJavaeeWithWebappsDirK8sITCase - k8sLogWithoutJavaeeMigrationNotice - k8s:log, should retrieve log without JavaEE migration notice
[✓] TomcatJavaeeWithWebappsDirK8sITCase - testJavaEENodePortResponseError - JavaEE Service as NodePort response should return 500 and java.lang.NoClassDefFoundError message
[✓] ZeroConfigK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] WildFlyK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] TomcatJavaeeWithWebappsDirK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] All tests (5) passed successfully!!!

✔️ Test reports (Minikube v1.28.1-other)
[✓] VertxK8sITCase - k8sBuild - k8s:build, should create image
[✓] KarafK8sITCase - k8sBuild - k8s:build, should create image
[✓] ThorntailK8sITCase - k8sBuild - k8s:build, should create image
[✓] OpenLibertyK8sITCase - k8sBuild - k8s:build, should create image
[✓] WildflyJarK8sITCase - k8sBuild - k8s:build, should create image
[✓] VertxK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] KarafK8sITCase - k8sResource - k8s:resource, should create manifest for Kubernetes
[✓] ThorntailK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] OpenLibertyK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] WildflyJarK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] VertxK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] VertxK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] DslK8sGradleITCase - k8sBuild - k8sBuild, should create image
[✓] KarafK8sITCase - K8sApply - k8s:apply, should apply manifests on k8s cluster
[✓] DslK8sGradleITCase - k8sResource - k8sResource, should create manifests
[✓] VertxK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] DslK8sGradleITCase - k8sHelm - k8sHelm, should create Helm charts
[✓] KarafK8sITCase - k8sLog - k8s:log
[✓] KarafK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] ThorntailK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] ThorntailK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] OpenLibertyK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] OpenLibertyK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] WildflyJarK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] OpenLibertyK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] DslK8sGradleITCase - k8sApply - k8sApply, should deploy pod and service
[✓] DslK8sGradleITCase - k8sLog - k8sLog, should retrieve log
[✓] DslK8sGradleITCase - k8sUndeploy - k8sUndeploy, should delete all applied resources
[✓] WildflyJarK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] All tests (5) passed successfully!!!

✔️ Test reports (Minikube v1.25.13-other)
[✓] KarafK8sITCase - k8sBuild - k8s:build, should create image
[✓] VertxK8sITCase - k8sBuild - k8s:build, should create image
[✓] ThorntailK8sITCase - k8sBuild - k8s:build, should create image
[✓] OpenLibertyK8sITCase - k8sBuild - k8s:build, should create image
[✓] WildflyJarK8sITCase - k8sBuild - k8s:build, should create image
[✓] KarafK8sITCase - k8sResource - k8s:resource, should create manifest for Kubernetes
[✓] VertxK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] ThorntailK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] OpenLibertyK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] WildflyJarK8sITCase - k8sResource - k8s:resource, should create manifests
[✓] KarafK8sITCase - K8sApply - k8s:apply, should apply manifests on k8s cluster
[✓] DslK8sGradleITCase - k8sBuild - k8sBuild, should create image
[✓] DslK8sGradleITCase - k8sResource - k8sResource, should create manifests
[✓] KarafK8sITCase - k8sLog - k8s:log
[✓] DslK8sGradleITCase - k8sHelm - k8sHelm, should create Helm charts
[✓] VertxK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] KarafK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] VertxK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] VertxK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] ThorntailK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] ThorntailK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] OpenLibertyK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] OpenLibertyK8sITCase - k8sLog - k8s:log, should retrieve log
[✓] OpenLibertyK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] WildflyJarK8sITCase - k8sApply - k8s:apply, should deploy pod and service
[✓] DslK8sGradleITCase - k8sApply - k8sApply, should deploy pod and service
[✓] DslK8sGradleITCase - k8sLog - k8sLog, should retrieve log
[✓] DslK8sGradleITCase - k8sUndeploy - k8sUndeploy, should delete all applied resources
[✓] WildflyJarK8sITCase - k8sUndeploy - k8s:undeploy, should delete all applied resources
[✓] All tests (5) passed successfully!!!

✔️ Test reports (OpenShift v3.10.0-webapp)
[✓] JettyOcITCase - ocBuild - oc:build, should create image
[✓] JettyOcITCase - ocResource - oc:resource, should create manifests
[✓] WildFlyOcDockerModeITCase - ocBuild - oc:build, should create image using docker
[✓] WildFlyOcDockerModeITCase - ocResource - k8s:resource, should create manifests
[✓] ZeroConfigOcITCase - ocBuild - oc:build, should create image
[✓] ZeroConfigOcITCase - ocResource - oc:resource, should create manifests
[✓] WildFlyOcITCase - ocBuild - oc:build, should create image
[✓] WildFlyOcITCase - ocResource - oc:resource, should create manifests
[✓] JettyOcITCase - ocApply - oc:apply, should deploy pod and service
[✓] JettyOcITCase - ocLog - oc:log, should retrieve log
[✓] WildFlyOcDockerModeITCase - ocApply - oc:apply, should deploy pod and service
[✓] JettyOcITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] WildFlyOcDockerModeITCase - ocLog - oc:log, should retrieve logs
[✓] ZeroConfigOcITCase - ocApply - oc:apply, should deploy pod and service
[✓] ZeroConfigOcITCase - testNodePortResponse - Service as NodePort response should return String
[✓] WildFlyOcDockerModeITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] ZeroConfigOcITCase - ocLog - oc:log, should retrieve log
[✓] WildFlyOcITCase - ocApply - oc:apply, should deploy pod and service
[✓] ZeroConfigOcITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] WildFlyOcITCase - ocLog - oc:log, should retrieve logs
[✓] WildFlyOcITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] All tests (5) passed successfully!!!

❌ Test reports (OpenShift v3.10.0-springboot)
[✓] HelmConfigITCase - ocResource - oc:resource, no specified profile, should create default resource manifests
[✓] HelmConfigITCase - ocHelm - oc:helm, should create Helm charts
[✓] HelmConfigITCase - ocHelmPush - oc:helm-push, should push the charts
[✓] CompleteOcDockerITCase - ocBuild - oc:build, with jkube.build.strategy=docker, should create image
[✓] CompleteOcDockerITCase - ocResource - oc:resource, should create manifests
[✓] CompleteOcDockerLayersDisabledITCase - ocBuild - oc:build, with jkube.build.strategy=docker, should create image
[✓] CompleteOcDockerLayersDisabledITCase - ocResource - oc:resource, should create manifests
[✓] ZeroConfigOcGradleITCase - ocBuild - ocBuild, should create image
[✓] ZeroConfigOcGradleITCase - ocResource - ocResource, should create manifests
[✓] ZeroConfigOcITCase - ocBuild - oc:build, should create image
[✓] ZeroConfigOcITCase - ocResource - oc:resource, should create manifests
[✓] WatchOcITCase - watch_whenSourceModified_shouldLiveReloadChanges - watch, SHOULD hot reload application on changes
[✓] CompleteOcDockerITCase - ocApply - oc:apply, should deploy pod and service
[✓] CompleteOcDockerLayersDisabledITCase - ocApply - oc:apply, should deploy pod and service
[✓] CompleteOcDockerITCase - ocLog - oc:log, should retrieve log
[✓] ZeroConfigOcGradleITCase - ocApply - ocApply, should deploy pod and service
[✓] CompleteOcDockerITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] CompleteOcDockerLayersDisabledITCase - ocLog - oc:log, should retrieve log
[✓] ZeroConfigOcGradleITCase - ocHelm - ocHelm, should create Helm charts
[✓] ZeroConfigOcGradleITCase - ocLog - ocLog, should retrieve log
[✓] CompleteOcDockerLayersDisabledITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] ZeroConfigOcGradleITCase - ocUndeploy - ocUndeploy, should delete all applied resources
[X] ZeroConfigOcITCase - ocApply - oc:apply, should deploy pod and service
[✓] ZeroConfigOcITCase - ocHelm - oc:helm, should create Helm charts
[✓] ZeroConfigOcITCase - ocLog - oc:log, should retrieve log
[✓] ZeroConfigOcITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] All tests (1) passed successfully!!!

✔️ Test reports (OpenShift v3.10.0-other)
[✓] VertxOcITCase - ocBuild - oc:build, should create image
[✓] VertxOcITCase - ocResource - oc:resource, should create manifests
[✓] ThorntailOcITCase - ocBuild - oc:build, should create image
[✓] ThorntailOcITCase - ocResource - oc:resource, should create manifests
[✓] KarafOcITCase - ocBuild - oc:build, should create image
[✓] KarafOcITCase - ocResource - oc:resource, should create resource manifests
[✓] OpenLibertyOcITCase - ocBuild - oc:build, should create image
[✓] OpenLibertyOcITCase - ocResource - oc:resource, should create manifests
[✓] WildflyJarOcITCase - ocBuild - oc:build, should create image
[✓] WildflyJarOcITCase - ocResource - oc:resource, should create manifests
[✓] DslOcGradleITCase - ocBuild - ocBuild, should create image
[✓] DslOcGradleITCase - ocResource - ocResource, should create manifests
[✓] VertxOcITCase - ocApply - oc:apply, should deploy pod and service
[✓] VertxOcITCase - k8sLog - oc:log, should retrieve log
[✓] VertxOcITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] ThorntailOcITCase - ocApply - oc:apply, should deploy pod and service
[✓] ThorntailOcITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] KarafOcITCase - ocApply - oc:apply, should create pod, service and route
[✓] KarafOcITCase - ocLog - oc:log, should retrieve log
[✓] KarafOcITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] OpenLibertyOcITCase - ocApply - oc:apply, should deploy pod and service
[✓] OpenLibertyOcITCase - ocLog - oc:log, should retrieve log
[✓] OpenLibertyOcITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] WildflyJarOcITCase - ocApply - oc:apply, should deploy pod and service
[✓] DslOcGradleITCase - ocApply - ocApply, should deploy pod and service
[✓] DslOcGradleITCase - ocHelm - ocHelm, should create Helm charts
[✓] DslOcGradleITCase - ocLog - ocLog, should retrieve log
[✓] WildflyJarOcITCase - ocUndeploy - oc:undeploy, should delete all applied resources
[✓] DslOcGradleITCase - ocUndeploy - ocUndeploy, should delete all applied resources
[✓] All tests (4) passed successfully!!!

@l3002
Copy link
Contributor Author

l3002 commented May 9, 2024

@rohanKanojia / @manusa : I need to know the significance of the following line of code before you merge this or take any further action over this PR:

when(context.getProjectClassLoaders().getCompileClassLoader())
.thenReturn(new URLClassLoader(new URL[0], AbstractSpringBootHealthCheckEnricherTestSupport.class.getClassLoader()));

I understand there here we are defining what is needed to be returned when getCompileClassLoader is called but I'm not sure why would this be required for the tests here. If we have already define this:

when(context.getProjectClassLoaders().isClassInCompileClasspath(true, REQUIRED_CLASSES))
.thenReturn(true);

The reason I wanted to know this is because while writing the test testLivenessAndReadinessProbesForDefaultPath_whenDefaultConfigUsed(), I encountered an error whenever I tried adding the previously mentioned line of code to this test, where the JVM crashed after a few testcases and returned a fatal error.

And that was the reason why I omitted the given lines of code from this test.

NOTE: Individually, All the tests were working as expected, the issue occurred only when I tried ran all the tests together.

Kindly find the below screenshot for the error received:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (moduleEntry.cpp:275), pid=16596, tid=10128
#  guarantee(java_lang_Module::is_instance(module)) failed: The unnamed module for ClassLoader jdk.internal.reflect.DelegatingClassLoader, is null or not an instance of java.lang.Module. The class loader has not been initialized correctly.
#
# JRE version: Java(TM) SE Runtime Environment (17.0.9+11) (build 17.0.9+11-LTS-201)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (17.0.9+11-LTS-201, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# D:\jkube\jkube-kit\jkube-kit-spring-boot\hs_err_pid16596.log
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
#

Process finished with exit code 1

Copy link

sonarcloud bot commented May 9, 2024

@codecov-commenter
Copy link

Codecov Report

Attention: Patch coverage is 90.00000% with 1 lines in your changes are missing coverage. Please review.

Project coverage is 70.86%. Comparing base (1ac4f7c) to head (234383e).
Report is 430 commits behind head on master.

Files Patch % Lines
...jkube/kit/common/util/SpringBootConfiguration.java 50.00% 1 Missing ⚠️
Additional details and impacted files
@@              Coverage Diff              @@
##             master    #3036       +/-   ##
=============================================
+ Coverage     59.36%   70.86%   +11.50%     
- Complexity     4586     5086      +500     
=============================================
  Files           500      490       -10     
  Lines         21211    19599     -1612     
  Branches       2830     2529      -301     
=============================================
+ Hits          12591    13889     +1298     
+ Misses         7370     4480     -2890     
+ Partials       1250     1230       -20     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@rohanKanojia
Copy link
Member

I need to know the significance of the following line of code before you merge this or take any further action over this PR

This code seems to be adding a mock for project's class loader. While generating Spring Boot Health Checks we first check whether user has enabled use of health checks by searching for specific classes in classpath

"org.springframework.boot.actuate.health.HealthIndicator",
"org.springframework.web.context.support.GenericWebApplicationContext"

I understand there here we are defining what is needed to be returned when getCompileClassLoader is called but I'm not sure why would this be required for the tests here. If we have already define this

You're right. If we're already mocking isClassInCompileClasspath(), there is no need to add a mock for custom class path. You can just remove these redundant mocks.

writeProps();

Probe readinessProbe = new SpringBootHealthCheckEnricher(context).buildProbe(10, null, null, 3, 1,"/example");
assertHTTPGetPathAndPort(readinessProbe,getActuatorDefaultBasePath() + "/health", 8080);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there are tests already to cover the scenario where management.health.probes.enabled is false (I think zeroConfig() has same expectations as this test)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought maybe it would be better to have separate test for the case where the management probe is explicitly kept as false. If you think there's no need for such a testcase, then I can surely remove it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Umm, you do have a point. It might make sense to keep these tests in case we refactor zeroConfig() test in future. Having more tests doesn't do any harm.

@rohanKanojia
Copy link
Member

I think we should also add a Gradle Integration test for this feature (like existing spring-boot-properties integration test) . Check this PR to get an idea of how to write gradle integration test #2533 .

@rohanKanojia
Copy link
Member

Documentation also needs to be updated. Documentation for enricher is here
https://github.com/eclipse-jkube/jkube/blob/master/jkube-kit/doc/src/main/asciidoc/inc/enricher/spring-boot-healthcheck/_jkube_healthcheck_spring_boot.adoc

We should inform the user that enabling property would affect liveness and readiness probes.

@l3002
Copy link
Contributor Author

l3002 commented May 15, 2024

@rohanKanojia : Thanks for the code review, I'll work on the mentioned pointer over this week.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

SpringBootHealthCheckEnricher should auto detect configured liveness and readiness probes
4 participants