From 415a8f57465d427fde24021c67a75f2ea0b8f5cd Mon Sep 17 00:00:00 2001 From: QuantumEnigmaa Date: Wed, 31 Jul 2024 14:05:13 +0200 Subject: [PATCH 1/6] update ats tests --- .ats/main.yaml | 11 +- .circleci/config.yml | 19 +- CHANGELOG.md | 4 + tests/ats/Pipfile | 12 +- tests/ats/Pipfile.lock | 387 ++++++++++++++++++++++++++++---------- tests/ats/pytest.ini | 5 + tests/ats/test_grafana.py | 78 +++++++- tests/test-values.yaml | 113 +++++++++++ 8 files changed, 505 insertions(+), 124 deletions(-) create mode 100644 tests/ats/pytest.ini create mode 100644 tests/test-values.yaml diff --git a/.ats/main.yaml b/.ats/main.yaml index 6f65bf9..5d6b2d4 100644 --- a/.ats/main.yaml +++ b/.ats/main.yaml @@ -1,4 +1,11 @@ -skip-steps: smoke +app-tests-app-config-file: tests/test-values.yaml +app-tests-deploy-namespace: monitoring -functional-tests-cluster-type: kind +smoke-tests-cluster-type: kind + +upgrade-tests-cluster-type: kind +upgrade-tests-app-catalog-url: https://giantswarm.github.io/giantswarm-catalog +upgrade-tests-app-config-file: tests/test-values.yaml + +skip-steps: [functional] diff --git a/.circleci/config.yml b/.circleci/config.yml index f856828..6ec283f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -31,6 +31,16 @@ workflows: filters: tags: only: /^v.*/ + + - architect/run-tests-with-ats: + name: run-chart-tests-with-ats + filters: + # Do not trigger the job on merge to master. + branches: + ignore: + - master + requires: + - "app-catalog" - architect/push-to-app-collection: context: "architect" @@ -139,12 +149,3 @@ workflows: ignore: /.*/ tags: only: /^v.*/ -# - architect/run-tests-with-ats: -# name: execute chart tests -# filters: -# # Do not trigger the job on merge to master. -# branches: -# ignore: -# - master -# requires: -# - "package and push grafana chart" diff --git a/CHANGELOG.md b/CHANGELOG.md index f84b1d9..2b80a88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Update tests for ats usage. + ## [2.13.0] - 2024-07-15 ### Changed diff --git a/tests/ats/Pipfile b/tests/ats/Pipfile index e9f7c73..7145ceb 100644 --- a/tests/ats/Pipfile +++ b/tests/ats/Pipfile @@ -4,11 +4,11 @@ verify_ssl = true name = "pypi" [packages] -pytest-helm-charts = ">=0.3.1" -pytest = ">=6.1.2" -pytest-rerunfailures = "*" - -[dev-packages] +pytest-helm-charts = ">=1.0.2" +pytest = ">=6.2.5" +pykube-ng = ">=22.1.0" +pytest-rerunfailures = "~=14.0" +requests = "~=2.32.1" [requires] -python_version = "3.8" +python_version = "3.9" diff --git a/tests/ats/Pipfile.lock b/tests/ats/Pipfile.lock index 034ed4f..9e94fe0 100644 --- a/tests/ats/Pipfile.lock +++ b/tests/ats/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "52364405fe82027948910d1bcc5c2e6c3c8b5eb028654cc571411a6a723fb8dd" + "sha256": "36bfb8ab4590449e62b784f9b2e5bede28ed832e5f729bf6c22d62d4755f87c7" }, "pipfile-spec": 6, "requires": { - "python_version": "3.8" + "python_version": "3.9" }, "sources": [ { @@ -16,158 +16,351 @@ ] }, "default": { - "attrs": { - "hashes": [ - "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", - "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==20.3.0" - }, "certifi": { "hashes": [ - "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", - "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" + "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b", + "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90" ], - "version": "==2020.12.5" + "markers": "python_version >= '3.6'", + "version": "==2024.7.4" }, - "chardet": { + "charset-normalizer": { "hashes": [ - "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", - "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" + "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", + "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087", + "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786", + "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", + "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", + "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185", + "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", + "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", + "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519", + "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898", + "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269", + "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", + "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", + "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6", + "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8", + "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a", + "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", + "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", + "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714", + "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2", + "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", + "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", + "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d", + "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", + "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", + "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", + "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", + "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d", + "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a", + "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", + "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", + "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", + "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0", + "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", + "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", + "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac", + "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25", + "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", + "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", + "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", + "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2", + "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", + "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", + "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", + "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99", + "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c", + "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", + "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811", + "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", + "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", + "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", + "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", + "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04", + "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c", + "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", + "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458", + "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", + "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99", + "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985", + "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", + "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238", + "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f", + "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d", + "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796", + "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a", + "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", + "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8", + "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", + "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5", + "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5", + "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711", + "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4", + "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", + "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c", + "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", + "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4", + "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", + "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", + "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", + "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c", + "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", + "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8", + "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", + "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b", + "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", + "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", + "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", + "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33", + "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", + "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==4.0.0" + "markers": "python_full_version >= '3.7.0'", + "version": "==3.3.2" }, - "idna": { + "deprecated": { "hashes": [ - "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", - "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" + "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c", + "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.10" + "version": "==1.2.14" }, - "iniconfig": { + "exceptiongroup": { "hashes": [ - "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", - "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", + "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc" ], - "version": "==1.1.1" + "markers": "python_version < '3.11'", + "version": "==1.2.2" }, - "packaging": { + "idna": { "hashes": [ - "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5", - "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a" + "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc", + "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==20.9" + "markers": "python_version >= '3.5'", + "version": "==3.7" }, - "pluggy": { + "iniconfig": { "hashes": [ - "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", - "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", + "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.13.1" + "markers": "python_version >= '3.7'", + "version": "==2.0.0" }, - "py": { + "packaging": { "hashes": [ - "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", - "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" + "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", + "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.10.0" + "markers": "python_version >= '3.8'", + "version": "==24.1" }, - "pykube-ng": { + "pluggy": { "hashes": [ - "sha256:72c5fbff0da32ec1682927167742f4ebf7b33a1ad01035511d5fec2de208220f", - "sha256:d6a5f9101719d461db1f7e11cfdde4c1f8bae5c6a89f4c08e5008aae9327b338" + "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", + "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669" ], - "markers": "python_version >= '3.6'", - "version": "==20.10.0" + "markers": "python_version >= '3.8'", + "version": "==1.5.0" }, - "pyparsing": { + "pykube-ng": { "hashes": [ - "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", - "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" + "sha256:46de8e17ed87c1a1014667d60e7d94a1f3fa2b8037b41e67d32c28b5869af35d", + "sha256:63f20f634bfcd83966edec32f892286f75dffb817a2c097434ecc039e558ec8f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", - "version": "==2.4.7" + "index": "pypi", + "markers": "python_version >= '3.8' and python_version < '4'", + "version": "==23.6.0" }, "pytest": { "hashes": [ - "sha256:9d1edf9e7d0b84d72ea3dbcdfd22b35fb543a5e8f2a60092dd578936bf63d7f9", - "sha256:b574b57423e818210672e07ca1fa90aaf194a4f63f3ab909a2c67ebb22913839" + "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5", + "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce" ], "index": "pypi", - "version": "==6.2.2" + "markers": "python_version >= '3.8'", + "version": "==8.3.2" }, "pytest-helm-charts": { "hashes": [ - "sha256:39f96bd36b42c6575fee2e0522ea7d6d8ed97e6f621cede1b7a4e80616b130f1", - "sha256:e9cedf5e1027931e38c65b285d34650b0347a9ff1c3e72e0452e34578f08be3b" + "sha256:f6baddceee2541bdee5159cccadf0c9d0e04e4a80fc946a407196593d2d844a1", + "sha256:f74d4ca7513f176bc4e958100371c41bec023fce0c85747f311a2f2c09741417" ], "index": "pypi", - "version": "==0.3.1" + "markers": "python_full_version >= '3.8.1' and python_full_version < '4.0.0'", + "version": "==1.2.0" }, "pytest-rerunfailures": { "hashes": [ - "sha256:1cb11a17fc121b3918414eb5eaf314ee325f2e693ac7cb3f6abf7560790827f2", - "sha256:2eb7d0ad651761fbe80e064b0fd415cf6730cdbc53c16a145fd84b66143e609f" + "sha256:4197bdd2eaeffdbf50b5ea6e7236f47ff0e44d1def8dae08e409f536d84e7b32", + "sha256:4a400bcbcd3c7a4ad151ab8afac123d90eca3abe27f98725dc4d9702887d2e92" ], "index": "pypi", - "version": "==9.1.1" + "markers": "python_version >= '3.8'", + "version": "==14.0" }, "pyyaml": { "hashes": [ - "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf", - "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696", - "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393", - "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77", - "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922", - "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5", - "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8", - "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10", - "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc", - "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018", - "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e", - "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253", - "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183", - "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb", - "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185", - "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db", - "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46", - "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b", - "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63", - "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df", - "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==5.4.1" + "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5", + "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc", + "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df", + "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741", + "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206", + "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27", + "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595", + "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62", + "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98", + "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696", + "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290", + "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9", + "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d", + "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6", + "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867", + "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47", + "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486", + "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6", + "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3", + "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007", + "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938", + "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0", + "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c", + "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735", + "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d", + "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28", + "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4", + "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba", + "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8", + "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef", + "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5", + "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd", + "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3", + "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0", + "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515", + "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c", + "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c", + "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924", + "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34", + "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", + "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859", + "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673", + "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54", + "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a", + "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b", + "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab", + "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa", + "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c", + "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585", + "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d", + "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" + ], + "markers": "python_version >= '3.6'", + "version": "==6.0.1" }, "requests": { "hashes": [ - "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", - "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" + "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", + "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.25.1" + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==2.32.3" }, - "toml": { + "tomli": { "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", - "version": "==0.10.2" + "markers": "python_version < '3.11'", + "version": "==2.0.1" }, "urllib3": { "hashes": [ - "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", - "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" + "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472", + "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168" + ], + "markers": "python_version >= '3.8'", + "version": "==2.2.2" + }, + "wrapt": { + "hashes": [ + "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc", + "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81", + "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09", + "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e", + "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca", + "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0", + "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb", + "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487", + "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40", + "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c", + "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060", + "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202", + "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41", + "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9", + "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b", + "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664", + "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d", + "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362", + "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00", + "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc", + "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1", + "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267", + "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956", + "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966", + "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1", + "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228", + "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72", + "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d", + "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292", + "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0", + "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0", + "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36", + "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c", + "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5", + "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f", + "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73", + "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b", + "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2", + "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593", + "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39", + "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389", + "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf", + "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf", + "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89", + "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c", + "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c", + "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f", + "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440", + "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465", + "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136", + "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b", + "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8", + "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3", + "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8", + "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6", + "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e", + "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f", + "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c", + "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e", + "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8", + "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2", + "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020", + "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35", + "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d", + "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3", + "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537", + "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809", + "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d", + "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a", + "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.3" + "markers": "python_version >= '3.6'", + "version": "==1.16.0" } }, "develop": {} diff --git a/tests/ats/pytest.ini b/tests/ats/pytest.ini new file mode 100644 index 0000000..44023a2 --- /dev/null +++ b/tests/ats/pytest.ini @@ -0,0 +1,5 @@ +[pytest] +markers = + smoke + functional + upgrade diff --git a/tests/ats/test_grafana.py b/tests/ats/test_grafana.py index b670ed7..691f736 100644 --- a/tests/ats/test_grafana.py +++ b/tests/ats/test_grafana.py @@ -1,16 +1,74 @@ -from typing import cast +import logging +import requests +import time +from contextlib import contextmanager +from functools import partial +from pathlib import Path +from typing import Dict, List, Optional import pykube import pytest from pytest_helm_charts.clusters import Cluster +from pytest_helm_charts.k8s.deployment import wait_for_deployments_to_run +logger = logging.getLogger(__name__) -# when grafana pod is up, it might be still starting and returning 503 -@pytest.mark.flaky(reruns=10, reruns_delay=10) -@pytest.mark.functional -def test_grafana_login_page_available(kube_cluster: Cluster) -> None: - srv = cast(pykube.Service, pykube.Service.objects(kube_cluster.kube_client).get_or_none(name="grafana")) - if srv is None: - raise ValueError("'grafana service not found in the 'default' namespace") - login_page_res = srv.proxy_http_get("/login") - assert login_page_res.ok +namespace_name = "monitoring" +deployment_name= "grafana" + +timeout: int = 560 + +@pytest.mark.smoke +def test_api_working(kube_cluster: Cluster) -> None: + """Very minimalistic example of using the [kube_cluster](pytest_helm_charts.fixtures.kube_cluster) + fixture to get an instance of [Cluster](pytest_helm_charts.clusters.Cluster) under test + and access its [kube_client](pytest_helm_charts.clusters.Cluster.kube_client) property + to get access to Kubernetes API of cluster under test. + Please refer to [pykube](https://pykube.readthedocs.io/en/latest/api/pykube.html) to get docs + for [HTTPClient](https://pykube.readthedocs.io/en/latest/api/pykube.html#pykube.http.HTTPClient). + """ + assert kube_cluster.kube_client is not None + assert len(pykube.Node.objects(kube_cluster.kube_client)) >= 1 + +# scope "module" means this is run only once, for the first test case requesting! It might be tricky +# if you want to assert this multiple times +@pytest.fixture(scope="module") +def ic_deployment(request, kube_cluster: Cluster) -> List[pykube.Deployment]: + logger.info("Waiting for grafana deployment..") + + deployment_ready = wait_for_ic_deployment(kube_cluster) + + logger.info("grafana deployment looks satisfied..") + + return deployment_ready + +def wait_for_ic_deployment(kube_cluster: Cluster) -> List[pykube.Deployment]: + deployments = wait_for_deployments_to_run( + kube_cluster.kube_client, + [deployment_name], + namespace_name, + timeout, + ) + return deployments + + +@pytest.fixture(scope="module") +def pods(kube_cluster: Cluster) -> List[pykube.Pod]: + pods = pykube.Pod.objects(kube_cluster.kube_client) + + pods = pods.filter(namespace=namespace_name, selector={ + 'app.kubernetes.io/name': 'grafana', 'app.kubernetes.io/instance': 'grafana'}) + + return pods + +# when we start the tests on circleci, we have to wait for pods to be available, hence +# this additional delay and retries + + +@pytest.mark.smoke +@pytest.mark.upgrade +@pytest.mark.flaky(reruns=5, reruns_delay=10) +def test_pods_available(kube_cluster: Cluster, ic_deployment: List[pykube.Deployment]): + for s in ic_deployment: + assert int(s.obj["status"]["readyReplicas"]) == int( + s.obj["spec"]["replicas"]) diff --git a/tests/test-values.yaml b/tests/test-values.yaml new file mode 100644 index 0000000..76ac11a --- /dev/null +++ b/tests/test-values.yaml @@ -0,0 +1,113 @@ +global: + imageRegistry: gsoci.azurecr.io +grafana: + dashboardProviders: + dashboardproviders.yaml: + apiVersion: 1 + providers: + - allowUiUpdates: false + disableDeletion: true + editable: false + folder: Giant Swarm private dashboards + folderUid: GMtRhFeGz + name: private + options: + path: /var/lib/grafana/dashboards/private + type: file + updateIntervalSeconds: 60 + - allowUiUpdates: false + disableDeletion: true + editable: false + folder: Giant Swarm public dashboards + folderUid: b6utHHg7z + name: public + options: + path: /var/lib/grafana/dashboards/public + type: file + updateIntervalSeconds: 60 + - allowUiUpdates: false + disableDeletion: true + editable: false + folder: Your dashboards + folderUid: customerDashboards + name: customer-provided + options: + path: /var/lib/grafana/dashboards/customer + type: file + updateIntervalSeconds: 60 + grafana.ini: + analytics: + check_for_updates: false + feedback_links_enabled: false + reporting_enabled: false + auth: + disable_login_form: true + disable_signout_menu: true + auth.basic: + enabled: true + auth.generic_oauth: + allow_assign_grafana_admin: true + allow_sign_up: true + api_url: https://dex.grizzly.gaws.gigantic.io/userinfo + auth_url: https://dex.grizzly.gaws.gigantic.io/auth + auto_login: true + client_id: 2qRgNb5qQBk3QqWxI1WLgB5zTQ1M4eB+ + enabled: true + name: grafana-dex + role_attribute_path: contains(groups, 'giantswarm-ad:giantswarm-admins') && + 'GrafanaAdmin' || contains(groups, 'customer:giantswarm:Employees') && 'Viewer' + || contains (groups, 'giantswarm-github:giantswarm:giantswarm-admins') && + 'GrafanaAdmin' + role_attribute_strict: true + scopes: openid profile email groups offline_access + token_url: https://dex.grizzly.gaws.gigantic.io/token + use_refresh_token: true + dashboards: + default_home_dashboard_path: /var/lib/grafana/dashboards/public/home/home.json + public_dashboards: + enabled: false + security: + cookie_secure: true + disable_gravatar: true + server: + protocol: http + root_url: https://grafana.grizzly.gaws.gigantic.io + users: + allow_org_create: false + allow_sign_up: false + viewers_can_edit: true + image: + repository: giantswarm/grafana + ingress: + annotations: + cert-manager.io/cluster-issuer: letsencrypt-giantswarm + kubernetes.io/tls-acme: "true" + enabled: true + hosts: + - grafana.grizzly.gaws.gigantic.io + ingressClassName: nginx + tls: + - hosts: + - grafana.grizzly.gaws.gigantic.io + secretName: grafana-tls + rbac: + pspEnabled: false + serviceMonitor: + enabled: true + sidecar: + dashboards: + SCProvider: false + enabled: true + folder: /var/lib/grafana/dashboards + label: app.giantswarm.io/kind + labelValue: dashboard + searchNamespace: ALL + datasources: + enabled: true + label: app.giantswarm.io/kind + labelValue: datasource + resource: both + searchNamespace: ALL + image: + repository: giantswarm/k8s-sidecar + From e1673faab7e2caea80a46611164b9f5bfe7e6a8c Mon Sep 17 00:00:00 2001 From: QuantumEnigmaa Date: Wed, 31 Jul 2024 14:35:30 +0200 Subject: [PATCH 2/6] removing seemingly unnecessary imports --- tests/ats/Pipfile | 1 - tests/ats/Pipfile.lock | 3 +-- tests/ats/test_grafana.py | 11 +++-------- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/tests/ats/Pipfile b/tests/ats/Pipfile index 7145ceb..7ffb195 100644 --- a/tests/ats/Pipfile +++ b/tests/ats/Pipfile @@ -8,7 +8,6 @@ pytest-helm-charts = ">=1.0.2" pytest = ">=6.2.5" pykube-ng = ">=22.1.0" pytest-rerunfailures = "~=14.0" -requests = "~=2.32.1" [requires] python_version = "3.9" diff --git a/tests/ats/Pipfile.lock b/tests/ats/Pipfile.lock index 9e94fe0..fb7bd97 100644 --- a/tests/ats/Pipfile.lock +++ b/tests/ats/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "36bfb8ab4590449e62b784f9b2e5bede28ed832e5f729bf6c22d62d4755f87c7" + "sha256": "f4063f0b9787b8477d79387411498860e1de6033d4206ded0310b5c4ce38c60e" }, "pipfile-spec": 6, "requires": { @@ -266,7 +266,6 @@ "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6" ], - "index": "pypi", "markers": "python_version >= '3.8'", "version": "==2.32.3" }, diff --git a/tests/ats/test_grafana.py b/tests/ats/test_grafana.py index 691f736..67a3b29 100644 --- a/tests/ats/test_grafana.py +++ b/tests/ats/test_grafana.py @@ -1,10 +1,5 @@ import logging -import requests -import time -from contextlib import contextmanager -from functools import partial -from pathlib import Path -from typing import Dict, List, Optional +from typing import List import pykube import pytest @@ -33,7 +28,7 @@ def test_api_working(kube_cluster: Cluster) -> None: # scope "module" means this is run only once, for the first test case requesting! It might be tricky # if you want to assert this multiple times @pytest.fixture(scope="module") -def ic_deployment(request, kube_cluster: Cluster) -> List[pykube.Deployment]: +def ic_deployment(kube_cluster: Cluster) -> List[pykube.Deployment]: logger.info("Waiting for grafana deployment..") deployment_ready = wait_for_ic_deployment(kube_cluster) @@ -68,7 +63,7 @@ def pods(kube_cluster: Cluster) -> List[pykube.Pod]: @pytest.mark.smoke @pytest.mark.upgrade @pytest.mark.flaky(reruns=5, reruns_delay=10) -def test_pods_available(kube_cluster: Cluster, ic_deployment: List[pykube.Deployment]): +def test_pods_available(ic_deployment: List[pykube.Deployment]): for s in ic_deployment: assert int(s.obj["status"]["readyReplicas"]) == int( s.obj["spec"]["replicas"]) From 011b7dd4986f7801b45271c99a72b243d03f34f1 Mon Sep 17 00:00:00 2001 From: QuantumEnigmaa Date: Wed, 31 Jul 2024 15:52:54 +0200 Subject: [PATCH 3/6] add helm templating test --- .circleci/config.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6ec283f..564e977 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,6 +1,14 @@ version: 2.1 orbs: architect: giantswarm/architect@5.3.1 +jobs: + template-chart: + docker: + - image: giantswarm/helm-chart-testing:v3.11.0 + steps: + - checkout + - run: cd helm/grafana && helm dep up + - run: helm template helm/grafana workflows: package-and-push-chart-on-tag: @@ -31,6 +39,15 @@ workflows: filters: tags: only: /^v.*/ + + - template-chart: + name: "template-chart" + filters: + branches: + ignore: + - master + requires: + - "app-catalog" - architect/run-tests-with-ats: name: run-chart-tests-with-ats From eed72c1140e1d46817de743648bd560026058bdf Mon Sep 17 00:00:00 2001 From: QuantumEnigmaa Date: Thu, 1 Aug 2024 09:29:16 +0200 Subject: [PATCH 4/6] nitpicking --- tests/ats/test_grafana.py | 8 ++------ tests/test-values.yaml | 1 - 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/tests/ats/test_grafana.py b/tests/ats/test_grafana.py index 67a3b29..9d590f2 100644 --- a/tests/ats/test_grafana.py +++ b/tests/ats/test_grafana.py @@ -15,12 +15,8 @@ @pytest.mark.smoke def test_api_working(kube_cluster: Cluster) -> None: - """Very minimalistic example of using the [kube_cluster](pytest_helm_charts.fixtures.kube_cluster) - fixture to get an instance of [Cluster](pytest_helm_charts.clusters.Cluster) under test - and access its [kube_client](pytest_helm_charts.clusters.Cluster.kube_client) property - to get access to Kubernetes API of cluster under test. - Please refer to [pykube](https://pykube.readthedocs.io/en/latest/api/pykube.html) to get docs - for [HTTPClient](https://pykube.readthedocs.io/en/latest/api/pykube.html#pykube.http.HTTPClient). + """ + Testing apiserver availability. """ assert kube_cluster.kube_client is not None assert len(pykube.Node.objects(kube_cluster.kube_client)) >= 1 diff --git a/tests/test-values.yaml b/tests/test-values.yaml index 76ac11a..a7280d1 100644 --- a/tests/test-values.yaml +++ b/tests/test-values.yaml @@ -110,4 +110,3 @@ grafana: searchNamespace: ALL image: repository: giantswarm/k8s-sidecar - From 91773fd4d3174e3f779f4d10ac98fb660f4107a9 Mon Sep 17 00:00:00 2001 From: QuantumEnigmaa Date: Mon, 5 Aug 2024 10:56:38 +0200 Subject: [PATCH 5/6] move templating chart test before all jobs --- .circleci/config.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9477a51..b80745a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -13,6 +13,13 @@ jobs: workflows: package-and-push-chart-on-tag: jobs: + - template-chart: + name: "template-chart" + filters: + branches: + ignore: + - master + - architect/push-to-app-catalog: context: "architect" executor: "app-build-suite" @@ -26,6 +33,8 @@ workflows: filters: tags: only: /^v.*/ + requires: + - "template-chart" - architect/push-to-app-catalog: context: "architect" @@ -39,15 +48,8 @@ workflows: filters: tags: only: /^v.*/ - - - template-chart: - name: "template-chart" - filters: - branches: - ignore: - - master requires: - - "app-catalog" + - "template-chart" - architect/run-tests-with-ats: name: run-chart-tests-with-ats From 4facda80d76723cee62d590c883516e63caa6427 Mon Sep 17 00:00:00 2001 From: QuantumEnigmaa Date: Mon, 19 Aug 2024 14:28:05 +0200 Subject: [PATCH 6/6] remove useless blank lines --- tests/ats/test_grafana.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/ats/test_grafana.py b/tests/ats/test_grafana.py index 9d590f2..fcc5bf7 100644 --- a/tests/ats/test_grafana.py +++ b/tests/ats/test_grafana.py @@ -54,8 +54,6 @@ def pods(kube_cluster: Cluster) -> List[pykube.Pod]: # when we start the tests on circleci, we have to wait for pods to be available, hence # this additional delay and retries - - @pytest.mark.smoke @pytest.mark.upgrade @pytest.mark.flaky(reruns=5, reruns_delay=10)