===== app-contract-nightly-mdc6d-archive-logs-pod.log ===== [pod/app-contract-nightly-mdc6d-archive-logs-pod/prepare] 2026-07-20T22:17:46.231460945-05:00 2026/07/21 03:17:46 Entrypoint initialization [pod/app-contract-nightly-mdc6d-archive-logs-pod/place-scripts] 2026-07-20T22:17:46.803554321-05:00 2026/07/21 03:17:46 Decoded script /tekton/scripts/script-0-lncpx [pod/app-contract-nightly-mdc6d-archive-logs-pod/place-scripts] 2026-07-20T22:17:46.897387620-05:00 2026/07/21 03:17:46 Decoded script /tekton/scripts/script-1-4s49f [pod/app-contract-nightly-mdc6d-archive-logs-pod/step-collect-logs] 2026-07-20T22:17:51.565832681-05:00 ==> collecting pod logs for PipelineRun=app-contract-nightly-mdc6d ===== app-contract-nightly-mdc6d-contract-pod.log ===== [pod/app-contract-nightly-mdc6d-contract-pod/prepare] 2026-07-20T22:17:07.835212689-05:00 2026/07/21 03:17:07 Entrypoint initialization [pod/app-contract-nightly-mdc6d-contract-pod/place-scripts] 2026-07-20T22:17:09.443377267-05:00 2026/07/21 03:17:09 Decoded script /tekton/scripts/script-0-wx4xg [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:13.783681229-05:00 resolved deployed image: registry.storeminder.ai/images/app:cf42d032221dcf33bd849cf0a5b75c912e107374 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:13.974709020-05:00 job.batch/app-contract-20260721-031713 created [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:41.329863797-05:00 ----- contract Job logs (app-contract-20260721-031713) ----- [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.331888888-05:00 Installing pytest (runtime image has no test deps)… [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335388347-05:00 Running LIVE read-only contract + parity suite: tests/contract [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335447486-05:00 ============================= test session starts ============================== [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335461416-05:00 platform linux -- Python 3.12.7, pytest-9.1.1, pluggy-1.6.0 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335471716-05:00 django: version: 5.2.16, settings: config.settings (from env) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335482476-05:00 rootdir: /app [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335495156-05:00 configfile: pytest.ini [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335503806-05:00 plugins: django-4.12.0, cov-7.1.0, anyio-4.14.1 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335513226-05:00 collected 28 items [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335521746-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335531666-05:00 tests/contract/test_fixture_parity.py FFFsss [ 21%] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335538296-05:00 tests/contract/test_grafana_contract.py sss [ 32%] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335545836-05:00 tests/contract/test_headscale_contract.py .F. [ 42%] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335554486-05:00 tests/contract/test_mender_contract.py ssss [ 57%] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335561866-05:00 tests/contract/test_rundeck_contract.py FFF [ 67%] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335575025-05:00 tests/contract/test_shape_selfcheck.py ......... [100%] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335589665-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335610585-05:00 =================================== FAILURES =================================== [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335622985-05:00 __________________________ test_parity_headscale_node __________________________ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335631935-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335645895-05:00 def test_parity_headscale_node(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335658955-05:00 hs = _live.live_headscale() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335671395-05:00 live = (_live.get_json(hs, "/api/v1/node").get("nodes") or [None])[0] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335681615-05:00 assert live is not None, "no live headscale node to diff" [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335689625-05:00 > _assert_parity( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335703425-05:00 _shapes.HEADSCALE_NODE, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335723725-05:00 live, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335738044-05:00 { [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335752354-05:00 "integrations/fixtures/headscale_nodes.json": _stub("headscale_nodes.json")["nodes"][0], [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335766024-05:00 "tests.fixtures.headscale_nodes()": fixtures.headscale_nodes()["nodes"][0], [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335774094-05:00 }, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335781804-05:00 ) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335822134-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335841094-05:00 tests/contract/test_fixture_parity.py:55: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335863544-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335875354-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335891984-05:00 spec = ShapeSpec(label='headscale.node', required=frozenset({'name', 'id', 'lastSeen', 'ipAddresses', 'online', 'user'}), any_of=(frozenset({'validTags', 'forcedTags'}),), optional=frozenset()) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335910653-05:00 live_item = {'id': '22', 'machineKey': 'mkey:c95b85dcda493047ea984d4c8feffb69ae453c3136b247b66a4a395acb0e031a', 'nodeKey': 'nodeke...f032f97d0a60d747b1f076f', 'discoKey': 'discokey:13727c44cc12a1446d2bc80df8989e56c7ddc788bd529689fb5d81826df92b59', ...} [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335970703-05:00 refs = {'integrations/fixtures/headscale_nodes.json': {'id': '1', 'name': 'sm-x86-001', 'user': {'name': 'edge'}, 'ipAddresse... 'nodeKey': 'nodekey:0000000000000000000000000000000000000000000000000000000000000001', 'user': {'name': 'edge'}, ...}} [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335984593-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.335993213-05:00 def _assert_parity(spec, live_item, refs: dict): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336001793-05:00 """Diff ``live_item`` against each named reference; fail on any critical drift.""" [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336011913-05:00 problems = [] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336019263-05:00 for ref_name, ref_item in refs.items(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336024563-05:00 report = _shapes.parity(spec, live_item, ref_item) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336029303-05:00 print(f"\n=== {spec.label} vs {ref_name} ===\n{report.describe()}") [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336035173-05:00 if report.critical(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336041653-05:00 problems.append(f"{spec.label} vs {ref_name}:\n{report.describe()}") [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336046993-05:00 > assert not problems, "STUB-VS-REALITY DRIFT:\n\n" + "\n\n".join(problems) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336053853-05:00 E AssertionError: STUB-VS-REALITY DRIFT: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336060803-05:00 E [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336067963-05:00 E headscale.node vs integrations/fixtures/headscale_nodes.json: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336078322-05:00 E [headscale.node] live-vs-stub parity: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336083322-05:00 E CRITICAL one-of ['forcedTags', 'validTags'] absent from LIVE [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336096292-05:00 E DRIFT: stub carries client-read key(s) LIVE no longer emits: ['validTags'] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336104852-05:00 E info: live adds field(s) the client ignores: ['approvedRoutes', 'availableRoutes', 'createdAt', 'discoKey', 'expiry', 'givenName', 'machineKey', 'nodeKey', 'preAuthKey', 'registerMethod', 'subnetRoutes', 'tags'] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336113572-05:00 E [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336124472-05:00 E headscale.node vs tests.fixtures.headscale_nodes(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336131502-05:00 E [headscale.node] live-vs-stub parity: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336139282-05:00 E CRITICAL one-of ['forcedTags', 'validTags'] absent from LIVE [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336143902-05:00 E DRIFT: stub carries client-read key(s) LIVE no longer emits: ['forcedTags', 'validTags'] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336151072-05:00 E info: live adds field(s) the client ignores: ['approvedRoutes', 'availableRoutes', 'createdAt', 'discoKey', 'preAuthKey', 'registerMethod', 'subnetRoutes', 'tags'] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336214582-05:00 E assert not ["headscale.node vs integrations/fixtures/headscale_nodes.json:\n[headscale.node] live-vs-stub parity:\n CRITICAL one...'approvedRoutes', 'availableRoutes', 'createdAt', 'discoKey', 'preAuthKey', 'registerMethod', 'subnetRoutes', 'tags']"] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336226032-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336232332-05:00 tests/contract/test_fixture_parity.py:48: AssertionError [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336240712-05:00 ----------------------------- Captured stdout call ----------------------------- [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336275851-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336282771-05:00 === headscale.node vs integrations/fixtures/headscale_nodes.json === [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336288331-05:00 [headscale.node] live-vs-stub parity: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336294211-05:00 CRITICAL one-of ['forcedTags', 'validTags'] absent from LIVE [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336302961-05:00 DRIFT: stub carries client-read key(s) LIVE no longer emits: ['validTags'] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336329121-05:00 info: live adds field(s) the client ignores: ['approvedRoutes', 'availableRoutes', 'createdAt', 'discoKey', 'expiry', 'givenName', 'machineKey', 'nodeKey', 'preAuthKey', 'registerMethod', 'subnetRoutes', 'tags'] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336333771-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336345651-05:00 === headscale.node vs tests.fixtures.headscale_nodes() === [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336363311-05:00 [headscale.node] live-vs-stub parity: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336374431-05:00 CRITICAL one-of ['forcedTags', 'validTags'] absent from LIVE [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336386471-05:00 DRIFT: stub carries client-read key(s) LIVE no longer emits: ['forcedTags', 'validTags'] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336396161-05:00 info: live adds field(s) the client ignores: ['approvedRoutes', 'availableRoutes', 'createdAt', 'discoKey', 'preAuthKey', 'registerMethod', 'subnetRoutes', 'tags'] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336401901-05:00 ________________________ test_parity_rundeck_execution _________________________ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336408150-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336414140-05:00 @contextlib.contextmanager [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336419050-05:00 def map_httpcore_exceptions() -> typing.Iterator[None]: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336427170-05:00 global HTTPCORE_EXC_MAP [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336433200-05:00 if len(HTTPCORE_EXC_MAP) == 0: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336444300-05:00 HTTPCORE_EXC_MAP = _load_httpcore_exceptions() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336449250-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336455020-05:00 > yield [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336460240-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336465240-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:101: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336472760-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336482560-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:250: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336490320-05:00 resp = self._pool.handle_request(req) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336498180-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336505740-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py:256: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336511700-05:00 raise exc from None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336519260-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py:236: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336526710-05:00 response = connection.handle_request( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336532790-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py:101: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336544140-05:00 raise exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336548950-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py:78: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336554980-05:00 stream = self._connect(request) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336562100-05:00 ^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336568880-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py:124: in _connect [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336576739-05:00 stream = self._network_backend.connect_tcp(**kwargs) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336583239-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336588649-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_backends/sync.py:207: in connect_tcp [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336594969-05:00 with map_exceptions(exc_map): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336604579-05:00 ^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336614049-05:00 /usr/local/lib/python3.12/contextlib.py:158: in __exit__ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336621859-05:00 self.gen.throw(value) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336631709-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336658749-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336664619-05:00 map = {: , : } [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336668369-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336672569-05:00 @contextlib.contextmanager [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336677139-05:00 def map_exceptions(map: ExceptionMapping) -> typing.Iterator[None]: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336680859-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336685739-05:00 yield [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336689689-05:00 except Exception as exc: # noqa: PIE786 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336693659-05:00 for from_exc, to_exc in map.items(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336697819-05:00 if isinstance(exc, from_exc): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336703419-05:00 > raise to_exc(exc) from exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336708969-05:00 E httpcore.ConnectError: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336712709-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336716449-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_exceptions.py:14: ConnectError [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336721259-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336728139-05:00 The above exception was the direct cause of the following exception: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336734298-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336745958-05:00 self = [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336753198-05:00 method = 'GET', path = '/api/48/project/storeminder/executions', retry = True [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336763288-05:00 kwargs = {'params': {'max': 1}} [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336771728-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336776708-05:00 def _request( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336782418-05:00 self, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336787788-05:00 method: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336793768-05:00 path: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336800548-05:00 *, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336804978-05:00 retry: bool = True, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336811298-05:00 **kwargs: Any, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336817458-05:00 ) -> httpx.Response: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336823658-05:00 client = self._ensure_client() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336875008-05:00 attempts = (self.config.retries + 1) if retry else 1 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336885428-05:00 last_exc: Exception | None = None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336892488-05:00 for attempt in range(attempts): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336900727-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336907367-05:00 > resp = client.request(method, path, **kwargs) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336929967-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336935337-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336941777-05:00 integrations/base.py:135: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336947837-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336953887-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:825: in request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336960197-05:00 return self.send(request, auth=auth, follow_redirects=follow_redirects) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336965757-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336970817-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:914: in send [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336976497-05:00 response = self._send_handling_auth( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336981887-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.336988657-05:00 response = self._send_handling_redirects( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337001067-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337032067-05:00 response = self._send_single_request(request) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337040937-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337046577-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:1014: in _send_single_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337051927-05:00 response = transport.handle_request(request) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337056897-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337062916-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:249: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337067546-05:00 with map_httpcore_exceptions(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337072226-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337077226-05:00 /usr/local/lib/python3.12/contextlib.py:158: in __exit__ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337082906-05:00 self.gen.throw(value) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337090306-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337096556-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337102616-05:00 @contextlib.contextmanager [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337109076-05:00 def map_httpcore_exceptions() -> typing.Iterator[None]: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337117076-05:00 global HTTPCORE_EXC_MAP [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337126266-05:00 if len(HTTPCORE_EXC_MAP) == 0: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337136126-05:00 HTTPCORE_EXC_MAP = _load_httpcore_exceptions() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337145246-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337151016-05:00 yield [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337159036-05:00 except Exception as exc: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337169586-05:00 mapped_exc = None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337177066-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337182246-05:00 for from_exc, to_exc in HTTPCORE_EXC_MAP.items(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337187836-05:00 if not isinstance(exc, from_exc): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337194256-05:00 continue [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337200576-05:00 # We want to map to the most specific exception we can find. [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337206256-05:00 # Eg if `exc` is an `httpcore.ReadTimeout`, we want to map to [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337212756-05:00 # `httpx.ReadTimeout`, not just `httpx.TimeoutException`. [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337218626-05:00 if mapped_exc is None or issubclass(to_exc, mapped_exc): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337224835-05:00 mapped_exc = to_exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337229575-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337233805-05:00 if mapped_exc is None: # pragma: no cover [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337238955-05:00 raise [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337243025-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337247285-05:00 message = str(exc) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337252205-05:00 > raise mapped_exc(message) from exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337258305-05:00 E httpx.ConnectError: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337263915-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337267845-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:118: ConnectError [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337274835-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337285715-05:00 The above exception was the direct cause of the following exception: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337291965-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337299035-05:00 def test_parity_rundeck_execution(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337305685-05:00 rc = _live.live_rundeck() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337311865-05:00 ver = rc.config.extra.get("api_version", "48") [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337317715-05:00 proj = rc.config.extra.get("project", "storeminder") [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337345775-05:00 > execs = (_live.get_json(rc, f"/api/{ver}/project/{proj}/executions", max=1) or {}).get("executions") or [] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337357435-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337361485-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337366975-05:00 tests/contract/test_fixture_parity.py:69: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337371875-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337376395-05:00 tests/contract/_live.py:117: in get_json [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337381385-05:00 return client._get_json(path, params=params or None) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337386444-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337393204-05:00 integrations/base.py:174: in _get_json [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337401174-05:00 return self._request("GET", path, **kwargs).json() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337410594-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337418984-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337426494-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337433594-05:00 self = [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337443194-05:00 method = 'GET', path = '/api/48/project/storeminder/executions', retry = True [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337449684-05:00 kwargs = {'params': {'max': 1}} [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337453944-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337458954-05:00 def _request( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337462764-05:00 self, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337466684-05:00 method: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337472184-05:00 path: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337475914-05:00 *, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337480064-05:00 retry: bool = True, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337484774-05:00 **kwargs: Any, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337488644-05:00 ) -> httpx.Response: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337491854-05:00 client = self._ensure_client() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337496234-05:00 attempts = (self.config.retries + 1) if retry else 1 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337560523-05:00 last_exc: Exception | None = None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337569423-05:00 for attempt in range(attempts): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337580523-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337586443-05:00 resp = client.request(method, path, **kwargs) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337618993-05:00 except (httpx.TimeoutException, httpx.TransportError) as exc: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337626473-05:00 last_exc = exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337632523-05:00 if attempt + 1 < attempts: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337644453-05:00 time.sleep(self._backoff(attempt)) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337649713-05:00 continue [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337655203-05:00 > raise IntegrationUnavailable( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337667773-05:00 f"{self.name}: {method} {path} failed: {exc}" [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337677743-05:00 ) from exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337689763-05:00 E integrations.errors.IntegrationUnavailable: rundeck: GET /api/48/project/storeminder/executions failed: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337700223-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337710093-05:00 integrations/base.py:141: IntegrationUnavailable [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337719012-05:00 __________________________ test_parity_rundeck_output __________________________ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337725412-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337731582-05:00 @contextlib.contextmanager [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337735902-05:00 def map_httpcore_exceptions() -> typing.Iterator[None]: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337759802-05:00 global HTTPCORE_EXC_MAP [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337764662-05:00 if len(HTTPCORE_EXC_MAP) == 0: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337769742-05:00 HTTPCORE_EXC_MAP = _load_httpcore_exceptions() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337774422-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337779412-05:00 > yield [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337784692-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337792152-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:101: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337799612-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337819812-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:250: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337830472-05:00 resp = self._pool.handle_request(req) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337840292-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337848452-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py:256: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337855342-05:00 raise exc from None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337863242-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py:236: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337868872-05:00 response = connection.handle_request( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337874031-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py:101: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337879601-05:00 raise exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337884721-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py:78: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337889371-05:00 stream = self._connect(request) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337895031-05:00 ^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337902451-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py:124: in _connect [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337908621-05:00 stream = self._network_backend.connect_tcp(**kwargs) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337915711-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337924361-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_backends/sync.py:207: in connect_tcp [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337934181-05:00 with map_exceptions(exc_map): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337941521-05:00 ^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337954041-05:00 /usr/local/lib/python3.12/contextlib.py:158: in __exit__ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337962551-05:00 self.gen.throw(value) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337972181-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337980201-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337985311-05:00 map = {: , : } [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337990491-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.337995481-05:00 @contextlib.contextmanager [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338001461-05:00 def map_exceptions(map: ExceptionMapping) -> typing.Iterator[None]: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338007931-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338014151-05:00 yield [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338019551-05:00 except Exception as exc: # noqa: PIE786 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338024661-05:00 for from_exc, to_exc in map.items(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338030351-05:00 if isinstance(exc, from_exc): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338034881-05:00 > raise to_exc(exc) from exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338041150-05:00 E httpcore.ConnectError: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338046780-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338051650-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_exceptions.py:14: ConnectError [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338070610-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338078840-05:00 The above exception was the direct cause of the following exception: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338085450-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338093110-05:00 self = [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338103000-05:00 method = 'GET', path = '/api/48/project/storeminder/executions', retry = True [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338109450-05:00 kwargs = {'params': {'max': 1}} [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338115060-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338122350-05:00 def _request( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338127370-05:00 self, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338133510-05:00 method: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338139710-05:00 path: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338143450-05:00 *, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338147790-05:00 retry: bool = True, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338153620-05:00 **kwargs: Any, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338158440-05:00 ) -> httpx.Response: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338163310-05:00 client = self._ensure_client() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338169170-05:00 attempts = (self.config.retries + 1) if retry else 1 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338175440-05:00 last_exc: Exception | None = None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338179690-05:00 for attempt in range(attempts): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338183150-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338187760-05:00 > resp = client.request(method, path, **kwargs) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338192350-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338196810-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338202449-05:00 integrations/base.py:135: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338208619-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338216379-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:825: in request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338226039-05:00 return self.send(request, auth=auth, follow_redirects=follow_redirects) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338252309-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338259509-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:914: in send [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338265209-05:00 response = self._send_handling_auth( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338270499-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338276019-05:00 response = self._send_handling_redirects( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338283189-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338287769-05:00 response = self._send_single_request(request) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338294049-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338300289-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:1014: in _send_single_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338306939-05:00 response = transport.handle_request(request) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338313529-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338323699-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:249: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338334269-05:00 with map_httpcore_exceptions(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338355059-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338370348-05:00 /usr/local/lib/python3.12/contextlib.py:158: in __exit__ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338377008-05:00 self.gen.throw(value) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338382388-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338386108-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338390178-05:00 @contextlib.contextmanager [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338409638-05:00 def map_httpcore_exceptions() -> typing.Iterator[None]: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338414548-05:00 global HTTPCORE_EXC_MAP [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338419838-05:00 if len(HTTPCORE_EXC_MAP) == 0: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338425328-05:00 HTTPCORE_EXC_MAP = _load_httpcore_exceptions() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338429048-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338433348-05:00 yield [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338438028-05:00 except Exception as exc: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338442258-05:00 mapped_exc = None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338446758-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338455048-05:00 for from_exc, to_exc in HTTPCORE_EXC_MAP.items(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338460608-05:00 if not isinstance(exc, from_exc): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338465028-05:00 continue [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338469498-05:00 # We want to map to the most specific exception we can find. [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338477868-05:00 # Eg if `exc` is an `httpcore.ReadTimeout`, we want to map to [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338487998-05:00 # `httpx.ReadTimeout`, not just `httpx.TimeoutException`. [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338496948-05:00 if mapped_exc is None or issubclass(to_exc, mapped_exc): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338503568-05:00 mapped_exc = to_exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338508198-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338513418-05:00 if mapped_exc is None: # pragma: no cover [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338518128-05:00 raise [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338521948-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338525467-05:00 message = str(exc) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338531137-05:00 > raise mapped_exc(message) from exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338536007-05:00 E httpx.ConnectError: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338540747-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338546817-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:118: ConnectError [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338551377-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338557607-05:00 The above exception was the direct cause of the following exception: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338562797-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338567797-05:00 def test_parity_rundeck_output(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338573747-05:00 rc = _live.live_rundeck() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338583777-05:00 ver = rc.config.extra.get("api_version", "48") [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338592527-05:00 proj = rc.config.extra.get("project", "storeminder") [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338601407-05:00 > execs = (_live.get_json(rc, f"/api/{ver}/project/{proj}/executions", max=1) or {}).get("executions") or [] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338611997-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338621667-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338628367-05:00 tests/contract/test_fixture_parity.py:86: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338633877-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338640797-05:00 tests/contract/_live.py:117: in get_json [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338645417-05:00 return client._get_json(path, params=params or None) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338650457-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338656977-05:00 integrations/base.py:174: in _get_json [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338662857-05:00 return self._request("GET", path, **kwargs).json() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338669727-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338675217-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338681997-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338705516-05:00 self = [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338715486-05:00 method = 'GET', path = '/api/48/project/storeminder/executions', retry = True [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338724676-05:00 kwargs = {'params': {'max': 1}} [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338730016-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338738546-05:00 def _request( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338745026-05:00 self, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338751926-05:00 method: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338757716-05:00 path: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338762176-05:00 *, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338766866-05:00 retry: bool = True, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338771386-05:00 **kwargs: Any, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338776476-05:00 ) -> httpx.Response: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338781956-05:00 client = self._ensure_client() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338787596-05:00 attempts = (self.config.retries + 1) if retry else 1 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338791686-05:00 last_exc: Exception | None = None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338796486-05:00 for attempt in range(attempts): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338801366-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338806286-05:00 resp = client.request(method, path, **kwargs) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338814216-05:00 except (httpx.TimeoutException, httpx.TransportError) as exc: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338819906-05:00 last_exc = exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338828406-05:00 if attempt + 1 < attempts: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338836676-05:00 time.sleep(self._backoff(attempt)) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338844106-05:00 continue [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338853295-05:00 > raise IntegrationUnavailable( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338860055-05:00 f"{self.name}: {method} {path} failed: {exc}" [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338866475-05:00 ) from exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338881915-05:00 E integrations.errors.IntegrationUnavailable: rundeck: GET /api/48/project/storeminder/executions failed: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338887885-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338893035-05:00 integrations/base.py:141: IntegrationUnavailable [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338897945-05:00 ________________________ test_headscale_raw_node_shape _________________________ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338903635-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338909925-05:00 def test_headscale_raw_node_shape(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338915535-05:00 """The wire shape must carry every key the client reads.""" [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338919415-05:00 hs = _live.live_headscale() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338925555-05:00 raw = _live.get_json(hs, "/api/v1/node") [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338931075-05:00 assert isinstance(raw, dict) and "nodes" in raw, "expected {'nodes': [...]}" [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338936265-05:00 nodes = raw["nodes"] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338941795-05:00 assert isinstance(nodes, list) and nodes, "headscale returned zero nodes — cannot shape-check" [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338945695-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338953185-05:00 node = nodes[0] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338964565-05:00 drift = _shapes.check_shape(_shapes.HEADSCALE_NODE, node) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338972285-05:00 > assert drift.ok(), drift.describe() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338980115-05:00 E AssertionError: headscale.node: missing all of one-of group: ['forcedTags', 'validTags'] [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.338991355-05:00 E assert False [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339000375-05:00 E + where False = ok() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339009675-05:00 E + where ok = Drift(label='headscale.node', is_dict=True, missing_required=set(), missing_any_of=[frozenset({'validTags', 'forcedTags'})]).ok [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339029224-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339034104-05:00 tests/contract/test_headscale_contract.py:33: AssertionError [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339039114-05:00 ____________________________ test_rundeck_reachable ____________________________ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339043934-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339049794-05:00 def test_rundeck_reachable(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339055074-05:00 rc = _live.live_rundeck() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339061364-05:00 health = rc.healthcheck() # GET /api/{v}/system/info [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339065404-05:00 > assert health.reachable, f"rundeck unreachable: {health.detail}" [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339071004-05:00 E AssertionError: rundeck unreachable: rundeck: GET /api/48/system/info failed: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339076034-05:00 E assert False [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339084774-05:00 E + where False = .reachable [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339097054-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339105354-05:00 tests/contract/test_rundeck_contract.py:37: AssertionError [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339116664-05:00 _________________________ test_rundeck_execution_shape _________________________ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339124294-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339132914-05:00 @contextlib.contextmanager [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339138634-05:00 def map_httpcore_exceptions() -> typing.Iterator[None]: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339142974-05:00 global HTTPCORE_EXC_MAP [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339147474-05:00 if len(HTTPCORE_EXC_MAP) == 0: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339151994-05:00 HTTPCORE_EXC_MAP = _load_httpcore_exceptions() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339156264-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339160174-05:00 > yield [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339165454-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339169444-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:101: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339173544-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339177753-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:250: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339181113-05:00 resp = self._pool.handle_request(req) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339184563-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339188243-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py:256: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339191723-05:00 raise exc from None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339196393-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py:236: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339200403-05:00 response = connection.handle_request( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339205063-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py:101: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339212533-05:00 raise exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339220553-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py:78: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339230403-05:00 stream = self._connect(request) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339237843-05:00 ^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339244523-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py:124: in _connect [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339260293-05:00 stream = self._network_backend.connect_tcp(**kwargs) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339268533-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339274643-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_backends/sync.py:207: in connect_tcp [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339280513-05:00 with map_exceptions(exc_map): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339298833-05:00 ^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339303583-05:00 /usr/local/lib/python3.12/contextlib.py:158: in __exit__ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339307513-05:00 self.gen.throw(value) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339311363-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339314763-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339319573-05:00 map = {: , : } [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339322863-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339326903-05:00 @contextlib.contextmanager [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339330483-05:00 def map_exceptions(map: ExceptionMapping) -> typing.Iterator[None]: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339334303-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339345492-05:00 yield [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339353922-05:00 except Exception as exc: # noqa: PIE786 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339358972-05:00 for from_exc, to_exc in map.items(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339366572-05:00 if isinstance(exc, from_exc): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339373552-05:00 > raise to_exc(exc) from exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339382822-05:00 E httpcore.ConnectError: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339393842-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339400402-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_exceptions.py:14: ConnectError [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339404432-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339416322-05:00 The above exception was the direct cause of the following exception: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339420402-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339426742-05:00 self = [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339431822-05:00 method = 'GET', path = '/api/48/project/storeminder/executions', retry = True [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339436892-05:00 kwargs = {'params': {'max': 1}} [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339442732-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339447812-05:00 def _request( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339453032-05:00 self, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339459992-05:00 method: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339465752-05:00 path: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339472232-05:00 *, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339480832-05:00 retry: bool = True, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339487822-05:00 **kwargs: Any, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339498112-05:00 ) -> httpx.Response: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339508441-05:00 client = self._ensure_client() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339515281-05:00 attempts = (self.config.retries + 1) if retry else 1 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339523651-05:00 last_exc: Exception | None = None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339528181-05:00 for attempt in range(attempts): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339534381-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339539791-05:00 > resp = client.request(method, path, **kwargs) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339544421-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339548881-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339553841-05:00 integrations/base.py:135: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339560911-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339566771-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:825: in request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339573301-05:00 return self.send(request, auth=auth, follow_redirects=follow_redirects) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339579631-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339584681-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:914: in send [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339606491-05:00 response = self._send_handling_auth( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339616521-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339626151-05:00 response = self._send_handling_redirects( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339631991-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339643591-05:00 response = self._send_single_request(request) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339651901-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339659741-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:1014: in _send_single_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339665491-05:00 response = transport.handle_request(request) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339670101-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339674731-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:249: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339680650-05:00 with map_httpcore_exceptions(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339686630-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339690860-05:00 /usr/local/lib/python3.12/contextlib.py:158: in __exit__ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339695970-05:00 self.gen.throw(value) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339701410-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339706290-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339712360-05:00 @contextlib.contextmanager [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339717910-05:00 def map_httpcore_exceptions() -> typing.Iterator[None]: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339723060-05:00 global HTTPCORE_EXC_MAP [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339727250-05:00 if len(HTTPCORE_EXC_MAP) == 0: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339736440-05:00 HTTPCORE_EXC_MAP = _load_httpcore_exceptions() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339743030-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339749960-05:00 yield [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339758590-05:00 except Exception as exc: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339768660-05:00 mapped_exc = None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339777420-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339784990-05:00 for from_exc, to_exc in HTTPCORE_EXC_MAP.items(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339790210-05:00 if not isinstance(exc, from_exc): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339794980-05:00 continue [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339801020-05:00 # We want to map to the most specific exception we can find. [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339807830-05:00 # Eg if `exc` is an `httpcore.ReadTimeout`, we want to map to [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339815650-05:00 # `httpx.ReadTimeout`, not just `httpx.TimeoutException`. [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.339821100-05:00 if mapped_exc is None or issubclass(to_exc, mapped_exc): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340283887-05:00 mapped_exc = to_exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340300597-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340310737-05:00 if mapped_exc is None: # pragma: no cover [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340318437-05:00 raise [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340322977-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340330047-05:00 message = str(exc) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340335537-05:00 > raise mapped_exc(message) from exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340353276-05:00 E httpx.ConnectError: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340358166-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340364106-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:118: ConnectError [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340369026-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340375076-05:00 The above exception was the direct cause of the following exception: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340379156-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340409246-05:00 def test_rundeck_execution_shape(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340419476-05:00 rc = _live.live_rundeck() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340427206-05:00 > ex = _recent_execution(rc) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340439386-05:00 ^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340446356-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340450976-05:00 tests/contract/test_rundeck_contract.py:42: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340456126-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340460236-05:00 tests/contract/test_rundeck_contract.py:24: in _recent_execution [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340467416-05:00 data = _live.get_json(rc, f"/api/{ver}/project/{proj}/executions", max=1) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340472676-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340477456-05:00 tests/contract/_live.py:117: in get_json [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340482476-05:00 return client._get_json(path, params=params or None) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340486846-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340493166-05:00 integrations/base.py:174: in _get_json [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340498506-05:00 return self._request("GET", path, **kwargs).json() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340504206-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340509516-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340515535-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340535555-05:00 self = [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340545105-05:00 method = 'GET', path = '/api/48/project/storeminder/executions', retry = True [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340556445-05:00 kwargs = {'params': {'max': 1}} [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340566065-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340574475-05:00 def _request( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340578375-05:00 self, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340583615-05:00 method: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340589625-05:00 path: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340595775-05:00 *, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340602345-05:00 retry: bool = True, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340606985-05:00 **kwargs: Any, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340613095-05:00 ) -> httpx.Response: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340618975-05:00 client = self._ensure_client() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340625025-05:00 attempts = (self.config.retries + 1) if retry else 1 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340630495-05:00 last_exc: Exception | None = None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340636445-05:00 for attempt in range(attempts): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340641835-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340660595-05:00 resp = client.request(method, path, **kwargs) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340672525-05:00 except (httpx.TimeoutException, httpx.TransportError) as exc: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340680794-05:00 last_exc = exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340694764-05:00 if attempt + 1 < attempts: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340702314-05:00 time.sleep(self._backoff(attempt)) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340707134-05:00 continue [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340711814-05:00 > raise IntegrationUnavailable( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340718294-05:00 f"{self.name}: {method} {path} failed: {exc}" [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340723014-05:00 ) from exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340729494-05:00 E integrations.errors.IntegrationUnavailable: rundeck: GET /api/48/project/storeminder/executions failed: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340734444-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340750804-05:00 integrations/base.py:141: IntegrationUnavailable [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340757634-05:00 __________________________ test_rundeck_output_shape ___________________________ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340763334-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340768894-05:00 @contextlib.contextmanager [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340773974-05:00 def map_httpcore_exceptions() -> typing.Iterator[None]: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340782324-05:00 global HTTPCORE_EXC_MAP [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340795084-05:00 if len(HTTPCORE_EXC_MAP) == 0: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340801484-05:00 HTTPCORE_EXC_MAP = _load_httpcore_exceptions() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340810294-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340818284-05:00 > yield [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340826064-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340832784-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:101: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340839323-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340845823-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:250: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340850593-05:00 resp = self._pool.handle_request(req) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340855373-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340860023-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py:256: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340863943-05:00 raise exc from None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340868763-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py:236: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340873493-05:00 response = connection.handle_request( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340879223-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py:101: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340884993-05:00 raise exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340889673-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py:78: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340893953-05:00 stream = self._connect(request) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340899923-05:00 ^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340906713-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py:124: in _connect [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340920553-05:00 stream = self._network_backend.connect_tcp(**kwargs) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340927483-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340934413-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_backends/sync.py:207: in connect_tcp [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340942453-05:00 with map_exceptions(exc_map): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340949713-05:00 ^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340957123-05:00 /usr/local/lib/python3.12/contextlib.py:158: in __exit__ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340962973-05:00 self.gen.throw(value) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340968813-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340974263-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340979583-05:00 map = {: , : } [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340983753-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340990153-05:00 @contextlib.contextmanager [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340994733-05:00 def map_exceptions(map: ExceptionMapping) -> typing.Iterator[None]: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.340999583-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341003692-05:00 yield [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341007452-05:00 except Exception as exc: # noqa: PIE786 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341012412-05:00 for from_exc, to_exc in map.items(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341016882-05:00 if isinstance(exc, from_exc): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341038492-05:00 > raise to_exc(exc) from exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341046172-05:00 E httpcore.ConnectError: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341051862-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341068832-05:00 /usr/local/lib/python3.12/site-packages/httpcore/_exceptions.py:14: ConnectError [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341076882-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341084812-05:00 The above exception was the direct cause of the following exception: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341091582-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341097452-05:00 self = [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341104042-05:00 method = 'GET', path = '/api/48/project/storeminder/executions', retry = True [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341109422-05:00 kwargs = {'params': {'max': 1}} [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341114182-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341120022-05:00 def _request( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341125062-05:00 self, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341131212-05:00 method: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341137132-05:00 path: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341142162-05:00 *, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341146792-05:00 retry: bool = True, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341152612-05:00 **kwargs: Any, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341157112-05:00 ) -> httpx.Response: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341163412-05:00 client = self._ensure_client() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341172711-05:00 attempts = (self.config.retries + 1) if retry else 1 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341180451-05:00 last_exc: Exception | None = None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341186711-05:00 for attempt in range(attempts): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341194011-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341222691-05:00 > resp = client.request(method, path, **kwargs) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341229051-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341233431-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341241001-05:00 integrations/base.py:135: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341245641-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341251441-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:825: in request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341256591-05:00 return self.send(request, auth=auth, follow_redirects=follow_redirects) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341261411-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341266661-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:914: in send [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341271411-05:00 response = self._send_handling_auth( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341276631-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341281411-05:00 response = self._send_handling_redirects( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341286301-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341290421-05:00 response = self._send_single_request(request) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341294661-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341299051-05:00 /usr/local/lib/python3.12/site-packages/httpx/_client.py:1014: in _send_single_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341305421-05:00 response = transport.handle_request(request) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341311281-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341317341-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:249: in handle_request [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341323591-05:00 with map_httpcore_exceptions(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.341332430-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383438814-05:00 /usr/local/lib/python3.12/contextlib.py:158: in __exit__ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383498524-05:00 self.gen.throw(value) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383511334-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383516644-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383522134-05:00 @contextlib.contextmanager [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383529204-05:00 def map_httpcore_exceptions() -> typing.Iterator[None]: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383535254-05:00 global HTTPCORE_EXC_MAP [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383541754-05:00 if len(HTTPCORE_EXC_MAP) == 0: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383548534-05:00 HTTPCORE_EXC_MAP = _load_httpcore_exceptions() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383553613-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383559883-05:00 yield [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383566043-05:00 except Exception as exc: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383570693-05:00 mapped_exc = None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383574783-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383579043-05:00 for from_exc, to_exc in HTTPCORE_EXC_MAP.items(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383582933-05:00 if not isinstance(exc, from_exc): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383586883-05:00 continue [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383591143-05:00 # We want to map to the most specific exception we can find. [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383595393-05:00 # Eg if `exc` is an `httpcore.ReadTimeout`, we want to map to [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383599493-05:00 # `httpx.ReadTimeout`, not just `httpx.TimeoutException`. [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383603503-05:00 if mapped_exc is None or issubclass(to_exc, mapped_exc): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383608283-05:00 mapped_exc = to_exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383612213-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383615773-05:00 if mapped_exc is None: # pragma: no cover [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383620033-05:00 raise [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383624723-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383628953-05:00 message = str(exc) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383632873-05:00 > raise mapped_exc(message) from exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383637103-05:00 E httpx.ConnectError: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383640433-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383647083-05:00 /usr/local/lib/python3.12/site-packages/httpx/_transports/default.py:118: ConnectError [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383650403-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383653763-05:00 The above exception was the direct cause of the following exception: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383656933-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383660323-05:00 def test_rundeck_output_shape(): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383664383-05:00 rc = _live.live_rundeck() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383667863-05:00 > ex = _recent_execution(rc) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383671503-05:00 ^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383674693-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383678003-05:00 tests/contract/test_rundeck_contract.py:59: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383681273-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383685453-05:00 tests/contract/test_rundeck_contract.py:24: in _recent_execution [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383689113-05:00 data = _live.get_json(rc, f"/api/{ver}/project/{proj}/executions", max=1) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383692783-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383696563-05:00 tests/contract/_live.py:117: in get_json [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383699653-05:00 return client._get_json(path, params=params or None) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383704403-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383720062-05:00 integrations/base.py:174: in _get_json [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383724282-05:00 return self._request("GET", path, **kwargs).json() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383728532-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383741512-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383745172-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383749902-05:00 self = [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383754292-05:00 method = 'GET', path = '/api/48/project/storeminder/executions', retry = True [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383758752-05:00 kwargs = {'params': {'max': 1}} [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383762082-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383766142-05:00 def _request( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383770232-05:00 self, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383774252-05:00 method: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383778332-05:00 path: str, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383782152-05:00 *, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383785802-05:00 retry: bool = True, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383789402-05:00 **kwargs: Any, [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383793462-05:00 ) -> httpx.Response: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383798422-05:00 client = self._ensure_client() [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383803092-05:00 attempts = (self.config.retries + 1) if retry else 1 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383807002-05:00 last_exc: Exception | None = None [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383810732-05:00 for attempt in range(attempts): [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383814912-05:00 try: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383818262-05:00 resp = client.request(method, path, **kwargs) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383908801-05:00 except (httpx.TimeoutException, httpx.TransportError) as exc: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383912781-05:00 last_exc = exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383916811-05:00 if attempt + 1 < attempts: [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383921161-05:00 time.sleep(self._backoff(attempt)) [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383924951-05:00 continue [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383929021-05:00 > raise IntegrationUnavailable( [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383935501-05:00 f"{self.name}: {method} {path} failed: {exc}" [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383939191-05:00 ) from exc [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383947171-05:00 E integrations.errors.IntegrationUnavailable: rundeck: GET /api/48/project/storeminder/executions failed: [Errno 111] Connection refused [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383951471-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383955341-05:00 integrations/base.py:141: IntegrationUnavailable [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383959401-05:00 ================================ tests coverage ================================ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383963421-05:00 _______________ coverage: platform linux, python 3.12.7-final-0 ________________ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383966651-05:00 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383970431-05:00 Name Stmts Miss Branch BrPart Cover Missing [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383975331-05:00 ----------------------------------------------------------------------------------------------- [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383981001-05:00 config/__init__.py 0 0 0 0 100% [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383985331-05:00 config/settings.py 39 0 2 1 98% 98->104 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383989841-05:00 config/urls.py 7 7 0 0 0% 2-13 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.383994301-05:00 fleet/__init__.py 0 0 0 0 100% [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384002421-05:00 fleet/admin.py 231 101 34 0 49% 74-75, 79, 82-85, 99, 103, 106, 122, 143, 146, 157, 161, 207-216, 224-230, 235-245, 258-260, 289-293, 297-305, 309-312, 317-334, 339-353, 362-373, 409, 413-416, 420-449, 453-459 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384015541-05:00 fleet/apps.py 5 0 0 0 100% [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384020601-05:00 fleet/forms.py 17 8 4 0 43% 17-19, 22-31 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384024641-05:00 fleet/home.py 13 13 4 0 0% 28-51 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384030841-05:00 fleet/integrity.py 36 30 26 0 10% 23-28, 33-39, 44-47, 52-59, 64-70 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384037521-05:00 fleet/logs.py 113 113 18 0 0% 26-288 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384044340-05:00 fleet/management/__init__.py 0 0 0 0 100% [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384049630-05:00 fleet/management/commands/__init__.py 0 0 0 0 100% [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384055010-05:00 fleet/management/commands/poll_selftests.py 24 24 6 0 0% 13-61 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384063910-05:00 fleet/management/commands/reconcile_consents.py 37 37 10 0 0% 19-96 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384070310-05:00 fleet/management/commands/sync_devices.py 166 166 60 0 0% 30-309 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384075370-05:00 fleet/models.py 121 0 0 0 100% [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384080940-05:00 fleet/reconcile.py 76 50 20 0 27% 62, 67, 71-72, 82-87, 93-133, 138-141, 155-184 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384086010-05:00 fleet/roles.py 27 14 6 0 39% 91-104, 125-129 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384090620-05:00 fleet/scoping.py 26 20 10 0 17% 17-19, 26-28, 36-39, 44-47, 53-59 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384095050-05:00 fleet/selftest.py 116 90 24 0 19% 68, 72, 91-125, 137-164, 169-174, 185-192, 202-215, 220-225, 236-255, 270-278 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384100060-05:00 fleet/status.py 144 82 26 0 36% 80, 103-108, 112-122, 126, 130, 134, 137-138, 165-166, 170, 187-190, 202-217, 221-223, 234-237, 243-257, 262-280, 285-288, 300-305, 309-314 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384103920-05:00 fleet/tests_authority.py 124 124 2 0 0% 4-220 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384107520-05:00 fleet/tests_consent.py 149 149 0 0 0% 16-283 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384111870-05:00 fleet/tests_logs.py 161 161 2 0 0% 11-241 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384116340-05:00 fleet/tests_selftest.py 130 130 0 0 0% 14-256 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384120390-05:00 fleet/tests_status.py 219 219 2 0 0% 8-378 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384124250-05:00 fleet/tests_sync.py 72 72 0 0 0% 12-141 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384128190-05:00 fleet/urls_logs.py 4 4 0 0 0% 7-13 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384132490-05:00 fleet/urls_selftest.py 3 3 0 0 0% 6-10 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384137820-05:00 fleet/urls_status.py 4 4 0 0 0% 7-13 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384142690-05:00 fleet/validators.py 25 18 8 0 21% 27-29, 38-52 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384166130-05:00 integrations/__init__.py 15 4 0 0 73% 45, 49, 53, 57 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384171980-05:00 integrations/base.py 122 33 32 12 67% 39, 43-51, 55, 60-62, 96, 99, 100->108, 111-113, 116, 119, 146-147, 161, 165, 176, 179, 186-187, 193, 196, 205, 220 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384176320-05:00 integrations/config.py 57 36 14 0 30% 18, 53-60, 64-66, 74-107, 111-116 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384180120-05:00 integrations/errors.py 9 2 0 0 78% 35-36 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384184360-05:00 integrations/grafana.py 68 50 22 0 20% 27, 30, 33, 36, 43-50, 60-72, 75-97, 110-123, 126-135, 141 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384188890-05:00 integrations/headscale.py 33 8 12 4 64% 17, 26, 32-35, 42, 47->46, 49 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384192900-05:00 integrations/health.py 20 20 2 0 0% 6-43 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384197450-05:00 integrations/mender.py 54 36 16 0 26% 27-45, 48-54, 58-63, 67-68, 73, 76-77, 90-91, 105 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384201290-05:00 integrations/rundeck.py 46 25 10 0 38% 44-49, 65-81, 85-89, 95-103, 114-117, 126 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384205529-05:00 integrations/types.py 63 2 0 0 97% 68, 72 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384209679-05:00 integrations/urls.py 3 3 0 0 0% 1-5 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384213149-05:00 integrations/views.py 6 6 0 0 0% 7-16 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384217229-05:00 stores/__init__.py 0 0 0 0 100% [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384221209-05:00 stores/admin.py 79 26 10 0 60% 73, 76-79, 87-90, 111, 114, 117-121, 125-137, 152 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384226029-05:00 stores/apps.py 5 0 0 0 100% [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384231019-05:00 stores/forms.py 15 4 2 0 65% 65-73 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384235569-05:00 stores/management/__init__.py 0 0 0 0 100% [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384239359-05:00 stores/management/commands/__init__.py 0 0 0 0 100% [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384244259-05:00 stores/management/commands/check_authority.py 39 39 14 0 0% 14-76 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384249159-05:00 stores/management/commands/migrate_owner_staff.py 73 73 28 0 0% 32-204 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384254909-05:00 stores/management/commands/notify_new_enrolls.py 36 36 8 0 0% 11-75 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384259789-05:00 stores/management/commands/seed_e2e_fleet.py 232 232 34 0 0% 52-624 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384265239-05:00 stores/management/commands/sync_roles.py 24 24 8 0 0% 12-55 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384269689-05:00 stores/models.py 58 2 0 0 97% 77, 80 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384273649-05:00 stores/scoping.py 5 3 2 0 29% 22-24 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384277979-05:00 stores/tests_authority.py 126 126 4 0 0% 7-232 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384281779-05:00 stores/urls.py 3 3 0 0 0% 1-5 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384294289-05:00 stores/views.py 11 11 0 0 0% 2-27 [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384298159-05:00 ----------------------------------------------------------------------------------------------- [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384303579-05:00 TOTAL 3291 2443 482 17 23% [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384307099-05:00 Coverage XML written to file coverage.xml [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384312469-05:00 =========================== short test summary info ============================ [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384316279-05:00 SKIPPED [5] tests/contract/_live.py:76: mender not configured (MENDER_URL/MENDER_API_TOKEN absent) — token not seeded yet [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384319729-05:00 SKIPPED [5] tests/contract/_live.py:102: grafana not configured (GRAFANA_URL/GRAFANA_TOKEN absent) — token not seeded yet [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384323549-05:00 ================== 7 failed, 11 passed, 10 skipped in 10.05s =================== [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384327079-05:00 ===CONTRACT_RC=1=== [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384330579-05:00 ----- end contract Job logs ----- [pod/app-contract-nightly-mdc6d-contract-pod/step-run-contract] 2026-07-20T22:17:42.384334279-05:00 ==> contract run: Failed — STUB-VS-REALITY DRIFT or a live client broke — see the drift report in the Job logs above