You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ts...@apache.org on 2022/10/07 03:48:06 UTC
[camel-k] 04/13: (e2e): Improvements for testing
This is an automated email from the ASF dual-hosted git repository.
tsato pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 53e6ceee0a9ffa4fc9ff1437faabf6b8b20f1dce
Author: phantomjinx <p....@phantomjinx.co.uk>
AuthorDate: Wed Sep 28 13:04:45 2022 +0100
(e2e): Improvements for testing
* Extends the timeout for testing to 90m since if in debug mode, the extra
logging increases the testing time and takes slightly longer than 60m
* Adds in extra debug statements for logging when running in debug mode
* Exposes the LOG_LEVEL parameter to e2e testsuite so tests can be switched
to debug mode
* Prints the call stack for kamel binary if running test in debug mode
* Fixes the StructuredLogs test by better detection of invalid operator log
entries by the test
* Provide functions to heal a crashed catalogsource pod by waiting for its
pull-secret to become available and then deleting the pod and allowing the
source to reprovision a new one
* Fixes uninstall test by recognising roles are not deleted when install
was by the OLM
* Fixes install test by checking the LOG_LEVEL env var rather than string to
read the operator log which can be truncated
* Fixes to tests by extending timeouts for integration pods coming up
* Removes some cleanups from individual tests as these should be taken care of
by the cleanup of the namespace
* Better logging when building the bundle and bundle index images
# Conflicts:
# script/Makefile
---
.github/actions/e2e-builder/action.yml | 1 +
.github/actions/e2e-builder/exec-tests.sh | 6 +-
.github/actions/e2e-common/action.yml | 1 +
.github/actions/e2e-common/exec-tests.sh | 6 +-
.github/actions/e2e-install/action.yml | 1 +
.github/actions/e2e-install/exec-tests.sh | 6 +-
.github/actions/e2e-knative-yaks/action.yml | 1 +
.github/actions/e2e-knative-yaks/exec-tests.sh | 6 +-
.github/actions/e2e-knative/action.yml | 1 +
.github/actions/e2e-knative/exec-tests.sh | 6 +-
.github/actions/e2e-upgrade/action.yml | 1 +
.github/actions/e2e-upgrade/exec-tests.sh | 6 +-
.../kamel-build-bundle/build-bundle-image.sh | 12 ++-
.../kamel-build-bundle/build-index-image.sh | 2 +-
.../kamel-install-global-operator/action.yml | 1 +
.../install-global-operator.sh | 12 ++-
.../actions/kamel-preflight-test/preflight-test.sh | 2 +
.github/workflows/builder.yml | 4 +
.github/workflows/common.yml | 4 +
.github/workflows/install.yml | 4 +
.github/workflows/knative.yml | 4 +
.github/workflows/manual-exec-process-inputs.sh | 9 ++-
.github/workflows/upgrade.yml | 4 +
e2e/global/common/config/config_test.go | 4 +-
e2e/global/common/kamelet_test.go | 3 -
e2e/global/common/operator_metrics_test.go | 7 +-
e2e/global/common/structured_logs_test.go | 8 +-
e2e/global/knative/knative_test.go | 2 +-
e2e/namespace/install/cli/debug_test.go | 2 +-
e2e/namespace/install/cli/delete_test.go | 14 ++--
e2e/namespace/install/cli/install_test.go | 9 +--
e2e/namespace/install/cli/uninstall_test.go | 18 ++++-
e2e/namespace/install/kustomize/common.go | 2 +-
e2e/namespace/upgrade/olm_install_test.go | 16 +++-
e2e/namespace/upgrade/olm_upgrade_test.go | 13 ++++
e2e/namespace/upgrade/util.go | 49 ++++++++++++
e2e/support/test_support.go | 89 +++++++++++++++++++---
e2e/support/util/dump.go | 18 +++--
pkg/cmd/version.go | 5 +-
.../integrationkit/integrationkit_controller.go | 3 +
pkg/platform/defaults.go | 20 +++++
pkg/platform/operator.go | 8 ++
pkg/platform/platform.go | 6 ++
pkg/util/kubernetes/client.go | 7 ++
script/Makefile | 30 ++++----
45 files changed, 361 insertions(+), 72 deletions(-)
diff --git a/.github/actions/e2e-builder/action.yml b/.github/actions/e2e-builder/action.yml
index 1f4e37f8c..96f0eb6a0 100644
--- a/.github/actions/e2e-builder/action.yml
+++ b/.github/actions/e2e-builder/action.yml
@@ -123,6 +123,7 @@ runs:
-i "${{ steps.config-cluster.outputs.cluster-image-namespace }}" \
-l "${{ steps.config-cluster.outputs.cluster-image-registry-pull-host }}" \
-n "${{ steps.build-kamel.outputs.build-binary-local-image-name }}" \
+ -q "${{ env.CAMEL_K_LOG_LEVEL }}" \
-s "${{steps.config-cluster.outputs.cluster-image-registry-insecure }}" \
-v "${{ steps.build-kamel.outputs.build-binary-local-image-version }}" \
-x "${{ env.CAMEL_K_TEST_SAVE_FAILED_TEST_NAMESPACE }}"
diff --git a/.github/actions/e2e-builder/exec-tests.sh b/.github/actions/e2e-builder/exec-tests.sh
index b52ecf1f4..44501de07 100755
--- a/.github/actions/e2e-builder/exec-tests.sh
+++ b/.github/actions/e2e-builder/exec-tests.sh
@@ -25,7 +25,7 @@
set -e
-while getopts ":b:c:g:i:l:n:s:v:x:" opt; do
+while getopts ":b:c:g:i:l:n:q:s:v:x:" opt; do
case "${opt}" in
b)
BUILD_CATALOG_SOURCE_NAME=${OPTARG}
@@ -45,6 +45,9 @@ while getopts ":b:c:g:i:l:n:s:v:x:" opt; do
n)
IMAGE_NAME=${OPTARG}
;;
+ q)
+ LOG_LEVEL=${OPTARG}
+ ;;
s)
REGISTRY_INSECURE=${OPTARG}
;;
@@ -114,6 +117,7 @@ export KAMEL_INSTALL_OPERATOR_IMAGE=${CUSTOM_IMAGE}:${CUSTOM_VERSION}
# (see kamel-build-bundle/build-bundle-image.sh)
export KAMEL_INSTALL_OPERATOR_IMAGE_PULL_POLICY="Always"
+export CAMEL_K_LOG_LEVEL="${LOG_LEVEL}"
export CAMEL_K_TEST_IMAGE_NAME=${CUSTOM_IMAGE}
export CAMEL_K_TEST_IMAGE_VERSION=${CUSTOM_VERSION}
export CAMEL_K_TEST_SAVE_FAILED_TEST_NAMESPACE=${SAVE_FAILED_TEST_NS}
diff --git a/.github/actions/e2e-common/action.yml b/.github/actions/e2e-common/action.yml
index bfb8d9d4c..12c6993e5 100644
--- a/.github/actions/e2e-common/action.yml
+++ b/.github/actions/e2e-common/action.yml
@@ -117,6 +117,7 @@ runs:
-i "${{ steps.config-cluster.outputs.cluster-image-namespace }}" \
-l "${{ steps.config-cluster.outputs.cluster-image-registry-pull-host }}" \
-n "${{ steps.build-kamel.outputs.build-binary-local-image-name }}" \
+ -q "${{ env.CAMEL_K_LOG_LEVEL }}" \
-s "${{steps.config-cluster.outputs.cluster-image-registry-insecure }}" \
-v "${{ steps.build-kamel.outputs.build-binary-local-image-version }}" \
-x "${{ env.CAMEL_K_TEST_SAVE_FAILED_TEST_NAMESPACE }}"
diff --git a/.github/actions/e2e-common/exec-tests.sh b/.github/actions/e2e-common/exec-tests.sh
index 6423b5734..8b687ba2a 100755
--- a/.github/actions/e2e-common/exec-tests.sh
+++ b/.github/actions/e2e-common/exec-tests.sh
@@ -25,7 +25,7 @@
set -e
-while getopts ":b:c:g:i:l:n:s:v:x:" opt; do
+while getopts ":b:c:g:i:l:n:q:s:v:x:" opt; do
case "${opt}" in
b)
BUILD_CATALOG_SOURCE_NAME=${OPTARG}
@@ -45,6 +45,9 @@ while getopts ":b:c:g:i:l:n:s:v:x:" opt; do
n)
IMAGE_NAME=${OPTARG}
;;
+ q)
+ LOG_LEVEL=${OPTARG}
+ ;;
s)
REGISTRY_INSECURE=${OPTARG}
;;
@@ -114,6 +117,7 @@ export KAMEL_INSTALL_OPERATOR_IMAGE=${CUSTOM_IMAGE}:${CUSTOM_VERSION}
# (see kamel-build-bundle/build-bundle-image.sh)
export KAMEL_INSTALL_OPERATOR_IMAGE_PULL_POLICY="Always"
+export CAMEL_K_LOG_LEVEL="${LOG_LEVEL}"
export CAMEL_K_TEST_IMAGE_NAME=${CUSTOM_IMAGE}
export CAMEL_K_TEST_IMAGE_VERSION=${CUSTOM_VERSION}
export CAMEL_K_TEST_SAVE_FAILED_TEST_NAMESPACE=${SAVE_FAILED_TEST_NS}
diff --git a/.github/actions/e2e-install/action.yml b/.github/actions/e2e-install/action.yml
index 8b2ebbf19..04fc81da8 100644
--- a/.github/actions/e2e-install/action.yml
+++ b/.github/actions/e2e-install/action.yml
@@ -103,6 +103,7 @@ runs:
-i "${{ steps.config-cluster.outputs.cluster-image-namespace }}" \
-l "${{ steps.config-cluster.outputs.cluster-image-registry-pull-host }}" \
-n "${{ steps.build-kamel.outputs.build-binary-local-image-name }}" \
+ -q "${{ env.CAMEL_K_LOG_LEVEL }}" \
-s "${{steps.config-cluster.outputs.cluster-image-registry-insecure }}" \
-v "${{ steps.build-kamel.outputs.build-binary-local-image-version }}" \
-x "${{ env.CAMEL_K_TEST_SAVE_FAILED_TEST_NAMESPACE }}"
diff --git a/.github/actions/e2e-install/exec-tests.sh b/.github/actions/e2e-install/exec-tests.sh
index 3b780d7f3..f85b44c67 100755
--- a/.github/actions/e2e-install/exec-tests.sh
+++ b/.github/actions/e2e-install/exec-tests.sh
@@ -25,7 +25,7 @@
set -e
-while getopts ":b:c:i:l:n:s:v:x:" opt; do
+while getopts ":b:c:i:l:n:q:s:v:x:" opt; do
case "${opt}" in
b)
BUILD_CATALOG_SOURCE_NAME=${OPTARG}
@@ -42,6 +42,9 @@ while getopts ":b:c:i:l:n:s:v:x:" opt; do
n)
IMAGE_NAME=${OPTARG}
;;
+ q)
+ LOG_LEVEL=${OPTARG}
+ ;;
s)
REGISTRY_INSECURE=${OPTARG}
;;
@@ -112,6 +115,7 @@ export KAMEL_INSTALL_OPERATOR_IMAGE=${CUSTOM_IMAGE}:${CUSTOM_VERSION}
# (see kamel-build-bundle/build-bundle-image.sh)
export KAMEL_INSTALL_OPERATOR_IMAGE_PULL_POLICY="Always"
+export CAMEL_K_LOG_LEVEL="${LOG_LEVEL}"
export CAMEL_K_TEST_IMAGE_NAME=${CUSTOM_IMAGE}
export CAMEL_K_TEST_IMAGE_VERSION=${CUSTOM_VERSION}
export CAMEL_K_TEST_SAVE_FAILED_TEST_NAMESPACE=${SAVE_FAILED_TEST_NS}
diff --git a/.github/actions/e2e-knative-yaks/action.yml b/.github/actions/e2e-knative-yaks/action.yml
index 6d0ff89b2..68f072e76 100644
--- a/.github/actions/e2e-knative-yaks/action.yml
+++ b/.github/actions/e2e-knative-yaks/action.yml
@@ -125,6 +125,7 @@ runs:
-i "${{ steps.config-cluster.outputs.cluster-image-namespace }}" \
-l "${{ steps.config-cluster.outputs.cluster-image-registry-pull-host }}" \
-n "${{ steps.build-kamel.outputs.build-binary-local-image-name }}" \
+ -q "${{ env.CAMEL_K_LOG_LEVEL }}" \
-s "${{steps.config-cluster.outputs.cluster-image-registry-insecure }}" \
-v "${{ steps.build-kamel.outputs.build-binary-local-image-version }}" \
-x "${{ env.CAMEL_K_TEST_SAVE_FAILED_TEST_NAMESPACE }}"
diff --git a/.github/actions/e2e-knative-yaks/exec-tests.sh b/.github/actions/e2e-knative-yaks/exec-tests.sh
index 56b3d1644..a6075dbbc 100755
--- a/.github/actions/e2e-knative-yaks/exec-tests.sh
+++ b/.github/actions/e2e-knative-yaks/exec-tests.sh
@@ -25,7 +25,7 @@
set -e
-while getopts ":b:c:i:l:n:s:v:x:" opt; do
+while getopts ":b:c:i:l:n:q:s:v:x:" opt; do
case "${opt}" in
b)
BUILD_CATALOG_SOURCE_NAME=${OPTARG}
@@ -42,6 +42,9 @@ while getopts ":b:c:i:l:n:s:v:x:" opt; do
n)
IMAGE_NAME=${OPTARG}
;;
+ q)
+ LOG_LEVEL=${OPTARG}
+ ;;
s)
REGISTRY_INSECURE=${OPTARG}
;;
@@ -111,6 +114,7 @@ export KAMEL_INSTALL_OPERATOR_IMAGE=${CUSTOM_IMAGE}:${CUSTOM_VERSION}
# (see kamel-build-bundle/build-bundle-image.sh)
export KAMEL_INSTALL_OPERATOR_IMAGE_PULL_POLICY="Always"
+export CAMEL_K_LOG_LEVEL="${LOG_LEVEL}"
export CAMEL_K_TEST_IMAGE_NAME=${CUSTOM_IMAGE}
export CAMEL_K_TEST_IMAGE_VERSION=${CUSTOM_VERSION}
export CAMEL_K_TEST_SAVE_FAILED_TEST_NAMESPACE=${SAVE_FAILED_TEST_NS}
diff --git a/.github/actions/e2e-knative/action.yml b/.github/actions/e2e-knative/action.yml
index ea3e4710a..4a69be056 100644
--- a/.github/actions/e2e-knative/action.yml
+++ b/.github/actions/e2e-knative/action.yml
@@ -121,6 +121,7 @@ runs:
-i "${{ steps.config-cluster.outputs.cluster-image-namespace }}" \
-l "${{ steps.config-cluster.outputs.cluster-image-registry-pull-host }}" \
-n "${{ steps.build-kamel.outputs.build-binary-local-image-name }}" \
+ -q "${{ env.CAMEL_K_LOG_LEVEL }}" \
-s "${{steps.config-cluster.outputs.cluster-image-registry-insecure }}" \
-v "${{ steps.build-kamel.outputs.build-binary-local-image-version }}" \
-x "${{ env.CAMEL_K_TEST_SAVE_FAILED_TEST_NAMESPACE }}"
diff --git a/.github/actions/e2e-knative/exec-tests.sh b/.github/actions/e2e-knative/exec-tests.sh
index fd591cbb7..0e3d94517 100755
--- a/.github/actions/e2e-knative/exec-tests.sh
+++ b/.github/actions/e2e-knative/exec-tests.sh
@@ -25,7 +25,7 @@
set -e
-while getopts ":b:c:g:i:l:n:s:v:x:" opt; do
+while getopts ":b:c:g:i:l:n:q:s:v:x:" opt; do
case "${opt}" in
b)
BUILD_CATALOG_SOURCE_NAME=${OPTARG}
@@ -45,6 +45,9 @@ while getopts ":b:c:g:i:l:n:s:v:x:" opt; do
n)
IMAGE_NAME=${OPTARG}
;;
+ q)
+ LOG_LEVEL=${OPTARG}
+ ;;
s)
REGISTRY_INSECURE=${OPTARG}
;;
@@ -115,6 +118,7 @@ export KAMEL_INSTALL_OPERATOR_IMAGE=${CUSTOM_IMAGE}:${CUSTOM_VERSION}
# (see kamel-build-bundle/build-bundle-image.sh)
export KAMEL_INSTALL_OPERATOR_IMAGE_PULL_POLICY="Always"
+export CAMEL_K_LOG_LEVEL="${LOG_LEVEL}"
export CAMEL_K_TEST_IMAGE_NAME=${CUSTOM_IMAGE}
export CAMEL_K_TEST_IMAGE_VERSION=${CUSTOM_VERSION}
export CAMEL_K_TEST_SAVE_FAILED_TEST_NAMESPACE=${SAVE_FAILED_TEST_NS}
diff --git a/.github/actions/e2e-upgrade/action.yml b/.github/actions/e2e-upgrade/action.yml
index 5d5c3515b..8da9ee656 100644
--- a/.github/actions/e2e-upgrade/action.yml
+++ b/.github/actions/e2e-upgrade/action.yml
@@ -111,6 +111,7 @@ runs:
-d "${{ steps.build-kamel.outputs.build-bundle-image-bundle-index }}" \
-l "${{ steps.config-cluster.outputs.cluster-image-registry-pull-host }}" \
-n "${{ steps.build-kamel.outputs.build-binary-local-image-name }}" \
+ -q "${{ env.CAMEL_K_LOG_LEVEL }}" \
-s "${{ steps.config-cluster.outputs.cluster-image-registry-insecure }}" \
-v "${{ steps.build-kamel.outputs.build-binary-local-image-version }}" \
-x "${{ env.CAMEL_K_TEST_SAVE_FAILED_TEST_NAMESPACE }}"
diff --git a/.github/actions/e2e-upgrade/exec-tests.sh b/.github/actions/e2e-upgrade/exec-tests.sh
index be8ed47f3..367a578bc 100755
--- a/.github/actions/e2e-upgrade/exec-tests.sh
+++ b/.github/actions/e2e-upgrade/exec-tests.sh
@@ -25,7 +25,7 @@
set -e
-while getopts ":b:d:l:n:s:v:x:" opt; do
+while getopts ":b:d:l:n:q:s:v:x:" opt; do
case "${opt}" in
b)
KAMEL_BINARY=${OPTARG}
@@ -39,6 +39,9 @@ while getopts ":b:d:l:n:s:v:x:" opt; do
n)
IMAGE_NAME=${OPTARG}
;;
+ q)
+ LOG_LEVEL=${OPTARG}
+ ;;
s)
REGISTRY_INSECURE=${OPTARG}
;;
@@ -112,6 +115,7 @@ export KAMEL_INSTALL_OPERATOR_IMAGE_PULL_POLICY="Always"
# Despite building a bundle we don't want it installed immediately so no OLM_INDEX_BUNDLE var
# Configure test options
+export CAMEL_K_LOG_LEVEL="${LOG_LEVEL}"
export CAMEL_K_PREV_IIB=quay.io/operatorhubio/catalog:latest
export CAMEL_K_NEW_IIB=${BUNDLE_INDEX_IMAGE}
export CAMEL_K_PREV_UPGRADE_CHANNEL=${PREV_XY_CHANNEL}
diff --git a/.github/actions/kamel-build-bundle/build-bundle-image.sh b/.github/actions/kamel-build-bundle/build-bundle-image.sh
index 0bd0edb68..f6c509cbf 100755
--- a/.github/actions/kamel-build-bundle/build-bundle-image.sh
+++ b/.github/actions/kamel-build-bundle/build-bundle-image.sh
@@ -23,7 +23,7 @@
#
####
-set -e
+set +e
while getopts ":i:l:n:s:v:" opt; do
case "${opt}" in
@@ -115,10 +115,18 @@ echo "PREV_XY_CHANNEL=${PREV_XY_CHANNEL}" >> $GITHUB_ENV
export NEW_XY_CHANNEL=stable-dev-$(make get-version | grep -Po "\d+\.\d+")
echo "NEW_XY_CHANNEL=${NEW_XY_CHANNEL}" >> $GITHUB_ENV
+echo "BUNDLE_IMAGE_NAME=${PUSH_BUNDLE_LOCAL_IMAGE}"
+echo "DEFAULT_CHANNEL=${NEW_XY_CHANNEL}"
+echo "CHANNELS=${NEW_XY_CHANNEL}"
+
make bundle-push \
BUNDLE_IMAGE_NAME="${PUSH_BUNDLE_LOCAL_IMAGE}" \
DEFAULT_CHANNEL="${NEW_XY_CHANNEL}" \
- CHANNELS="${NEW_XY_CHANNEL}"
+ CHANNELS="${NEW_XY_CHANNEL}" 2>&1
+if [ $? != 0 ]; then
+ echo "Error: Making bundle failed."
+ exit 1
+fi
#
# Use the PULL host to ensure the correct image:tag
diff --git a/.github/actions/kamel-build-bundle/build-index-image.sh b/.github/actions/kamel-build-bundle/build-index-image.sh
index c8e61963e..e5d1fbbbc 100755
--- a/.github/actions/kamel-build-bundle/build-index-image.sh
+++ b/.github/actions/kamel-build-bundle/build-index-image.sh
@@ -182,7 +182,7 @@ if [ "${PULL_REGISTRY}" != "${PUSH_REGISTRY}" ]; then
# Push the bundle image to the registry
#
echo "Pushing bundle image ..."
- docker push ${BUNDLE_IMAGE}
+ docker push ${BUNDLE_IMAGE} 2>&1
fi
#
diff --git a/.github/actions/kamel-install-global-operator/action.yml b/.github/actions/kamel-install-global-operator/action.yml
index 4bd08aca0..e8b32288b 100644
--- a/.github/actions/kamel-install-global-operator/action.yml
+++ b/.github/actions/kamel-install-global-operator/action.yml
@@ -59,5 +59,6 @@ runs:
-i "${{ inputs.image-namespace }}" \
-l "${{ inputs.image-registry-host }}" \
-n "${{ inputs.image-name }}" \
+ -q "${{ env.CAMEL_K_LOG_LEVEL }}" \
-s "${{ inputs.image-registry-insecure }}" \
-v "${{ inputs.image-version }}"
diff --git a/.github/actions/kamel-install-global-operator/install-global-operator.sh b/.github/actions/kamel-install-global-operator/install-global-operator.sh
index 485dbee73..1c7e6b41a 100755
--- a/.github/actions/kamel-install-global-operator/install-global-operator.sh
+++ b/.github/actions/kamel-install-global-operator/install-global-operator.sh
@@ -25,7 +25,7 @@
set -e
-while getopts ":b:c:g:i:l:n:s:v:" opt; do
+while getopts ":b:c:g:i:l:n:q:s:v:" opt; do
case "${opt}" in
b)
BUILD_CATALOG_SOURCE_NAME=${OPTARG}
@@ -45,6 +45,9 @@ while getopts ":b:c:g:i:l:n:s:v:" opt; do
n)
IMAGE_NAME=${OPTARG}
;;
+ q)
+ LOG_LEVEL=${OPTARG}
+ ;;
s)
REGISTRY_INSECURE=${OPTARG}
;;
@@ -155,10 +158,15 @@ export KAMEL_INSTALL_OPERATOR_IMAGE=${CUSTOM_IMAGE}:${CUSTOM_VERSION}
# (see kamel-build-bundle/build-bundle-image.sh)
export KAMEL_INSTALL_OPERATOR_IMAGE_PULL_POLICY="Always"
+logLevelSwitch=""
+if [ -n "${LOG_LEVEL}" ]; then
+ logLevelSwitch="--log-level ${LOG_LEVEL}"
+fi
+
#
# Install the operator
#
-kamel install -n ${GLOBAL_OPERATOR_NAMESPACE} --olm=${has_olm} --force --global
+kamel install -n ${GLOBAL_OPERATOR_NAMESPACE} ${logLevelSwitch} --olm=${has_olm} --force --global
if [ $? != 0 ]; then
echo "Error: kamel install returned an error."
exit 1
diff --git a/.github/actions/kamel-preflight-test/preflight-test.sh b/.github/actions/kamel-preflight-test/preflight-test.sh
index de9a6c911..f2779b9f8 100755
--- a/.github/actions/kamel-preflight-test/preflight-test.sh
+++ b/.github/actions/kamel-preflight-test/preflight-test.sh
@@ -29,7 +29,9 @@ NAMESPACE="preflight"
delns() {
echo "Deleting namespace ${1}"
+ set +e
kubectl delete ns ${1} &> /dev/null
+ set -e
}
waitForOperator() {
diff --git a/.github/workflows/builder.yml b/.github/workflows/builder.yml
index 8050a3a6d..0208f1248 100644
--- a/.github/workflows/builder.yml
+++ b/.github/workflows/builder.yml
@@ -44,6 +44,9 @@ on:
- 'NOTICE'
workflow_dispatch:
inputs:
+ log-level:
+ description: 'Set the operator log level (info or debug)'
+ required: false
pre-built-kamel-image:
description: 'Kamel image url for skipping building of kamel stages. Used for debugging'
required: false
@@ -81,6 +84,7 @@ jobs:
./.github/workflows/manual-exec-process-inputs.sh \
-i "${{ github.event.inputs.pre-built-kamel-image }}" \
-p "${{ github.event.inputs.skip-problematic }}" \
+ -q "${{ github.event.inputs.log-level }}" \
-t "${{ github.event.inputs.test-filters }}"
- name: Execute Builder Tests
diff --git a/.github/workflows/common.yml b/.github/workflows/common.yml
index bbc948a91..f1a1d5681 100644
--- a/.github/workflows/common.yml
+++ b/.github/workflows/common.yml
@@ -44,6 +44,9 @@ on:
- 'NOTICE'
workflow_dispatch:
inputs:
+ log-level:
+ description: 'Set the operator log level (info or debug)'
+ required: false
pre-built-kamel-image:
description: 'Kamel image url for skipping building of kamel stages. Used for debugging'
required: false
@@ -81,6 +84,7 @@ jobs:
./.github/workflows/manual-exec-process-inputs.sh \
-i "${{ github.event.inputs.pre-built-kamel-image }}" \
-p "${{ github.event.inputs.skip-problematic }}" \
+ -q "${{ github.event.inputs.log-level }}" \
-t "${{ github.event.inputs.test-filters }}"
- name: Execute Tests
diff --git a/.github/workflows/install.yml b/.github/workflows/install.yml
index aafdc1522..e7f5fc3ff 100644
--- a/.github/workflows/install.yml
+++ b/.github/workflows/install.yml
@@ -44,6 +44,9 @@ on:
- 'NOTICE'
workflow_dispatch:
inputs:
+ log-level:
+ description: 'Set the operator log level (info or debug)'
+ required: false
pre-built-kamel-image:
description: 'Kamel image url for skipping building of kamel stages. Used for debugging'
required: false
@@ -78,6 +81,7 @@ jobs:
./.github/workflows/manual-exec-process-inputs.sh \
-i "${{ github.event.inputs.pre-built-kamel-image }}" \
-p "${{ github.event.inputs.skip-problematic }}" \
+ -q "${{ github.event.inputs.log-level }}" \
-t "${{ github.event.inputs.test-filters }}"
- name: Execute Tests
diff --git a/.github/workflows/knative.yml b/.github/workflows/knative.yml
index 3009fd942..34cd9e1df 100644
--- a/.github/workflows/knative.yml
+++ b/.github/workflows/knative.yml
@@ -44,6 +44,9 @@ on:
- 'NOTICE'
workflow_dispatch:
inputs:
+ log-level:
+ description: 'Set the operator log level (info or debug)'
+ required: false
pre-built-kamel-image:
description: 'Kamel image url for skipping building of kamel stages. Used for debugging'
required: false
@@ -77,6 +80,7 @@ jobs:
./.github/workflows/manual-exec-process-inputs.sh \
-i "${{ github.event.inputs.pre-built-kamel-image }}" \
-p "${{ github.event.inputs.skip-problematic }}" \
+ -q "${{ github.event.inputs.log-level }}" \
-t "${{ github.event.inputs.test-filters }}"
- name: Execute KNative Tests
diff --git a/.github/workflows/manual-exec-process-inputs.sh b/.github/workflows/manual-exec-process-inputs.sh
index 186e26840..b751d6bf1 100755
--- a/.github/workflows/manual-exec-process-inputs.sh
+++ b/.github/workflows/manual-exec-process-inputs.sh
@@ -27,7 +27,7 @@ if [ -z "$GITHUB_ENV" ]; then
rm -f "${GITHUB_ENV}"
fi
-while getopts ":i:p:t:" opt; do
+while getopts ":i:p:q:t:" opt; do
case "${opt}" in
i)
PRE_BUILT_IMAGE=${OPTARG}
@@ -35,6 +35,9 @@ while getopts ":i:p:t:" opt; do
p)
SKIP_PROBLEMATIC=${OPTARG}
;;
+ q)
+ LOG_LEVEL=${OPTARG}
+ ;;
t)
TEST_FILTERS=${OPTARG}
;;
@@ -50,6 +53,10 @@ while getopts ":i:p:t:" opt; do
done
shift $((OPTIND-1))
+if [ -n "${LOG_LEVEL}" ]; then
+ echo "CAMEL_K_LOG_LEVEL=${LOG_LEVEL}" >> $GITHUB_ENV
+fi
+
if [ -n "${PRE_BUILT_IMAGE}" ]; then
echo "DEBUG_USE_EXISTING_IMAGE=${PRE_BUILT_IMAGE}" >> $GITHUB_ENV
fi
diff --git a/.github/workflows/upgrade.yml b/.github/workflows/upgrade.yml
index 01fd3cba3..802182494 100644
--- a/.github/workflows/upgrade.yml
+++ b/.github/workflows/upgrade.yml
@@ -44,6 +44,9 @@ on:
- 'NOTICE'
workflow_dispatch:
inputs:
+ log-level:
+ description: 'Set the operator log level (info or debug)'
+ required: false
pre-built-kamel-image:
description: 'Kamel image url for skipping building of kamel stages. Used for debugging'
required: false
@@ -77,6 +80,7 @@ jobs:
./.github/workflows/manual-exec-process-inputs.sh \
-i "${{ github.event.inputs.pre-built-kamel-image }}" \
-p "${{ github.event.inputs.skip-problematic }}" \
+ -q "${{ github.event.inputs.log-level }}" \
-t "${{ github.event.inputs.test-filters }}"
- name: Execute Upgrade Tests
diff --git a/e2e/global/common/config/config_test.go b/e2e/global/common/config/config_test.go
index a525ec273..38eb54e7b 100644
--- a/e2e/global/common/config/config_test.go
+++ b/e2e/global/common/config/config_test.go
@@ -329,8 +329,8 @@ func TestRunConfigExamples(t *testing.T) {
Expect(KamelRunWithID(operatorID, ns, "./files/build-property-file-route.groovy", "--build-property", "configmap:my-cm-test-build-property").Execute()).To(Succeed())
Eventually(IntegrationPodPhase(ns, "build-property-file-route"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
- Eventually(IntegrationConditionStatus(ns, "build-property-file-route", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
- Eventually(IntegrationLogs(ns, "build-property-file-route"), TestTimeoutShort).Should(ContainSubstring("my-cool-application"))
+ Eventually(IntegrationConditionStatus(ns, "build-property-file-route", v1.IntegrationConditionReady), TestTimeoutLong).Should(Equal(corev1.ConditionTrue))
+ Eventually(IntegrationLogs(ns, "build-property-file-route"), TestTimeoutLong).Should(ContainSubstring("my-cool-application"))
Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
})
diff --git a/e2e/global/common/kamelet_test.go b/e2e/global/common/kamelet_test.go
index dd1b51a0b..5c4242fd3 100644
--- a/e2e/global/common/kamelet_test.go
+++ b/e2e/global/common/kamelet_test.go
@@ -68,9 +68,6 @@ func TestKameletClasspathLoading(t *testing.T) {
Eventually(IntegrationPodPhase(ns, "timer-custom-kamelet-integration"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
Eventually(IntegrationLogs(ns, "timer-custom-kamelet-integration")).Should(ContainSubstring("great message"))
-
- // Cleanup
- Expect(Kamel("delete", "--all", "-n", ns).Execute()).Should(BeNil())
})
})
}
diff --git a/e2e/global/common/operator_metrics_test.go b/e2e/global/common/operator_metrics_test.go
index db24f0f62..21169711a 100644
--- a/e2e/global/common/operator_metrics_test.go
+++ b/e2e/global/common/operator_metrics_test.go
@@ -73,7 +73,12 @@ func TestMetrics(t *testing.T) {
Expect(pod).NotTo(BeNil())
// pod.Namespace could be different from ns if using global operator
- logs := StructuredLogs(pod.Namespace, pod.Name, corev1.PodLogOptions{}, false)
+ fmt.Printf("Fetching logs for operator pod %s in namespace %s", pod.Name, pod.Namespace)
+ logOptions := &corev1.PodLogOptions{
+ Container: "camel-k-operator",
+ }
+ logs, err := StructuredLogs(pod.Namespace, pod.Name, logOptions, false)
+ Expect(err).To(BeNil())
Expect(logs).NotTo(BeEmpty())
response, err := TestClient().CoreV1().RESTClient().Get().
diff --git a/e2e/global/common/structured_logs_test.go b/e2e/global/common/structured_logs_test.go
index c0abcdc08..dde73f87e 100644
--- a/e2e/global/common/structured_logs_test.go
+++ b/e2e/global/common/structured_logs_test.go
@@ -23,6 +23,7 @@ limitations under the License.
package common
import (
+ "fmt"
"testing"
. "github.com/onsi/gomega"
@@ -47,7 +48,12 @@ func TestStructuredLogs(t *testing.T) {
Expect(pod).NotTo(BeNil())
// pod.Namespace could be different from ns if using global operator
- logs := StructuredLogs(pod.Namespace, pod.Name, corev1.PodLogOptions{}, false)
+ fmt.Printf("Fetching logs for operator pod %s in namespace %s", pod.Name, pod.Namespace)
+ logOptions := &corev1.PodLogOptions{
+ Container: "camel-k-operator",
+ }
+ logs, err := StructuredLogs(pod.Namespace, pod.Name, logOptions, false)
+ Expect(err).To(BeNil())
Expect(logs).NotTo(BeEmpty())
it := Integration(ns, name)()
diff --git a/e2e/global/knative/knative_test.go b/e2e/global/knative/knative_test.go
index 3dd55e660..fa9a9a2b4 100644
--- a/e2e/global/knative/knative_test.go
+++ b/e2e/global/knative/knative_test.go
@@ -99,7 +99,7 @@ func TestKnative(t *testing.T) {
t.Run("Flow", func(t *testing.T) {
Expect(KamelRunWithID(operatorID, ns, "files/flow.yaml").Execute()).To(Succeed())
Eventually(IntegrationPodPhase(ns, "flow"), TestTimeoutLong).Should(Equal(v1.PodRunning))
- Eventually(IntegrationConditionStatus(ns, "flow", camelv1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(v1.ConditionTrue))
+ Eventually(IntegrationConditionStatus(ns, "flow", camelv1.IntegrationConditionReady), TestTimeoutLong).Should(Equal(v1.ConditionTrue))
t.Run("Scale to zero", func(t *testing.T) {
Eventually(IntegrationPod(ns, "flow"), TestTimeoutLong).Should(BeNil())
diff --git a/e2e/namespace/install/cli/debug_test.go b/e2e/namespace/install/cli/debug_test.go
index ed10e1b10..b916615a4 100644
--- a/e2e/namespace/install/cli/debug_test.go
+++ b/e2e/namespace/install/cli/debug_test.go
@@ -34,7 +34,7 @@ import (
func TestKamelCLIDebug(t *testing.T) {
WithNewTestNamespace(t, func(ns string) {
- Expect(Kamel("install", "-n", ns).Execute()).To(Succeed())
+ Expect(KamelInstall(ns).Execute()).To(Succeed())
t.Run("debug local default port check", func(t *testing.T) {
Expect(Kamel("run", "-n", ns, "files/yaml.yaml").Execute()).To(Succeed())
diff --git a/e2e/namespace/install/cli/delete_test.go b/e2e/namespace/install/cli/delete_test.go
index e453a304b..3f2fb88c4 100644
--- a/e2e/namespace/install/cli/delete_test.go
+++ b/e2e/namespace/install/cli/delete_test.go
@@ -42,14 +42,14 @@ func TestKamelCLIDelete(t *testing.T) {
Eventually(IntegrationPodPhase(ns, "yaml"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
Expect(Kamel("delete", "yaml", "-n", ns).Execute()).To(Succeed())
Eventually(Integration(ns, "yaml")).Should(BeNil())
- Eventually(IntegrationPod(ns, "yaml"), TestTimeoutMedium).Should(BeNil())
+ Eventually(IntegrationPod(ns, "yaml"), TestTimeoutLong).Should(BeNil())
})
t.Run("delete building integration", func(t *testing.T) {
Expect(KamelRunWithID(operatorID, ns, "../files/yaml.yaml").Execute()).To(Succeed())
Expect(Kamel("delete", "yaml", "-n", ns).Execute()).To(Succeed())
Eventually(Integration(ns, "yaml")).Should(BeNil())
- Eventually(IntegrationPod(ns, "yaml"), TestTimeoutMedium).Should(BeNil())
+ Eventually(IntegrationPod(ns, "yaml"), TestTimeoutLong).Should(BeNil())
})
t.Run("delete integration from csv", func(t *testing.T) {
@@ -57,7 +57,7 @@ func TestKamelCLIDelete(t *testing.T) {
Eventually(IntegrationPodPhase(ns, "yaml"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
Expect(Kamel("delete", "yaml", "-n", ns).Execute()).To(Succeed())
Eventually(Integration(ns, "yaml")).Should(BeNil())
- Eventually(IntegrationPod(ns, "yaml"), TestTimeoutMedium).Should(BeNil())
+ Eventually(IntegrationPod(ns, "yaml"), TestTimeoutLong).Should(BeNil())
})
t.Run("delete several integrations", func(t *testing.T) {
@@ -67,10 +67,10 @@ func TestKamelCLIDelete(t *testing.T) {
Eventually(IntegrationPodPhase(ns, "java"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
Expect(Kamel("delete", "yaml", "-n", ns).Execute()).To(Succeed())
Eventually(Integration(ns, "yaml")).Should(BeNil())
- Eventually(IntegrationPod(ns, "yaml"), TestTimeoutMedium).Should(BeNil())
+ Eventually(IntegrationPod(ns, "yaml"), TestTimeoutLong).Should(BeNil())
Expect(Kamel("delete", "java", "-n", ns).Execute()).To(Succeed())
Eventually(Integration(ns, "java")).Should(BeNil())
- Eventually(IntegrationPod(ns, "java"), TestTimeoutMedium).Should(BeNil())
+ Eventually(IntegrationPod(ns, "java"), TestTimeoutLong).Should(BeNil())
})
t.Run("delete all integrations", func(t *testing.T) {
@@ -80,9 +80,9 @@ func TestKamelCLIDelete(t *testing.T) {
Eventually(IntegrationPodPhase(ns, "java"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
Eventually(Integration(ns, "yaml")).Should(BeNil())
- Eventually(IntegrationPod(ns, "yaml"), TestTimeoutMedium).Should(BeNil())
+ Eventually(IntegrationPod(ns, "yaml"), TestTimeoutLong).Should(BeNil())
Eventually(Integration(ns, "java")).Should(BeNil())
- Eventually(IntegrationPod(ns, "java"), TestTimeoutMedium).Should(BeNil())
+ Eventually(IntegrationPod(ns, "java"), TestTimeoutLong).Should(BeNil())
})
})
}
diff --git a/e2e/namespace/install/cli/install_test.go b/e2e/namespace/install/cli/install_test.go
index 5bac8129c..f3a861a2b 100644
--- a/e2e/namespace/install/cli/install_test.go
+++ b/e2e/namespace/install/cli/install_test.go
@@ -40,7 +40,6 @@ import (
"github.com/apache/camel-k/pkg/util/kubernetes"
"github.com/apache/camel-k/pkg/util/openshift"
consolev1 "github.com/openshift/api/console/v1"
- corev1 "k8s.io/api/core/v1"
)
func TestBasicInstallation(t *testing.T) {
@@ -164,13 +163,7 @@ func TestInstallDebugLogging(t *testing.T) {
operatorID := fmt.Sprintf("camel-k-%s", ns)
Expect(KamelInstallWithID(operatorID, ns, "-z", "debug").Execute()).To(Succeed())
- podFunc := OperatorPod(ns)
- Eventually(podFunc).ShouldNot(BeNil())
-
- pod := podFunc()
- logs := Logs(pod.Namespace, pod.Name, corev1.PodLogOptions{})
- Eventually(logs).ShouldNot(BeEmpty())
- Eventually(logs).Should(ContainSubstring("DEBUG level messages will be logged"))
+ Eventually(OperatorEnvVarValue(ns, "LOG_LEVEL"), TestTimeoutLong).Should(Equal("debug"))
})
}
diff --git a/e2e/namespace/install/cli/uninstall_test.go b/e2e/namespace/install/cli/uninstall_test.go
index abf03749f..14d0686cc 100644
--- a/e2e/namespace/install/cli/uninstall_test.go
+++ b/e2e/namespace/install/cli/uninstall_test.go
@@ -29,6 +29,7 @@ import (
. "github.com/onsi/gomega"
. "github.com/apache/camel-k/e2e/support"
+ "github.com/apache/camel-k/pkg/util/olm"
)
func TestBasicUninstall(t *testing.T) {
@@ -40,10 +41,25 @@ func TestBasicUninstall(t *testing.T) {
// should be completely removed on uninstall
Expect(Kamel("uninstall", "-n", ns, "--skip-crd", "--skip-cluster-roles").Execute()).To(Succeed())
+
+ // Roles only removed in non-olm use-case
+ uninstallViaOLM := false
+ var err error
+ if uninstallViaOLM, err = olm.IsAPIAvailable(TestContext, TestClient(), ns); err != nil {
+ t.Error(err)
+ t.FailNow()
+ }
+
+ if !uninstallViaOLM {
Eventually(Role(ns)).Should(BeNil())
Eventually(RoleBinding(ns)).Should(BeNil())
+ Eventually(ServiceAccount(ns, "camel-k-operator")).Should(BeNil())
+ } else {
+ Eventually(Role(ns)).ShouldNot(BeNil())
+ Eventually(RoleBinding(ns)).ShouldNot(BeNil())
+ }
+
Eventually(Configmap(ns, "camel-k-maven-settings")).Should(BeNil())
- Eventually(ServiceAccount(ns, "camel-k-operator")).Should(BeNil())
Eventually(OperatorPod(ns), TestTimeoutMedium).Should(BeNil())
Eventually(KameletList(ns)).Should(BeEmpty())
})
diff --git a/e2e/namespace/install/kustomize/common.go b/e2e/namespace/install/kustomize/common.go
index 15c12b655..adcc1ce5d 100644
--- a/e2e/namespace/install/kustomize/common.go
+++ b/e2e/namespace/install/kustomize/common.go
@@ -100,7 +100,7 @@ func ExecMakeError(t *testing.T, command *exec.Cmd) {
// Clean up the cluster ready for the next set of tests
func Cleanup() {
// Remove the locally installed operator
- Kamel("uninstall", "--olm=false").Execute()
+ UninstallAll()
// Ensure the CRDs & ClusterRoles are reinstalled if not already
Kamel("install", "--olm=false", "--cluster-setup").Execute()
diff --git a/e2e/namespace/upgrade/olm_install_test.go b/e2e/namespace/upgrade/olm_install_test.go
index a228978a7..bc12ea6a7 100644
--- a/e2e/namespace/upgrade/olm_install_test.go
+++ b/e2e/namespace/upgrade/olm_install_test.go
@@ -29,6 +29,7 @@ import (
. "github.com/apache/camel-k/e2e/support"
. "github.com/onsi/gomega"
+ "github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1"
@@ -36,6 +37,7 @@ import (
v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
"github.com/apache/camel-k/pkg/util/defaults"
+ "github.com/apache/camel-k/pkg/util/openshift"
)
const installCatalogSourceName = "test-camel-k-source"
@@ -53,7 +55,19 @@ func TestOLMInstallation(t *testing.T) {
WithNewTestNamespace(t, func(ns string) {
Expect(createOrUpdateCatalogSource(ns, installCatalogSourceName, newIIB)).To(Succeed())
- Eventually(catalogSourcePhase(ns, installCatalogSourceName), TestTimeoutMedium).Should(Equal("READY"))
+
+ ocp, err := openshift.IsOpenShift(TestClient())
+ assert.Nil(t, err)
+
+ if ocp {
+ // Wait for pull secret to be created in namespace
+ // eg. test-camel-k-source-dockercfg-zlltn
+ secretPrefix := fmt.Sprintf("%s-dockercfg-", installCatalogSourceName)
+ Eventually(SecretByName(ns, secretPrefix), TestTimeoutLong).Should(Not(BeNil()))
+ }
+
+ Eventually(catalogSourcePodRunning(ns, installCatalogSourceName), TestTimeoutMedium).Should(BeNil())
+ Eventually(catalogSourcePhase(ns, installCatalogSourceName), TestTimeoutLong).Should(Equal("READY"))
args := []string{"install", "-n", ns, "--olm=true", "--olm-source", installCatalogSourceName, "--olm-source-namespace", ns}
diff --git a/e2e/namespace/upgrade/olm_upgrade_test.go b/e2e/namespace/upgrade/olm_upgrade_test.go
index 1a27c7c60..6b71804c7 100644
--- a/e2e/namespace/upgrade/olm_upgrade_test.go
+++ b/e2e/namespace/upgrade/olm_upgrade_test.go
@@ -30,6 +30,7 @@ import (
. "github.com/apache/camel-k/e2e/support"
. "github.com/onsi/gomega"
+ "github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
@@ -41,6 +42,7 @@ import (
v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
"github.com/apache/camel-k/pkg/util/defaults"
+ "github.com/apache/camel-k/pkg/util/openshift"
)
const catalogSourceName = "test-camel-k-source"
@@ -66,6 +68,17 @@ func TestOLMAutomaticUpgrade(t *testing.T) {
WithNewTestNamespace(t, func(ns string) {
Expect(createOrUpdateCatalogSource(ns, catalogSourceName, prevIIB)).To(Succeed())
+ ocp, err := openshift.IsOpenShift(TestClient())
+ assert.Nil(t, err)
+
+ if ocp {
+ // Wait for pull secret to be created in namespace
+ // eg. test-camel-k-source-dockercfg-zlltn
+ secretPrefix := fmt.Sprintf("%s-dockercfg-", catalogSourceName)
+ Eventually(SecretByName(ns, secretPrefix), TestTimeoutLong).Should(Not(BeNil()))
+ }
+
+ Eventually(catalogSourcePodRunning(ns, catalogSourceName), TestTimeoutMedium).Should(BeNil())
Eventually(catalogSourcePhase(ns, catalogSourceName), TestTimeoutMedium).Should(Equal("READY"))
// Set KAMEL_BIN only for this test - don't override the ENV variable for all tests
diff --git a/e2e/namespace/upgrade/util.go b/e2e/namespace/upgrade/util.go
index 616ffcd00..42da566cc 100644
--- a/e2e/namespace/upgrade/util.go
+++ b/e2e/namespace/upgrade/util.go
@@ -23,9 +23,12 @@ limitations under the License.
package common
import (
+ "fmt"
"strings"
+ "time"
"unsafe"
+ corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -114,6 +117,52 @@ func catalogSourcePhase(ns, name string) func() string {
}
}
+func catalogSourcePod(ns, csName string) func() *corev1.Pod {
+ return func() *corev1.Pod {
+ podList, err := TestClient().CoreV1().Pods(ns).List(TestContext, metav1.ListOptions{})
+ if err != nil && errors.IsNotFound(err) {
+ return nil
+ } else if err != nil {
+ panic(err)
+ }
+
+ if len(podList.Items) == 0 {
+ return nil
+ }
+
+ for _, pod := range podList.Items {
+ if strings.HasPrefix(pod.Name, csName) {
+ return &pod
+ }
+ }
+
+ return nil
+ }
+}
+
+func catalogSourcePodRunning(ns, csName string) error {
+ podFunc := catalogSourcePod(ns, installCatalogSourceName)
+
+ for i := 1; i < 5; i++ {
+ csPod := podFunc()
+ if csPod.Status.Phase == "Running" {
+ return nil // Pod good to go
+ }
+
+ if i == 2 {
+ fmt.Println("Catalog Source Pod still not ready so delete & allow it to be redeployed ...")
+ if err := TestClient().Delete(TestContext, csPod); err != nil {
+ return err
+ }
+ }
+
+ fmt.Println("Catalog Source Pod not ready so waiting for 2 minutes ...")
+ time.Sleep(2 * time.Minute)
+ }
+
+ return fmt.Errorf("Catalog Source Pod failed to reach a 'running' state")
+}
+
func getSubscription(ns string) (*olm.Subscription, error) {
lst := olm.SubscriptionList{}
if err := TestClient().List(TestContext, &lst, ctrl.InNamespace(ns)); err != nil {
diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go
index f4f797d53..4e4f0013f 100644
--- a/e2e/support/test_support.go
+++ b/e2e/support/test_support.go
@@ -33,6 +33,7 @@ import (
"os"
"os/exec"
"reflect"
+ "runtime/debug"
"strings"
"testing"
"time"
@@ -249,6 +250,12 @@ func KamelInstallWithContext(ctx context.Context, operatorID string, namespace s
installArgs = []string{"install", "-n", namespace, "--operator-id", operatorID}
}
+ logLevel := os.Getenv("CAMEL_K_LOG_LEVEL")
+ if len(logLevel) > 0 {
+ fmt.Printf("Setting log-level to %s\n", logLevel)
+ installArgs = append(installArgs, "--log-level", logLevel)
+ }
+
installArgs = append(installArgs, args...)
return KamelWithContext(ctx, installArgs...)
}
@@ -317,6 +324,12 @@ func KamelWithContext(ctx context.Context, args ...string) *cobra.Command {
var c *cobra.Command
var err error
+ if os.Getenv("CAMEL_K_LOG_LEVEL") == "debug" {
+ fmt.Printf("Executing kamel with command %+q\n", args)
+ fmt.Println("Printing stack for KamelWithContext")
+ debug.PrintStack()
+ }
+
kamelArgs := os.Getenv("KAMEL_ARGS")
kamelDefaultArgs := strings.Fields(kamelArgs)
args = append(kamelDefaultArgs, args...)
@@ -437,30 +450,34 @@ func Logs(ns, podName string, options corev1.PodLogOptions) func() string {
}
}
-func StructuredLogs(ns, podName string, options corev1.PodLogOptions, ignoreParseErrors bool) []util.LogEntry {
- byteReader, err := TestClient().CoreV1().Pods(ns).GetLogs(podName, &options).Stream(TestContext)
+func StructuredLogs(ns, podName string, options *corev1.PodLogOptions, ignoreParseErrors bool) ([]util.LogEntry, error) {
+
+ stream, err := TestClient().CoreV1().Pods(ns).GetLogs(podName, options).Stream(TestContext)
if err != nil {
- log.Error(err, "Error while reading container logs")
- return nil
+ msg := "Error while reading container logs"
+ log.Error(err, msg)
+ return nil, fmt.Errorf("%s: %w\n", msg, err)
}
defer func() {
- if err := byteReader.Close(); err != nil {
+ if err := stream.Close(); err != nil {
log.Error(err, "Error closing the stream")
}
}()
entries := make([]util.LogEntry, 0)
- scanner := bufio.NewScanner(byteReader)
+ scanner := bufio.NewScanner(stream)
for scanner.Scan() {
entry := util.LogEntry{}
t := scanner.Text()
err := json.Unmarshal([]byte(t), &entry)
if err != nil {
if ignoreParseErrors {
+ fmt.Printf("Warning: Ignoring parse error for logging line: '%s'\n", t)
continue
} else {
- log.Errorf(err, "Unable to parse structured content: %s", t)
- return nil
+ msg := fmt.Sprintf("Unable to parse structured content: %s", t)
+ log.Errorf(err, msg)
+ return nil, fmt.Errorf("%s %w\n", msg, err)
}
}
@@ -468,11 +485,18 @@ func StructuredLogs(ns, podName string, options corev1.PodLogOptions, ignorePars
}
if err := scanner.Err(); err != nil {
- log.Error(err, "Error while scanning container logs")
- return nil
+ msg := "Error while scanning container logs"
+ log.Error(err, msg)
+ return nil, fmt.Errorf("%s %w\n", msg, err)
+ }
+
+ if len(entries) == 0 {
+ msg := "Error fetched zero log entries"
+ log.Error(err, msg)
+ return nil, fmt.Errorf("%s %w\n", msg, err)
}
- return entries
+ return entries, nil
}
func IntegrationPodPhase(ns string, name string) func() corev1.PodPhase {
@@ -1143,6 +1167,23 @@ func OperatorPodPhase(ns string) func() corev1.PodPhase {
}
}
+func OperatorEnvVarValue(ns string, key string) func() string {
+ return func() string {
+ pod := OperatorPod(ns)()
+ if pod == nil || len(pod.Spec.Containers) == 0 {
+ return ""
+ }
+ envvars := pod.Spec.Containers[0].Env
+ for _, v := range envvars {
+ if v.Name == key {
+ return v.Value
+ }
+ }
+
+ return ""
+ }
+}
+
func Configmap(ns string, name string) func() *corev1.ConfigMap {
return func() *corev1.ConfigMap {
cm := corev1.ConfigMap{
@@ -1249,6 +1290,32 @@ func CreatePlainTextSecret(ns string, name string, data map[string]string) error
return TestClient().Create(TestContext, &sec)
}
+//
+// Finds a secret in the given namespace by name or prefix of name
+//
+func SecretByName(ns string, prefix string) func() *corev1.Secret {
+ return func() *corev1.Secret {
+ secretList, err := TestClient().CoreV1().Secrets(ns).List(TestContext, metav1.ListOptions{})
+ if err != nil && k8serrors.IsNotFound(err) {
+ return nil
+ } else if err != nil {
+ failTest(err)
+ }
+
+ if len(secretList.Items) == 0 {
+ return nil
+ }
+
+ for _, secret := range secretList.Items {
+ if strings.HasPrefix(secret.Name, prefix) {
+ return &secret
+ }
+ }
+
+ return nil
+ }
+}
+
func KnativeService(ns string, name string) func() *servingv1.Service {
return func() *servingv1.Service {
answer := servingv1.Service{
diff --git a/e2e/support/util/dump.go b/e2e/support/util/dump.go
index 2a069c637..847821c2a 100644
--- a/e2e/support/util/dump.go
+++ b/e2e/support/util/dump.go
@@ -138,7 +138,7 @@ func Dump(ctx context.Context, c client.Client, ns string, t *testing.T) error {
return err
}
- t.Logf("\nFound %d pods:\n", len(lst.Items))
+ t.Logf("\nFound %d pods in %q:\n", len(lst.Items), ns)
for _, pod := range lst.Items {
t.Logf("name=%s\n", pod.Name)
@@ -216,7 +216,7 @@ func Dump(ctx context.Context, c client.Client, ns string, t *testing.T) error {
return err
}
- t.Logf("\nFound %d pods:\n", len(lst.Items))
+ t.Logf("\nFound %d pods in global namespace %q:\n", len(lst.Items), opns)
for _, pod := range lst.Items {
if !strings.Contains(pod.Name, "camel-k") {
// ignore other global operators
@@ -252,11 +252,17 @@ func dumpConditions(prefix string, conditions []corev1.PodCondition, t *testing.
}
func dumpLogs(ctx context.Context, c client.Client, prefix string, ns string, name string, container string, t *testing.T) error {
- lines := int64(50)
- stream, err := c.CoreV1().Pods(ns).GetLogs(name, &corev1.PodLogOptions{
+ logOptions := &corev1.PodLogOptions{
Container: container,
- TailLines: &lines,
- }).Stream(ctx)
+ }
+
+ if os.Getenv("CAMEL_K_LOG_LEVEL") != "debug" {
+ // If not in debug mode then curtail the dumping of log lines
+ lines := int64(50)
+ logOptions.TailLines = &lines
+ }
+
+ stream, err := c.CoreV1().Pods(ns).GetLogs(name, logOptions).Stream(ctx)
if err != nil {
return err
}
diff --git a/pkg/cmd/version.go b/pkg/cmd/version.go
index 6cec424d6..e789fb9b7 100644
--- a/pkg/cmd/version.go
+++ b/pkg/cmd/version.go
@@ -31,6 +31,7 @@ import (
"github.com/apache/camel-k/pkg/client"
platformutil "github.com/apache/camel-k/pkg/platform"
"github.com/apache/camel-k/pkg/util/defaults"
+ "github.com/apache/camel-k/pkg/util/log"
)
// VersionVariant may be overridden at build time.
@@ -155,7 +156,9 @@ func operatorInfo(ctx context.Context, c client.Client, namespace string) (map[s
}
}
- return fromCamelCase(infos), nil
+ ccInfo := fromCamelCase(infos)
+ log.Debugf("Operator Info for namespace %s: %v", namespace, ccInfo)
+ return ccInfo, nil
}
func fromCamelCase(infos map[string]string) map[string]string {
diff --git a/pkg/controller/integrationkit/integrationkit_controller.go b/pkg/controller/integrationkit/integrationkit_controller.go
index 02a5c7ce8..cdb41fe11 100644
--- a/pkg/controller/integrationkit/integrationkit_controller.go
+++ b/pkg/controller/integrationkit/integrationkit_controller.go
@@ -191,6 +191,7 @@ func (r *reconcileIntegrationKit) Reconcile(ctx context.Context, request reconci
// Make sure the operator is allowed to act on namespace
if ok, err := platform.IsOperatorAllowedOnNamespace(ctx, r.client, request.Namespace); err != nil {
+ log.Debugf("Error occurred when checking whether operator is allowed in namespace %s: %v", request.Namespace, err)
return reconcile.Result{}, err
} else if !ok {
rlog.Info("Ignoring request because namespace is locked")
@@ -221,6 +222,7 @@ func (r *reconcileIntegrationKit) Reconcile(ctx context.Context, request reconci
targetLog := rlog.ForIntegrationKit(target)
if target.Status.Phase == v1.IntegrationKitPhaseNone || target.Status.Phase == v1.IntegrationKitPhaseWaitingForPlatform {
+ rlog.Debug("Preparing to shift integration kit phase")
if target.Labels[v1.IntegrationKitTypeLabel] == v1.IntegrationKitTypeExternal {
target.Status.Phase = v1.IntegrationKitPhaseInitialization
return r.update(ctx, &instance, target)
@@ -236,6 +238,7 @@ func (r *reconcileIntegrationKit) Reconcile(ctx context.Context, request reconci
if instance.Status.Phase != target.Status.Phase {
if err != nil {
+ rlog.Debugf("Error occurred while searching for platform. Cannot advance phase until cleared: %v", err)
target.Status.SetErrorCondition(v1.IntegrationKitConditionPlatformAvailable, v1.IntegrationKitConditionPlatformAvailableReason, err)
}
diff --git a/pkg/platform/defaults.go b/pkg/platform/defaults.go
index 9e41d82cc..f1168c623 100644
--- a/pkg/platform/defaults.go
+++ b/pkg/platform/defaults.go
@@ -55,6 +55,7 @@ func ConfigureDefaults(ctx context.Context, c client.Client, p *v1.IntegrationPl
// update missing fields in the resource
if p.Status.Cluster == "" {
+ log.Debugf("Integration Platform [%s]: setting cluster status", p.Namespace)
// determine the kind of cluster the platform is installed into
isOpenShift, err := openshift.IsOpenShift(c)
switch {
@@ -68,6 +69,7 @@ func ConfigureDefaults(ctx context.Context, c client.Client, p *v1.IntegrationPl
}
if p.Status.Build.PublishStrategy == "" {
+ log.Debugf("Integration Platform [%s]: setting publishing strategy", p.Namespace)
if p.Status.Cluster == v1.IntegrationPlatformClusterOpenShift {
p.Status.Build.PublishStrategy = v1.IntegrationPlatformBuildPublishStrategyS2I
} else {
@@ -76,6 +78,7 @@ func ConfigureDefaults(ctx context.Context, c client.Client, p *v1.IntegrationPl
}
if p.Status.Build.BuildStrategy == "" {
+ log.Debugf("Integration Platform [%s]: setting build strategy", p.Namespace)
// Use the fastest strategy that they support (routine when possible)
if p.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyS2I ||
p.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategySpectrum {
@@ -114,6 +117,7 @@ func ConfigureDefaults(ctx context.Context, c client.Client, p *v1.IntegrationPl
}
func CreateBuilderServiceAccount(ctx context.Context, client client.Client, p *v1.IntegrationPlatform) error {
+ log.Debugf("Integration Platform [%s]: creating build service account", p.Namespace)
sa := corev1.ServiceAccount{}
key := ctrl.ObjectKey{
Name: BuilderServiceAccount,
@@ -132,6 +136,7 @@ func configureRegistry(ctx context.Context, c client.Client, p *v1.IntegrationPl
if p.Status.Cluster == v1.IntegrationPlatformClusterOpenShift &&
p.Status.Build.PublishStrategy != v1.IntegrationPlatformBuildPublishStrategyS2I &&
p.Status.Build.Registry.Address == "" {
+ log.Debugf("Integration Platform [%s]: setting registry address", p.Namespace)
// Default to using OpenShift internal container images registry when using a strategy other than S2I
p.Status.Build.Registry.Address = "image-registry.openshift-image-registry.svc:5000"
@@ -140,10 +145,12 @@ func configureRegistry(ctx context.Context, c client.Client, p *v1.IntegrationPl
if err != nil {
return err
}
+ log.Debugf("Integration Platform [%s]: setting registry certificate authority", p.Namespace)
p.Status.Build.Registry.CA = cm.Name
// Default to using the registry secret that's configured for the builder service account
if p.Status.Build.Registry.Secret == "" {
+ log.Debugf("Integration Platform [%s]: setting registry secret", p.Namespace)
// Bind the required role to push images to the registry
err := createBuilderRegistryRoleBinding(ctx, c, p)
if err != nil {
@@ -174,23 +181,30 @@ func configureRegistry(ctx context.Context, c client.Client, p *v1.IntegrationPl
p.Status.Build.Registry.Address = *address
}
}
+
+ log.Debugf("Final Registry Address: %s", p.Status.Build.Registry.Address)
return nil
}
func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
if p.Status.Build.PublishStrategyOptions == nil {
+ log.Debugf("Integration Platform [%s]: setting publish strategy options", p.Namespace)
p.Status.Build.PublishStrategyOptions = map[string]string{}
}
if p.Status.Build.RuntimeVersion == "" {
+ log.Debugf("Integration Platform [%s]: setting runtime version", p.Namespace)
p.Status.Build.RuntimeVersion = defaults.DefaultRuntimeVersion
}
if p.Status.Build.BaseImage == "" {
+ log.Debugf("Integration Platform [%s]: setting base image", p.Namespace)
p.Status.Build.BaseImage = defaults.BaseImage()
}
if p.Status.Build.Maven.LocalRepository == "" {
+ log.Debugf("Integration Platform [%s]: setting local repository", p.Namespace)
p.Status.Build.Maven.LocalRepository = defaults.LocalRepository
}
if len(p.Status.Build.Maven.CLIOptions) == 0 {
+ log.Debugf("Integration Platform [%s]: setting CLI options", p.Namespace)
p.Status.Build.Maven.CLIOptions = []string{
"-V",
"--no-transfer-progress",
@@ -198,6 +212,7 @@ func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
}
}
if _, ok := p.Status.Build.PublishStrategyOptions[builder.KanikoPVCName]; !ok {
+ log.Debugf("Integration Platform [%s]: setting publish strategy options", p.Namespace)
p.Status.Build.PublishStrategyOptions[builder.KanikoPVCName] = p.Name
}
@@ -208,6 +223,7 @@ func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
log.Log.Infof("Build timeout minimum unit is sec (configured: %s, truncated: %s)", p.Status.Build.GetTimeout().Duration, d)
}
+ log.Debugf("Integration Platform [%s]: setting build timeout", p.Namespace)
p.Status.Build.Timeout = &metav1.Duration{
Duration: d,
}
@@ -230,6 +246,7 @@ func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
}
if len(p.Status.Kamelet.Repositories) == 0 {
+ log.Debugf("Integration Platform [%s]: setting kamelet repositories", p.Namespace)
p.Status.Kamelet.Repositories = append(p.Status.Kamelet.Repositories, v1.IntegrationPlatformKameletRepositorySpec{
URI: repository.DefaultRemoteRepository,
})
@@ -248,11 +265,14 @@ func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
func setStatusAdditionalInfo(platform *v1.IntegrationPlatform) {
platform.Status.Info = make(map[string]string)
+
+ log.Debugf("Integration Platform [%s]: setting build publish strategy", platform.Namespace)
if platform.Spec.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyBuildah {
platform.Status.Info["buildahVersion"] = defaults.BuildahVersion
} else if platform.Spec.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyKaniko {
platform.Status.Info["kanikoVersion"] = defaults.KanikoVersion
}
+ log.Debugf("Integration Platform [%s]: setting status info", platform.Namespace)
platform.Status.Info["goVersion"] = runtime.Version()
platform.Status.Info["goOS"] = runtime.GOOS
platform.Status.Info["gitCommit"] = defaults.GitCommit
diff --git a/pkg/platform/operator.go b/pkg/platform/operator.go
index 2f6f2cff6..39008d423 100644
--- a/pkg/platform/operator.go
+++ b/pkg/platform/operator.go
@@ -30,6 +30,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/event"
"sigs.k8s.io/controller-runtime/pkg/predicate"
+ "github.com/apache/camel-k/pkg/util/log"
ctrl "sigs.k8s.io/controller-runtime/pkg/client"
)
@@ -46,8 +47,11 @@ var OperatorImage string
// IsCurrentOperatorGlobal returns true if the operator is configured to watch all namespaces.
func IsCurrentOperatorGlobal() bool {
if watchNamespace, envSet := os.LookupEnv(OperatorWatchNamespaceEnvVariable); !envSet || strings.TrimSpace(watchNamespace) == "" {
+ log.Debug("Operator is global to all namespaces")
return true
}
+
+ log.Debug("Operator is local to namespace")
return false
}
@@ -118,6 +122,7 @@ func IsOperatorAllowedOnNamespace(ctx context.Context, c ctrl.Reader, namespace
// allow global operators that use a proper operator id
if defaults.OperatorID() != "" {
+ log.Debugf("Operator ID: %s", defaults.OperatorID())
return true, nil
}
@@ -128,8 +133,11 @@ func IsOperatorAllowedOnNamespace(ctx context.Context, c ctrl.Reader, namespace
}
alreadyOwned, err := IsNamespaceLocked(ctx, c, namespace)
if err != nil {
+ log.Debugf("Error occurred while testing whether namespace is locked: %v", err)
return false, err
}
+
+ log.Debugf("Lock status of namespace %s: %t", namespace, alreadyOwned)
return !alreadyOwned, nil
}
diff --git a/pkg/platform/platform.go b/pkg/platform/platform.go
index 0f76690f6..2c354a4ba 100644
--- a/pkg/platform/platform.go
+++ b/pkg/platform/platform.go
@@ -22,6 +22,7 @@ import (
v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
"github.com/apache/camel-k/pkg/util/kubernetes"
+ "github.com/apache/camel-k/pkg/util/log"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
)
@@ -139,6 +140,8 @@ func findAny(ctx context.Context, c k8sclient.Reader, namespace string, active b
// findLocal returns the currently installed platform or any platform existing in local namespace.
func findLocal(ctx context.Context, c k8sclient.Reader, namespace string, active bool) (*v1.IntegrationPlatform, error) {
+ log.Debug("Finding available platforms")
+
lst, err := ListPrimaryPlatforms(ctx, c, namespace)
if err != nil {
return nil, err
@@ -147,6 +150,7 @@ func findLocal(ctx context.Context, c k8sclient.Reader, namespace string, active
for _, platform := range lst.Items {
platform := platform // pin
if IsActive(&platform) {
+ log.Debugf("Found active local integration platform %s", platform.Name)
return &platform, nil
}
}
@@ -154,9 +158,11 @@ func findLocal(ctx context.Context, c k8sclient.Reader, namespace string, active
if !active && len(lst.Items) > 0 {
// does not require the platform to be active, just return one if present
res := lst.Items[0]
+ log.Debugf("Found local integration platform %s", res.Name)
return &res, nil
}
+ log.Debugf("Not found a local integration platform")
return nil, k8serrors.NewNotFound(v1.Resource("IntegrationPlatform"), DefaultPlatformName)
}
diff --git a/pkg/util/kubernetes/client.go b/pkg/util/kubernetes/client.go
index 62261a212..9d0a896eb 100644
--- a/pkg/util/kubernetes/client.go
+++ b/pkg/util/kubernetes/client.go
@@ -30,11 +30,14 @@ import (
v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
"github.com/apache/camel-k/pkg/client"
+ "github.com/apache/camel-k/pkg/util/log"
)
func GetIntegrationPlatform(context context.Context, client ctrl.Reader, name string, namespace string) (*v1.IntegrationPlatform, error) {
platform := v1.NewIntegrationPlatform(namespace, name)
+ log.Debugf("Integration Platform [name: %s], [namespace: %s], [objectkey: %s]", name, namespace, ctrl.ObjectKeyFromObject(&platform))
if err := client.Get(context, ctrl.ObjectKeyFromObject(&platform), &platform); err != nil {
+ log.Debugf("Integration platform Error: %v", err)
return nil, err
}
@@ -43,7 +46,9 @@ func GetIntegrationPlatform(context context.Context, client ctrl.Reader, name st
func GetIntegrationKit(context context.Context, client ctrl.Reader, name string, namespace string) (*v1.IntegrationKit, error) {
kit := v1.NewIntegrationKit(namespace, name)
+ log.Debugf("Integration Kit [name: %s], [namespace: %s], [objectkey: %s]", name, namespace, ctrl.ObjectKeyFromObject(kit))
if err := client.Get(context, ctrl.ObjectKeyFromObject(kit), kit); err != nil {
+ log.Debugf("Integration kit Error: %v", err)
return nil, err
}
@@ -52,7 +57,9 @@ func GetIntegrationKit(context context.Context, client ctrl.Reader, name string,
func GetBuild(context context.Context, client client.Client, name string, namespace string) (*v1.Build, error) {
build := v1.NewBuild(namespace, name)
+ log.Debugf("Build [name: %s], [namespace: %s], [objectkey: %s]", name, namespace, ctrl.ObjectKeyFromObject(build))
if err := client.Get(context, ctrl.ObjectKeyFromObject(build), build); err != nil {
+ log.Debugf("Integration build Error: %v", err)
return nil, err
}
diff --git a/script/Makefile b/script/Makefile
index fe3c5957c..475c39afc 100644
--- a/script/Makefile
+++ b/script/Makefile
@@ -75,7 +75,7 @@ OPM := opm
# Used to push pre-release artifacts
STAGING_IMAGE_NAME := docker.io/camelk/camel-k
-STAGING_RUNTIME_REPO :=
+STAGING_RUNTIME_REPO :=
# Define here the repo containing the default Kamelet catalog (if any)
KAMELET_CATALOG_REPO := https://github.com/apache/camel-kamelets.git
@@ -260,24 +260,24 @@ test-fmt: do-build
#
test-integration: do-build
FAILED=0; STAGING_RUNTIME_REPO="$(STAGING_RUNTIME_REPO)"; \
- go test -timeout 60m -v ./e2e/global/common -tags=integration $(TEST_INTEGRATION_COMMON_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
- go test -timeout 60m -v ./e2e/global/common/build -tags=integration $(TEST_INTEGRATION_COMMON_BUILD_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
- go test -timeout 60m -v ./e2e/global/common/config -tags=integration $(TEST_INTEGRATION_COMMON_CONFIG_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
- go test -timeout 60m -v ./e2e/global/common/languages -tags=integration $(TEST_INTEGRATION_COMMON_LANG_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
- go test -timeout 60m -v ./e2e/global/common/traits -tags=integration $(TEST_INTEGRATION_COMMON_TRAITS_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
+ go test -timeout 90m -v ./e2e/global/common -tags=integration $(TEST_INTEGRATION_COMMON_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
+ go test -timeout 90m -v ./e2e/global/common/build -tags=integration $(TEST_INTEGRATION_COMMON_BUILD_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
+ go test -timeout 90m -v ./e2e/global/common/config -tags=integration $(TEST_INTEGRATION_COMMON_CONFIG_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
+ go test -timeout 90m -v ./e2e/global/common/languages -tags=integration $(TEST_INTEGRATION_COMMON_LANG_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
+ go test -timeout 90m -v ./e2e/global/common/traits -tags=integration $(TEST_INTEGRATION_COMMON_TRAITS_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
exit $${FAILED}
test-knative: do-build
STAGING_RUNTIME_REPO="$(STAGING_RUNTIME_REPO)" \
- go test -timeout 60m -v ./e2e/global/knative -tags=integration $(TEST_KNATIVE_RUN) -json 2>&1 | gotestfmt
+ go test -timeout 90m -v ./e2e/global/knative -tags=integration $(TEST_KNATIVE_RUN) -json 2>&1 | gotestfmt
test-builder: do-build
STAGING_RUNTIME_REPO="$(STAGING_RUNTIME_REPO)" \
- go test -timeout 60m -v ./e2e/global/builder -tags=integration $(TEST_BUILDER_RUN) -json 2>&1 | gotestfmt
+ go test -timeout 90m -v ./e2e/global/builder -tags=integration $(TEST_BUILDER_RUN) -json 2>&1 | gotestfmt
test-service-binding: do-build
STAGING_RUNTIME_REPO="$(STAGING_RUNTIME_REPO)" \
- go test -timeout 60m -v ./e2e/global/service-binding -tags=integration $(TEST_SERVICE_RUN) -json 2>&1 | gotestfmt
+ go test -timeout 90m -v ./e2e/global/service-binding -tags=integration $(TEST_SERVICE_RUN) -json 2>&1 | gotestfmt
test-local: do-build
STAGING_RUNTIME_REPO="$(STAGING_RUNTIME_REPO)" \
@@ -285,7 +285,7 @@ test-local: do-build
test-registry-maven-wagon: do-build
STAGING_RUNTIME_REPO="$(STAGING_RUNTIME_REPO)" \
- go test -timeout 60m -v ./e2e/global/registry -tags=integration $(TEST_REGISTRY_MAVEN_WAGON_RUN) -json 2>&1 | gotestfmt
+ go test -timeout 90m -v ./e2e/global/registry -tags=integration $(TEST_REGISTRY_MAVEN_WAGON_RUN) -json 2>&1 | gotestfmt
###############################
#
@@ -295,18 +295,18 @@ test-registry-maven-wagon: do-build
test-install: do-build
FAILED=0; STAGING_RUNTIME_REPO="$(STAGING_RUNTIME_REPO)"; \
- go test -timeout 60m -v ./e2e/namespace/install/ -tags=integration $(TEST_INSTALL_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
- go test -timeout 60m -v ./e2e/namespace/install/cli -tags=integration $(TEST_INSTALL_CLI_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
- go test -timeout 60m -v ./e2e/namespace/install/kustomize -tags=integration $(TEST_INSTALL_KUSTOMIZE_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
+ go test -timeout 90m -v ./e2e/namespace/install/ -tags=integration $(TEST_INSTALL_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
+ go test -timeout 90m -v ./e2e/namespace/install/cli -tags=integration $(TEST_INSTALL_CLI_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
+ go test -timeout 90m -v ./e2e/namespace/install/kustomize -tags=integration $(TEST_INSTALL_KUSTOMIZE_RUN) -json 2>&1 | gotestfmt || FAILED=1; \
exit $${FAILED}
test-quarkus-native: do-build
STAGING_RUNTIME_REPO="$(STAGING_RUNTIME_REPO)" \
- go test -timeout 60m -v ./e2e/namespace/native -tags=integration $(TEST_QUARKUS_RUN) -json 2>&1 | gotestfmt
+ go test -timeout 90m -v ./e2e/namespace/native -tags=integration $(TEST_QUARKUS_RUN) -json 2>&1 | gotestfmt
test-upgrade: do-build
STAGING_RUNTIME_REPO="$(STAGING_RUNTIME_REPO)" \
- go test -timeout 60m -v ./e2e/namespace/upgrade -tags=integration $(TEST_UPGRADE_RUN) -json 2>&1 | gotestfmt
+ go test -timeout 90m -v ./e2e/namespace/upgrade -tags=integration $(TEST_UPGRADE_RUN) -json 2>&1 | gotestfmt
build-kamel:
@echo "####### Building kamel CLI..."