From 6e50c61f375998e4d0280bae455b969137f40308 Mon Sep 17 00:00:00 2001 From: Fred L Sharp Date: Fri, 14 Jan 2022 11:40:26 -0800 Subject: [PATCH 1/4] Enable container log for unready integration tests --- tests/connectors/kubernetes_test.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/connectors/kubernetes_test.py b/tests/connectors/kubernetes_test.py index 8d4e73f7b..e53a1e1c7 100644 --- a/tests/connectors/kubernetes_test.py +++ b/tests/connectors/kubernetes_test.py @@ -1515,6 +1515,11 @@ class TestKubernetesConnectorIntegrationUnreadyCmd: def namespace(self, kube: kubetest.client.TestClient) -> str: return kube.namespace + @pytest.fixture + def config(config: KubernetesConfiguration) -> KubernetesConfiguration: + config.container_logs_in_error_status = True + return config + @pytest.fixture def kubetest_deployment(self, kube: kubetest.client.TestClient, rootpath: pathlib.Path) -> KubetestDeployment: deployment = kube.load_deployment(rootpath.joinpath("tests/manifests/fiber-http-opsani-dev.yaml")) From 28e4870fa59c607f2500153b45a4d9381dd55600 Mon Sep 17 00:00:00 2001 From: Fred L Sharp Date: Tue, 18 Jan 2022 11:05:05 -0800 Subject: [PATCH 2/4] Fix class fixture missing self arg --- tests/connectors/kubernetes_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/connectors/kubernetes_test.py b/tests/connectors/kubernetes_test.py index 5083f0a28..d6cbbfea6 100644 --- a/tests/connectors/kubernetes_test.py +++ b/tests/connectors/kubernetes_test.py @@ -1531,7 +1531,7 @@ def namespace(self, kube: kubetest.client.TestClient) -> str: return kube.namespace @pytest.fixture - def config(config: KubernetesConfiguration) -> KubernetesConfiguration: + def config(self, config: KubernetesConfiguration) -> KubernetesConfiguration: config.container_logs_in_error_status = True return config From 6e6c4026b40801a3a19d483f4a1cdb9e927183da Mon Sep 17 00:00:00 2001 From: Fred L Sharp Date: Tue, 18 Jan 2022 14:03:34 -0800 Subject: [PATCH 3/4] Fix flakey test due to sidecar scraped before target container --- tests/connectors/kube_metrics_test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/connectors/kube_metrics_test.py b/tests/connectors/kube_metrics_test.py index 40d5295d0..aac42d95e 100644 --- a/tests/connectors/kube_metrics_test.py +++ b/tests/connectors/kube_metrics_test.py @@ -74,13 +74,13 @@ async def wait_for_scrape(): **METRICS_CUSTOM_OJBECT_CONST_ARGS ) if result.get('items'): # items present and non-empty - break + if any(any(c['name'] == "fiber-http" for c in i["containers"]) for i in result['items'] ): + break except kubernetes_asyncio.client.exceptions.ApiException as e: if e.status == 503: continue # Takes a bit to start in GH runners??? raise await asyncio.wait_for(wait_for_scrape(), timeout=60) - await asyncio.sleep(1) # sometimes only one container has been scraped, add a bit of buffer to prevent this await connector.periodic_measure( target_resource=deployment, From 15e6343f155206b16a93b08bac9cf67abca4cf78 Mon Sep 17 00:00:00 2001 From: Fred L Sharp Date: Tue, 18 Jan 2022 14:13:27 -0800 Subject: [PATCH 4/4] Catch max retry and xfail falkey minikube --- tests/connectors/kube_metrics_test.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/connectors/kube_metrics_test.py b/tests/connectors/kube_metrics_test.py index aac42d95e..37a520cf8 100644 --- a/tests/connectors/kube_metrics_test.py +++ b/tests/connectors/kube_metrics_test.py @@ -1,5 +1,6 @@ import asyncio import pathlib +import urllib3.exceptions import freezegun import kubetest.client @@ -50,7 +51,11 @@ async def test_describe(kube_metrics_connector: KubeMetricsConnector): @pytest.mark.minikube_profile.with_args("metrics-server") @pytest.mark.applymanifests("../manifests", files=["fiber-http-opsani-dev.yaml"]) async def test_periodic_measure(kubeconfig: str, minikube: str, kube: kubetest.client.TestClient, servo_runner: ServoRunner): - kube.wait_for_registered() + try: + kube.wait_for_registered() + except urllib3.exceptions.MaxRetryError as e: + pytest.xfail(f"Connection refused: {e}") + datapoints_dicts: Dict[str, Dict[str, List[DataPoint]]] = defaultdict(lambda: defaultdict(list)) connector = KubeMetricsConnector(config=KubeMetricsConfiguration( name="fiber-http",