Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 0 additions & 51 deletions .github/workflows/db-migrations.yml

This file was deleted.

49 changes: 0 additions & 49 deletions .github/workflows/oidc-e2e.yml

This file was deleted.

39 changes: 0 additions & 39 deletions .github/workflows/oidc-integration.yml

This file was deleted.

41 changes: 0 additions & 41 deletions .github/workflows/soak-test.yml

This file was deleted.

61 changes: 0 additions & 61 deletions .github/workflows/standard-e2e.yml

This file was deleted.

7 changes: 7 additions & 0 deletions lib/external/s3.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,13 @@ const init = (config) => {
const isErrUpstream = err => err.name === 'S3Error' && err.code === 'InternalError';
const wrappedOrUnhandled = (err, operation, blobOrBlobs) => {
const details = { amzRequestId: err.requestid, operation };

console.log('s3.wrappedOrUnhandled()', 'err:', err); // eslint-disable-line no-console
console.log('s3.wrappedOrUnhandled()', 'err.name:', err.name); // eslint-disable-line no-console
console.log('s3.wrappedOrUnhandled()', 'err.code:', err.code); // eslint-disable-line no-console
console.log('s3.wrappedOrUnhandled()', 'err.message:', err.message); // eslint-disable-line no-console
console.log('s3.wrappedOrUnhandled()', 'err.props:', Object.keys(err)); // eslint-disable-line no-console

if (isErrUpstream(err)) {
if (Array.isArray(blobOrBlobs)) details.blobIds = blobOrBlobs.map(blob => blob.id);
else details.blobId = blobOrBlobs.id;
Expand Down
39 changes: 39 additions & 0 deletions test/e2e/s3/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ const TIMEOUT = 240_000; // ms
const { exec, execSync } = require('node:child_process');
const fs = require('node:fs');
const { randomBytes } = require('node:crypto');

const express = require('express');
const _ = require('lodash');
const should = require('should');

Expand All @@ -34,11 +36,16 @@ describe('s3 support', () => {
const minioTerminated = () => {
if(_minioTerminated) return;

log('Terminating minio...');

console.log(execSync('docker ps'));

// It should be possible to use docker more precisely here, e.g.
// docker stop $(docker ps --quiet --filter "ancestor=minio/minio")
// However, the ancestor filter requries specifying the exact tag used.
// See: https://docs.docker.com/reference/cli/docker/container/ls/#ancestor
execSync(`docker ps | awk '/minio/ { print $1 }' | xargs docker kill`);
console.log(execSync('docker ps'));
_minioTerminated = true;
};

Expand Down Expand Up @@ -304,6 +311,37 @@ describe('s3 support', () => {
});
});

describe('with minio 5xx', () => {
let server;

before(() => {
minioTerminated();

const app = express();

app.all('/*', (req, res) => res.sendStatus(500));

return new Promise((resolve, reject) => {
server = app.listen(9000, err => {
if(err) return reject(err);
resolve();
});
});
});

after(() => {
if(server) return new Promise(resolve => server.close(resolve)); // eslint-disable-line no-promise-executor-return
});

it('should handle upload failure gracefully', async () => {
throw new Error('implement me');
});

it('should handle download failure gracefully', async () => {
await expectRejectionFrom(forSacrifice(cli('upload-pending')), /Error: TODO/);
});
});

// Guard against a Promise resolving when it was expected to reject. This has
// specifically been seen when upload-pending returns immediately, but later
// test code is expecting it to spend time uploading. In those cases, this
Expand Down Expand Up @@ -420,6 +458,7 @@ function cli(cmd) {

const promise = new Promise((resolve, reject) => {
const child = exec(cmd, { env, cwd:'../../..' }, (err, stdout, stderr) => {
console.log({ stdout, stderr });
if (err) {
err.stdout = stdout; // eslint-disable-line no-param-reassign
err.stderr = stderr; // eslint-disable-line no-param-reassign
Expand Down
Loading