Skip to content

Add e2e test for app-wide-upgrade-strategy #842

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

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions test/e2e/suite/005-app-wide-update-strategy/01-assert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: image-updater-005-01
status:
health:
status: Healthy
sync:
status: Synced
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: image-updater-005-02
status:
health:
status: Healthy
sync:
status: Synced
55 changes: 55 additions & 0 deletions test/e2e/suite/005-app-wide-update-strategy/01-install.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
apiVersion: v1
kind: Namespace
metadata:
name: image-updater-e2e-005-01
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: image-updater-005-01
annotations:
argocd-image-updater.argoproj.io/image-list: guestbook=gcr.io/heptio-images/ks-guestbook-demo:~0
argocd-image-updater.argoproj.io/guestbook.update-strategy: semver
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
source:
repoURL: https://github.com/argoproj/argocd-example-apps.git
path: kustomize-guestbook
targetRevision: HEAD
destination:
server: https://kubernetes.default.svc
namespace: image-updater-e2e-005-01
syncPolicy:
automated: {}
retry:
limit: 2
---
apiVersion: v1
kind: Namespace
metadata:
name: image-updater-e2e-005-02
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: image-updater-005-02
annotations:
argocd-image-updater.argoproj.io/image-list: guestbook=gcr.io/heptio-images/ks-guestbook-demo:latest
argocd-image-updater.argoproj.io/guestbook.update-strategy: latest
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
source:
repoURL: https://github.com/argoproj/argocd-example-apps.git
path: kustomize-guestbook
targetRevision: HEAD
destination:
server: https://kubernetes.default.svc
namespace: image-updater-e2e-005-02
syncPolicy:
automated: {}
retry:
limit: 2
40 changes: 40 additions & 0 deletions test/e2e/suite/005-app-wide-update-strategy/02-assert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: image-updater-005-01
spec:
source:
kustomize:
images:
- gcr.io/heptio-images/ks-guestbook-demo:0.2
status:
health:
status: Healthy
sync:
status: Synced
---
apiVersion: v1
kind: Pod
metadata:
namespace: image-updater-e2e-005-01
spec:
containers:
- image: gcr.io/heptio-images/ks-guestbook-demo:0.2
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: image-updater-005-02
status:
health:
status: Healthy
sync:
status: Synced
---
apiVersion: v1
kind: Pod
metadata:
namespace: image-updater-e2e-005-02
spec:
containers:
- image: gcr.io/heptio-images/ks-guestbook-demo:0.1
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- script: |
${SRC_DIR}/dist/argocd-image-updater run --once \
--argocd-namespace argocd-image-updater-e2e \
--loglevel info
16 changes: 16 additions & 0 deletions test/e2e/suite/005-app-wide-update-strategy/99-delete.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
timeout: 120
delete:
- apiVersion: argoproj.io/v1alpha1
kind: Application
name: image-updater-005-01
- apiVersion: v1
kind: Namespace
name: image-updater-e2e-005-01
- apiVersion: argoproj.io/v1alpha1
kind: Application
name: image-updater-005-02
- apiVersion: v1
kind: Namespace
name: image-updater-e2e-005-02
68 changes: 68 additions & 0 deletions test/e2e/suite/005-app-wide-update-strategy/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
This test case verifies [app wide update strategy](https://argocd-image-updater.readthedocs.io/en/stable/configuration/images/#update-strategies)

This test case uses image from public container registry and application source from public GitHub repo.

To run this individual test case,

* make sure both docker daemon and k8s cluster is running
* `cd $HOME/go/src/image-updater/test/e2e`
* `SRC_DIR=$HOME/go/src/image-updater kubectl kuttl test --namespace argocd-image-updater-e2e --timeout 120 --test 005-app-wide-update-strategy`

Test output:
```bash
=== RUN kuttl
harness.go:464: starting setup
harness.go:255: running tests using configured kubeconfig.
harness.go:278: Successful connection to cluster at: https://127.0.0.1:6443
harness.go:363: running tests
harness.go:75: going to run test suite with timeout of 120 seconds for each step
harness.go:375: testsuite: ./suite has 7 tests
=== RUN kuttl/harness
=== RUN kuttl/harness/005-app-wide-update-strategy
=== PAUSE kuttl/harness/005-app-wide-update-strategy
=== CONT kuttl/harness/005-app-wide-update-strategy
logger.go:42: 17:59:36 | 005-app-wide-update-strategy | Ignoring README.md as it does not match file name regexp: ^(\d+)-(?:[^\.]+)(?:\.yaml)?$
logger.go:42: 17:59:36 | 005-app-wide-update-strategy | Skipping creation of user-supplied namespace: argocd-image-updater-e2e
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/1-install | starting test step 1-install
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/1-install | Namespace:/image-updater-e2e-005-01 updated
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/1-install | Application:argocd-image-updater-e2e/image-updater-005-01 updated
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/1-install | Namespace:/image-updater-e2e-005-02 updated
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/1-install | Application:argocd-image-updater-e2e/image-updater-005-02 updated
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/1-install | test step completed 1-install
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | starting test step 2-run-updater
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | running command: [sh -c ${SRC_DIR}/dist/argocd-image-updater run --once \
--argocd-namespace argocd-image-updater-e2e \
--loglevel info
]
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=info msg="argocd-image-updater v99.9.9+6c9e2ee starting [loglevel:INFO, interval:once, healthport:off]"
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=warning msg="commit message template at /app/config/commit.template does not exist, using default"
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=warning msg="Registry configuration at /app/config/registries.conf could not be read: stat /app/config/registries.conf: no such file or directory -- using default configuration"
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=info msg="ArgoCD configuration: [apiKind=kubernetes, server=argocd-server.argocd-image-updater-e2e, auth_token=false, insecure=false, grpc_web=false, plaintext=false]"
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=info msg="Starting metrics server on TCP port=8081"
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=info msg="Warming up image cache"
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=warning msg="Unknown sort option skip -- using semver" image_alias=guestbook image_digest= image_name=gcr.io/heptio-images/ks-guestbook-demo image_tag=0.1 registry_url=gcr.io
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=info msg="Setting new image to gcr.io/heptio-images/ks-guestbook-demo:0.1" alias=guestbook application=image-updater-005-02 image_name=heptio-images/ks-guestbook-demo image_tag=0.2 registry=gcr.io
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=info msg="Successfully updated image 'gcr.io/heptio-images/ks-guestbook-demo:0.2' to 'gcr.io/heptio-images/ks-guestbook-demo:0.1', but pending spec update (dry run=true)" alias=guestbook application=image-updater-005-02 image_name=heptio-images/ks-guestbook-demo image_tag=0.2 registry=gcr.io
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=info msg="Dry run - not committing 1 changes to application" application=image-updater-005-02
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=info msg="Finished cache warm-up, pre-loaded 0 meta data entries from 2 registries"
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=info msg="Starting image update cycle, considering 2 annotated application(s) for update"
logger.go:42: 17:59:36 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:36-04:00" level=warning msg="Unknown sort option skip -- using semver" image_alias=guestbook image_digest= image_name=gcr.io/heptio-images/ks-guestbook-demo image_tag=0.1 registry_url=gcr.io
logger.go:42: 17:59:37 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:37-04:00" level=info msg="Setting new image to gcr.io/heptio-images/ks-guestbook-demo:0.1" alias=guestbook application=image-updater-005-02 image_name=heptio-images/ks-guestbook-demo image_tag=0.2 registry=gcr.io
logger.go:42: 17:59:37 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:37-04:00" level=info msg="Successfully updated image 'gcr.io/heptio-images/ks-guestbook-demo:0.2' to 'gcr.io/heptio-images/ks-guestbook-demo:0.1', but pending spec update (dry run=false)" alias=guestbook application=image-updater-005-02 image_name=heptio-images/ks-guestbook-demo image_tag=0.2 registry=gcr.io
logger.go:42: 17:59:37 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:37-04:00" level=info msg="Committing 1 parameter update(s) for application image-updater-005-02" application=image-updater-005-02
logger.go:42: 17:59:37 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:37-04:00" level=info msg="Successfully updated the live application spec" application=image-updater-005-02
logger.go:42: 17:59:37 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:37-04:00" level=info msg="Processing results: applications=2 images_considered=2 images_skipped=0 images_updated=1 errors=0"
logger.go:42: 17:59:37 | 005-app-wide-update-strategy/2-run-updater | time="2024-09-09T17:59:37-04:00" level=info msg=Finished.
logger.go:42: 17:59:38 | 005-app-wide-update-strategy/2-run-updater | test step completed 2-run-updater
logger.go:42: 17:59:38 | 005-app-wide-update-strategy/99-delete | starting test step 99-delete
logger.go:42: 17:59:38 | 005-app-wide-update-strategy/99-delete | test step completed 99-delete
logger.go:42: 17:59:38 | 005-app-wide-update-strategy | skipping kubernetes event logging
=== NAME kuttl
harness.go:407: run tests finished
harness.go:515: cleaning up
harness.go:572: removing temp folder: ""
--- PASS: kuttl (2.18s)
--- PASS: kuttl/harness (0.00s)
--- PASS: kuttl/harness/005-app-wide-update-strategy (2.17s)
PASS
```