Skip to content

ci: add retries to test setup in case the Atlas Dev environment is unstable #1758

ci: add retries to test setup in case the Atlas Dev environment is unstable

ci: add retries to test setup in case the Atlas Dev environment is unstable #1758

Re-run triggered August 29, 2025 15:15
Status Failure
Total duration 6m 14s
Artifacts 6

code_health.yaml

on: pull_request
Matrix: Run MongoDB tests
Run Atlas tests
5m 23s
Run Atlas tests
Report Coverage
40s
Report Coverage
Fit to window
Zoom out
Zoom in

Annotations

8 errors and 5 warnings
Run Atlas tests
Process completed with exit code 1.
tests/integration/tools/atlas/projects.test.ts > projects > atlas-list-projects > returns project names: tests/integration/tools/atlas/projects.test.ts#L63
AssertionError: expected 'Unable to authenticate with MongoDB A…' to match /Found \d+ projects/ - Expected: /Found \d+ projects/ + Received: "Unable to authenticate with MongoDB Atlas, API error: [401 Unauthorized] error calling Atlas API: Unauthorized; You are not authorized for this resource. Hint: Your API credentials may be invalid, expired or lack permissions. Please check your Atlas API credentials and ensure they have the appropriate permissions. For more information on setting up API keys, visit: https://www.mongodb.com/docs/atlas/configure-api-access/" ❯ tests/integration/tools/atlas/projects.test.ts:63:39 ❯ tests/integration/tools/atlas/atlasHelpers.ts:131:17
tests/integration/tools/atlas/projects.test.ts > projects > atlas-create-project > should create a project: tests/integration/tools/atlas/projects.test.ts#L47
AssertionError: expected 'Error running atlas-create-project: C…' to contain 'testProj-68b1c4c8feb41ab8359f6547' Expected: "testProj-68b1c4c8feb41ab8359f6547" Received: "Error running atlas-create-project: Could not search for organizations in your MongoDB Atlas account, please provide an organization ID or create one first." ❯ tests/integration/tools/atlas/projects.test.ts:47:39 ❯ tests/integration/tools/atlas/atlasHelpers.ts:131:17
tests/integration/tools/atlas/projects.test.ts > projects: src/common/atlas/apiClientError.ts#L31
ApiClientError: [401 Unauthorized] error calling Atlas API: Unauthorized; You are not authorized for this resource. ❯ Function.fromError src/common/atlas/apiClientError.ts:31:16 ❯ ApiClient.listProjects src/common/atlas/apiClient.ts:322:34 ❯ tests/integration/tools/atlas/projects.test.ts:14:26 ❯ tests/integration/tools/atlas/atlasHelpers.ts:103:17 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { response: { size: +0, constructor: 'Function<Response>', type: 'default', url: 'https://cloud-dev.mongodb.com/api/atlas/v2/groups', status: 401, ok: false, redirected: false, statusText: 'Unauthorized', headers: { constructor: 'Function<Headers>', toString: 'Function<toString>', get: 'Function<get>', forEach: 'Function<forEach>', values: 'Function<values>', entries: 'Function<entries>', raw: 'Function<raw>', size: '<unserializable>: Value of "this" must be of type URLSearchParams', append: 'Function<anonymous>', delete: 'Function<anonymous>', getAll: 'Function<anonymous>', has: 'Function<anonymous>', set: 'Function<anonymous>', sort: 'Function<sort>', keys: 'Function<anonymous>' }, highWaterMark: 16384, clone: 'Function<clone>', body: { _events: { close: [ 'Function<anonymous>', 'Function<anonymous>', 'Function<onclose>' ], error: [ 'Function<anonymous>', 'Function<onerror>' ], prefinish: 'Function<prefinish>', finish: 'Function<onfinish>', drain: undefined, data: undefined, end: 'Function<onend>', readable: 'Function<next>', unpipe: undefined }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: true, endEmitted: true, reading: false, constructed: true, sync: false, needReadable: false, emittedReadable: false, readableListening: true, resumeScheduled: false, errorEmitted: false, emitClose: true, autoDestroy: true, destroyed: true, closed: true, closeEmitted: true, multiAwaitDrain: false, readingMore: false, dataEmitted: true, errored: null, defaultEncoding: 'utf8', decoder: null, encoding: null, flowing: false, pipesCount: +0, paused: false }, _writableState: { highWaterMark: 65536, length: +0, corked: +0, onwrite: 'Function<bound onwrite>', writelen: +0, bufferedIndex: +0, pendingcb: +0, constructor: 'Function<WritableState>', objectMode: false, finalCalled: true, needDrain: false, ending: true, ended: true, finished: true, destroyed: true, decodeStrings: true, writing: false, sync: false, bufferProcessing: false, constructed: true, prefinished: true, errorEmitted: false, emitClose: true, autoDestroy: true, closed: true, closeEmitted: true, allBuffers: true, allNoop: true, errored: null, writable: undefined, defaultEncoding: 'utf8', writecb: 'Function<nop>', afterWriteTickInfo: null, buffered: [], getBuffer: 'Function<getBuffer>', bufferedRequestCount: +0 }, allowHalfOpen: true, _maxListeners: undefined, _eventsCount: 6, constructor: 'Function<PassThrough>', _transform: 'Function<anonymous>', _final: 'Function<final>', _write: 'Function<anonymous>', _read: 'Function<anonymous>', write: 'Function<anonymous>', cork: 'Function<anonymous>', uncork: 'Function<anonymous>', setDefaultEncoding: 'Function<setDefaultEncoding>', _writev: null, end: 'Function<anonymous>', destroy: 'Function<anonymous>', writable: false, writableHighWaterMark: 65536, writableObjectMode: false, writableBuffer: [], writableLength: +0, writableFinished: true, writableCorked: +0, writableEnded: true, writableNeedDrain: false, destroyed: true, _undestroy: 'Function<undestroy>', _destroy: 'Function<anonymous>', push: 'Function<anonymous>', unshift: 'Function<anonymous>', isPaused: 'Function<anonymous>', setEncoding: 'Function<anonymous>', read: 'Function<anonymous>', pipe: 'Function<anonymous>', unpipe: 'Function<anonymous>', on: 'Function<anonymous>', addListener: 'Function<anonymous>', removeListener: 'Function<anonymous>', off: 'Function<anonymous>', removeAllListeners: 'Function<anonymous>', resume: 'Function<anonymous>', pause: 'Function<anonymous>', wrap: 'Function<anonymous>', iterator: 'Function<anonymous>', readable:
tests/integration/tools/atlas/orgs.test.ts > orgs > atlas-list-orgs > returns org names: tests/integration/tools/atlas/orgs.test.ts#L16
AssertionError: expected 'Unable to authenticate with MongoDB A…' to contain 'Found 1 organizations' - Expected + Received - Found 1 organizations + Unable to authenticate with MongoDB Atlas, API error: [401 Unauthorized] error calling Atlas API: Unauthorized; You are not authorized for this resource. + + Hint: Your API credentials may be invalid, expired or lack permissions. + Please check your Atlas API credentials and ensure they have the appropriate permissions. + For more information on setting up API keys, visit: https://www.mongodb.com/docs/atlas/configure-api-access/ ❯ tests/integration/tools/atlas/orgs.test.ts:16:39
tests/integration/tools/atlas/alerts.test.ts > atlas-list-alerts > with project: src/common/atlas/apiClientError.ts#L31
ApiClientError: [401 Unauthorized] error calling Atlas API: Unauthorized; You are not authorized for this resource. ❯ Function.fromError src/common/atlas/apiClientError.ts:31:16 ❯ ApiClient.listOrganizations src/common/atlas/apiClient.ts:515:34 ❯ createProject tests/integration/tools/atlas/atlasHelpers.ts:176:18 ❯ tests/integration/tools/atlas/atlasHelpers.ts:41:27 ❯ tests/integration/tools/atlas/atlasHelpers.ts:76:17 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { response: { size: +0, constructor: 'Function<Response>', type: 'default', url: 'https://cloud-dev.mongodb.com/api/atlas/v2/orgs', status: 401, ok: false, redirected: false, statusText: 'Unauthorized', headers: { constructor: 'Function<Headers>', toString: 'Function<toString>', get: 'Function<get>', forEach: 'Function<forEach>', values: 'Function<values>', entries: 'Function<entries>', raw: 'Function<raw>', size: '<unserializable>: Value of "this" must be of type URLSearchParams', append: 'Function<anonymous>', delete: 'Function<anonymous>', getAll: 'Function<anonymous>', has: 'Function<anonymous>', set: 'Function<anonymous>', sort: 'Function<sort>', keys: 'Function<anonymous>' }, highWaterMark: 16384, clone: 'Function<clone>', body: { _events: { close: [ 'Function<anonymous>', 'Function<anonymous>', 'Function<onclose>' ], error: [ 'Function<anonymous>', 'Function<onerror>' ], prefinish: 'Function<prefinish>', finish: 'Function<onfinish>', drain: undefined, data: undefined, end: 'Function<onend>', readable: 'Function<next>', unpipe: undefined }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: true, endEmitted: true, reading: false, constructed: true, sync: false, needReadable: false, emittedReadable: false, readableListening: true, resumeScheduled: false, errorEmitted: false, emitClose: true, autoDestroy: true, destroyed: true, closed: true, closeEmitted: true, multiAwaitDrain: false, readingMore: false, dataEmitted: true, errored: null, defaultEncoding: 'utf8', decoder: null, encoding: null, flowing: false, pipesCount: +0, paused: false }, _writableState: { highWaterMark: 65536, length: +0, corked: +0, onwrite: 'Function<bound onwrite>', writelen: +0, bufferedIndex: +0, pendingcb: +0, constructor: 'Function<WritableState>', objectMode: false, finalCalled: true, needDrain: false, ending: true, ended: true, finished: true, destroyed: true, decodeStrings: true, writing: false, sync: false, bufferProcessing: false, constructed: true, prefinished: true, errorEmitted: false, emitClose: true, autoDestroy: true, closed: true, closeEmitted: true, allBuffers: true, allNoop: true, errored: null, writable: undefined, defaultEncoding: 'utf8', writecb: 'Function<nop>', afterWriteTickInfo: null, buffered: [], getBuffer: 'Function<getBuffer>', bufferedRequestCount: +0 }, allowHalfOpen: true, _maxListeners: undefined, _eventsCount: 6, constructor: 'Function<PassThrough>', _transform: 'Function<anonymous>', _final: 'Function<final>', _write: 'Function<anonymous>', _read: 'Function<anonymous>', write: 'Function<anonymous>', cork: 'Function<anonymous>', uncork: 'Function<anonymous>', setDefaultEncoding: 'Function<setDefaultEncoding>', _writev: null, end: 'Function<anonymous>', destroy: 'Function<anonymous>', writable: false, writableHighWaterMark: 65536, writableObjectMode: false, writableBuffer: [], writableLength: +0, writableFinished: true, writableCorked: +0, writableEnded: true, writableNeedDrain: false, destroyed: true, _undestroy: 'Function<undestroy>', _destroy: 'Function<anonymous>', push: 'Function<anonymous>', unshift: 'Function<anonymous>', isPaused: 'Function<anonymous>', setEncoding: 'Function<anonymous>', read: 'Function<anonymous>', pipe: 'Function<anonymous>', unpipe: 'Function<anonymous>', on: 'Function<anonymous>', addListener: 'Function<anonymous>', removeListener: 'Function<anonymous>', off: 'Function<anonymous>', removeAllListeners: 'Function<anonymous>', resume: 'Function<anonymous>', pause: 'Function<anonymous>', w
tests/integration/tools/atlas/accessLists.test.ts > ip access lists > with project: src/common/atlas/apiClientError.ts#L31
ApiClientError: [401 Unauthorized] error calling Atlas API: Unauthorized; You are not authorized for this resource. ❯ Function.fromError src/common/atlas/apiClientError.ts:31:16 ❯ ApiClient.listOrganizations src/common/atlas/apiClient.ts:515:34 ❯ createProject tests/integration/tools/atlas/atlasHelpers.ts:176:18 ❯ tests/integration/tools/atlas/atlasHelpers.ts:41:27 ❯ tests/integration/tools/atlas/atlasHelpers.ts:76:17 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { response: { size: +0, constructor: 'Function<Response>', type: 'default', url: 'https://cloud-dev.mongodb.com/api/atlas/v2/orgs', status: 401, ok: false, redirected: false, statusText: 'Unauthorized', headers: { constructor: 'Function<Headers>', toString: 'Function<toString>', get: 'Function<get>', forEach: 'Function<forEach>', values: 'Function<values>', entries: 'Function<entries>', raw: 'Function<raw>', size: '<unserializable>: Value of "this" must be of type URLSearchParams', append: 'Function<anonymous>', delete: 'Function<anonymous>', getAll: 'Function<anonymous>', has: 'Function<anonymous>', set: 'Function<anonymous>', sort: 'Function<sort>', keys: 'Function<anonymous>' }, highWaterMark: 16384, clone: 'Function<clone>', body: { _events: { close: [ 'Function<anonymous>', 'Function<anonymous>', 'Function<onclose>' ], error: [ 'Function<anonymous>', 'Function<onerror>' ], prefinish: 'Function<prefinish>', finish: 'Function<onfinish>', drain: undefined, data: undefined, end: 'Function<onend>', readable: 'Function<next>', unpipe: undefined }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: true, endEmitted: true, reading: false, constructed: true, sync: false, needReadable: false, emittedReadable: false, readableListening: true, resumeScheduled: false, errorEmitted: false, emitClose: true, autoDestroy: true, destroyed: true, closed: true, closeEmitted: true, multiAwaitDrain: false, readingMore: false, dataEmitted: true, errored: null, defaultEncoding: 'utf8', decoder: null, encoding: null, flowing: false, pipesCount: +0, paused: false }, _writableState: { highWaterMark: 65536, length: +0, corked: +0, onwrite: 'Function<bound onwrite>', writelen: +0, bufferedIndex: +0, pendingcb: +0, constructor: 'Function<WritableState>', objectMode: false, finalCalled: true, needDrain: false, ending: true, ended: true, finished: true, destroyed: true, decodeStrings: true, writing: false, sync: false, bufferProcessing: false, constructed: true, prefinished: true, errorEmitted: false, emitClose: true, autoDestroy: true, closed: true, closeEmitted: true, allBuffers: true, allNoop: true, errored: null, writable: undefined, defaultEncoding: 'utf8', writecb: 'Function<nop>', afterWriteTickInfo: null, buffered: [], getBuffer: 'Function<getBuffer>', bufferedRequestCount: +0 }, allowHalfOpen: true, _maxListeners: undefined, _eventsCount: 6, constructor: 'Function<PassThrough>', _transform: 'Function<anonymous>', _final: 'Function<final>', _write: 'Function<anonymous>', _read: 'Function<anonymous>', write: 'Function<anonymous>', cork: 'Function<anonymous>', uncork: 'Function<anonymous>', setDefaultEncoding: 'Function<setDefaultEncoding>', _writev: null, end: 'Function<anonymous>', destroy: 'Function<anonymous>', writable: false, writableHighWaterMark: 65536, writableObjectMode: false, writableBuffer: [], writableLength: +0, writableFinished: true, writableCorked: +0, writableEnded: true, writableNeedDrain: false, destroyed: true, _undestroy: 'Function<undestroy>', _destroy: 'Function<anonymous>', push: 'Function<anonymous>', unshift: 'Function<anonymous>', isPaused: 'Function<anonymous>', setEncoding: 'Function<anonymous>', read: 'Function<anonymous>', pipe: 'Function<anonymous>', unpipe: 'Function<anonymous>', on: 'Function<anonymous>', addListener: 'Function<anonymous>', removeListener: 'Function<anonymous>', off: 'Function<anonymous>', removeAllListeners: 'Function<anonymous>', resume: 'Function<anonymous>', pause: 'Function<anonymous>', w
Report Coverage
Unable to download artifact(s): Artifact not found for name: atlas-test-results Please ensure that your artifact is not expired and the artifact was uploaded using a compatible version of toolkit/upload-artifact. For more information, visit the GitHub Artifacts FAQ: https://github.com/actions/toolkit/blob/main/packages/artifact/docs/faq.md
Run Atlas tests
No files were found with the provided path: coverage/lcov.info. No artifacts will be uploaded.
Run Atlas tests
1 added, 0 removed; done.
Run Atlas tests
rehash: warning: skipping ca-certificates.crt,it does not contain exactly one certificate or CRL
Run Atlas tests
Updating certificates in /etc/ssl/certs...
Run Atlas tests
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Artifacts

Produced during runtime
Name Size Digest
run-atlas-tests-permissions-e02aae79be1ae3345f2e172538eae5f1
140 Bytes
sha256:3ed4c329313d498fc49bad6a076f054ffb9e915b3161433e16c611964dcedd3f