ci: add retries to test setup in case the Atlas Dev environment is unstable #1758
code_health.yaml
on: pull_request
Matrix: Run MongoDB tests
Run Atlas tests
5m 23s
Report Coverage
40s
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
|
|