Compare commits
No commits in common. "47a7253706ab05f77e72844c19c847f96e8bb134" and "d3bdddeba351db031efcba13c13650999b20d67f" have entirely different histories.
47a7253706
...
d3bdddeba3
File diff suppressed because it is too large
Load Diff
|
@ -93,10 +93,15 @@ class MongoReadStream extends Readable {
|
|||
return;
|
||||
}
|
||||
|
||||
this._cursor.next().then(doc => {
|
||||
this._cursor.next((err, doc) => {
|
||||
if (this._destroyed) {
|
||||
return;
|
||||
}
|
||||
if (err) {
|
||||
this.emit('error', err);
|
||||
return;
|
||||
}
|
||||
|
||||
let key = undefined;
|
||||
let value = undefined;
|
||||
|
||||
|
@ -120,12 +125,6 @@ class MongoReadStream extends Readable {
|
|||
value,
|
||||
});
|
||||
}
|
||||
}).catch(err => {
|
||||
if (this._destroyed) {
|
||||
return;
|
||||
}
|
||||
this.emit('error', err);
|
||||
return;
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -135,7 +134,7 @@ class MongoReadStream extends Readable {
|
|||
}
|
||||
this._destroyed = true;
|
||||
|
||||
this._cursor.close().catch(err => {
|
||||
this._cursor.close(err => {
|
||||
if (err) {
|
||||
this.emit('error', err);
|
||||
return;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"engines": {
|
||||
"node": ">=16"
|
||||
},
|
||||
"version": "8.1.93",
|
||||
"version": "8.1.92",
|
||||
"description": "Common utilities for the S3 project components",
|
||||
"main": "build/index.js",
|
||||
"repository": {
|
||||
|
@ -41,7 +41,7 @@
|
|||
"joi": "^17.6.0",
|
||||
"level": "~5.0.1",
|
||||
"level-sublevel": "~6.6.5",
|
||||
"mongodb": "^5.2.0",
|
||||
"mongodb": "^3.0.1",
|
||||
"node-forge": "^1.3.0",
|
||||
"prom-client": "14.2.0",
|
||||
"simple-glob": "^0.2.0",
|
||||
|
@ -69,7 +69,7 @@
|
|||
"eslint-config-scality": "scality/Guidelines#ec33dfb",
|
||||
"eslint-plugin-react": "^4.3.0",
|
||||
"jest": "^27.5.1",
|
||||
"mongodb-memory-server": "^8.12.2",
|
||||
"mongodb-memory-server": "^6.0.2",
|
||||
"nyc": "^15.1.0",
|
||||
"sinon": "^9.0.2",
|
||||
"temp": "0.9.1",
|
||||
|
|
|
@ -44,37 +44,41 @@ describe('MongoClientInterface::metadata.deleteObjectMD', () => {
|
|||
let collection;
|
||||
|
||||
function getObjectCount(cb) {
|
||||
collection.countDocuments()
|
||||
.then(count => cb(null, count))
|
||||
.catch(err => cb(err));
|
||||
collection.countDocuments((err, count) => {
|
||||
if (err) {
|
||||
cb(err);
|
||||
}
|
||||
cb(null, count);
|
||||
});
|
||||
}
|
||||
|
||||
function getObject(key, cb) {
|
||||
collection.findOne({
|
||||
_id: key,
|
||||
}, {}).then(doc => {
|
||||
}, {}, (err, doc) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
if (!doc) {
|
||||
return cb(errors.NoSuchKey);
|
||||
}
|
||||
return cb(null, doc.value);
|
||||
}).catch(err => cb(err));
|
||||
});
|
||||
}
|
||||
|
||||
beforeAll(done => {
|
||||
mongoserver.start().then(() => {
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27018',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.setup(done);
|
||||
});
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27018',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.setup(done);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -74,7 +74,13 @@ describe('MongoClientInterface::metadata.getObjectMD', () => {
|
|||
{
|
||||
$set: { _id: mKey, value: objVal },
|
||||
},
|
||||
{ upsert: true }).then(() => cb(null)).catch(err => cb(err));
|
||||
{ upsert: true },
|
||||
err => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
return cb(null);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -87,24 +93,22 @@ describe('MongoClientInterface::metadata.getObjectMD', () => {
|
|||
collection.updateMany(
|
||||
{ 'value.key': key },
|
||||
{ $set: { 'value.deleted': true } },
|
||||
{ upsert: false }).then(() => cb()).catch(err => cb(err));
|
||||
{ upsert: false }, cb);
|
||||
}
|
||||
|
||||
beforeAll(done => {
|
||||
mongoserver.start().then(() => {
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27019',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.setup(done);
|
||||
});
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27019',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.setup(done);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ const werelogs = require('werelogs');
|
|||
const { MongoMemoryReplSet } = require('mongodb-memory-server');
|
||||
const logger = new werelogs.Logger('MongoClientInterface', 'debug', 'debug');
|
||||
const MetadataWrapper =
|
||||
require('../../../../../lib/storage/metadata/MetadataWrapper');
|
||||
require('../../../../../lib/storage/metadata/MetadataWrapper');
|
||||
const { versioning } = require('../../../../../index');
|
||||
const { BucketVersioningKeyFormat } = versioning.VersioningConstants;
|
||||
const { flagObjectForDeletion, makeBucketMD, putBulkObjectVersions } = require('./utils');
|
||||
|
@ -31,21 +31,19 @@ describe('MongoClientInterface::metadata.listLifecycleObject::current', () => {
|
|||
let collection;
|
||||
|
||||
beforeAll(done => {
|
||||
mongoserver.start().then(() => {
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27020',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.client.defaultBucketKeyFormat = BucketVersioningKeyFormat.v1;
|
||||
metadata.setup(done);
|
||||
});
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27020',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.client.defaultBucketKeyFormat = BucketVersioningKeyFormat.v1;
|
||||
metadata.setup(done);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ const werelogs = require('werelogs');
|
|||
const { MongoMemoryReplSet } = require('mongodb-memory-server');
|
||||
const logger = new werelogs.Logger('MongoClientInterface', 'debug', 'debug');
|
||||
const MetadataWrapper =
|
||||
require('../../../../../lib/storage/metadata/MetadataWrapper');
|
||||
require('../../../../../lib/storage/metadata/MetadataWrapper');
|
||||
const { versioning } = require('../../../../../index');
|
||||
const { BucketVersioningKeyFormat } = versioning.VersioningConstants;
|
||||
const { makeBucketMD } = require('./utils');
|
||||
|
@ -30,21 +30,19 @@ describe('MongoClientInterface::metadata.listLifecycleObject::global', () => {
|
|||
let metadata;
|
||||
|
||||
beforeAll(done => {
|
||||
mongoserver.start().then(() => {
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27020',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.client.defaultBucketKeyFormat = BucketVersioningKeyFormat.v0;
|
||||
metadata.setup(done);
|
||||
});
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27020',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.client.defaultBucketKeyFormat = BucketVersioningKeyFormat.v0;
|
||||
metadata.setup(done);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ const werelogs = require('werelogs');
|
|||
const { MongoMemoryReplSet } = require('mongodb-memory-server');
|
||||
const logger = new werelogs.Logger('MongoClientInterface', 'debug', 'debug');
|
||||
const MetadataWrapper =
|
||||
require('../../../../../lib/storage/metadata/MetadataWrapper');
|
||||
require('../../../../../lib/storage/metadata/MetadataWrapper');
|
||||
const { versioning } = require('../../../../../index');
|
||||
const { BucketVersioningKeyFormat } = versioning.VersioningConstants;
|
||||
const { assertContents, makeBucketMD, putBulkObjectVersions, flagObjectForDeletion } = require('./utils');
|
||||
|
@ -35,21 +35,19 @@ describe('MongoClientInterface::metadata.listLifecycleObject::noncurrent', () =>
|
|||
const key3 = 'pfx3-test-object';
|
||||
|
||||
beforeAll(done => {
|
||||
mongoserver.start().then(() => {
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27020',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.client.defaultBucketKeyFormat = BucketVersioningKeyFormat.v1;
|
||||
metadata.setup(done);
|
||||
});
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27020',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.client.defaultBucketKeyFormat = BucketVersioningKeyFormat.v1;
|
||||
metadata.setup(done);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -820,7 +818,6 @@ describe('MongoClientInterface::metadata.listLifecycleObject::noncurrent', () =>
|
|||
next => flagObjectForDeletion(collection, 'pfx4-test-object', next),
|
||||
next => metadata.listLifecycleObject(BUCKET_NAME, params, logger, (err, data) => {
|
||||
assert.ifError(err);
|
||||
|
||||
assert.strictEqual(data.IsTruncated, false);
|
||||
assert.strictEqual(data.Contents.length, 0);
|
||||
return next();
|
||||
|
|
|
@ -4,7 +4,7 @@ const werelogs = require('werelogs');
|
|||
const { MongoMemoryReplSet } = require('mongodb-memory-server');
|
||||
const logger = new werelogs.Logger('MongoClientInterface', 'debug', 'debug');
|
||||
const MetadataWrapper =
|
||||
require('../../../../../lib/storage/metadata/MetadataWrapper');
|
||||
require('../../../../../lib/storage/metadata/MetadataWrapper');
|
||||
const { versioning } = require('../../../../../index');
|
||||
const { BucketVersioningKeyFormat } = versioning.VersioningConstants;
|
||||
const { makeBucketMD } = require('./utils');
|
||||
|
@ -31,21 +31,19 @@ describe('MongoClientInterface::metadata.listLifecycleObject::nullVersion', () =
|
|||
let metadata;
|
||||
|
||||
beforeAll(done => {
|
||||
mongoserver.start().then(() => {
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27020',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.client.defaultBucketKeyFormat = BucketVersioningKeyFormat.v1;
|
||||
metadata.setup(done);
|
||||
});
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27020',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.client.defaultBucketKeyFormat = BucketVersioningKeyFormat.v1;
|
||||
metadata.setup(done);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -58,6 +56,11 @@ describe('MongoClientInterface::metadata.listLifecycleObject::nullVersion', () =
|
|||
], done);
|
||||
});
|
||||
|
||||
beforeEach(done => {
|
||||
const bucketMD = makeBucketMD(BUCKET_NAME);
|
||||
return metadata.createBucket(BUCKET_NAME, bucketMD, logger, done);
|
||||
});
|
||||
|
||||
beforeEach(done => {
|
||||
const bucketMD = makeBucketMD(BUCKET_NAME);
|
||||
const versionParams = {
|
||||
|
|
|
@ -4,7 +4,7 @@ const werelogs = require('werelogs');
|
|||
const { MongoMemoryReplSet } = require('mongodb-memory-server');
|
||||
const logger = new werelogs.Logger('MongoClientInterface', 'debug', 'debug');
|
||||
const MetadataWrapper =
|
||||
require('../../../../../lib/storage/metadata/MetadataWrapper');
|
||||
require('../../../../../lib/storage/metadata/MetadataWrapper');
|
||||
const { versioning } = require('../../../../../index');
|
||||
const { BucketVersioningKeyFormat } = versioning.VersioningConstants;
|
||||
const { makeBucketMD, putBulkObjectVersions } = require('./utils');
|
||||
|
@ -30,21 +30,19 @@ describe('MongoClientInterface::metadata.listLifecycleObject::orphan', () => {
|
|||
let metadata;
|
||||
|
||||
beforeAll(done => {
|
||||
mongoserver.start().then(() => {
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27020',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.client.defaultBucketKeyFormat = BucketVersioningKeyFormat.v1;
|
||||
metadata.setup(done);
|
||||
});
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27020',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.client.defaultBucketKeyFormat = BucketVersioningKeyFormat.v1;
|
||||
metadata.setup(done);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -89,9 +89,7 @@ function flagObjectForDeletion(collection, key, cb) {
|
|||
collection.updateMany(
|
||||
{ 'value.key': key },
|
||||
{ $set: { 'value.deleted': true } },
|
||||
{ upsert: false })
|
||||
.then(() => cb())
|
||||
.catch(err => cb(err));
|
||||
{ upsert: false }, cb);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
|
|
@ -5,7 +5,7 @@ const { MongoMemoryReplSet } = require('mongodb-memory-server');
|
|||
const logger = new werelogs.Logger('MongoClientInterface', 'debug', 'debug');
|
||||
const BucketInfo = require('../../../../lib/models/BucketInfo').default;
|
||||
const MetadataWrapper =
|
||||
require('../../../../lib/storage/metadata/MetadataWrapper');
|
||||
require('../../../../lib/storage/metadata/MetadataWrapper');
|
||||
const { versioning } = require('../../../../index');
|
||||
const { BucketVersioningKeyFormat } = versioning.VersioningConstants;
|
||||
|
||||
|
@ -67,24 +67,22 @@ describe('MongoClientInterface::metadata.listObject', () => {
|
|||
collection.updateMany(
|
||||
{ 'value.key': key },
|
||||
{ $set: { 'value.deleted': true } },
|
||||
{ upsert: false }).then(() => cb()).catch(err => cb(err));
|
||||
{ upsert: false }, cb);
|
||||
}
|
||||
|
||||
beforeAll(done => {
|
||||
mongoserver.start().then(() => {
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27020',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.setup(done);
|
||||
});
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27020',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.setup(done);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -40,35 +40,39 @@ describe('MongoClientInterface:metadata.putObjectMD', () => {
|
|||
function getObject(key, cb) {
|
||||
collection.findOne({
|
||||
_id: key,
|
||||
}, {}).then(doc => {
|
||||
}, {}, (err, doc) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
if (!doc) {
|
||||
return cb(errors.NoSuchKey);
|
||||
}
|
||||
return cb(null, doc.value);
|
||||
}).catch(err => cb(err));
|
||||
});
|
||||
}
|
||||
|
||||
function getObjectCount(cb) {
|
||||
collection.countDocuments()
|
||||
.then(count => cb(null, count))
|
||||
.catch(err => cb(err));
|
||||
collection.countDocuments((err, count) => {
|
||||
if (err) {
|
||||
cb(err);
|
||||
}
|
||||
cb(null, count);
|
||||
});
|
||||
}
|
||||
|
||||
beforeAll(done => {
|
||||
mongoserver.start().then(() => {
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27021',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.setup(done);
|
||||
});
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27021',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMPL_NAME, opts, null, logger);
|
||||
metadata.setup(done);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -35,20 +35,18 @@ describe('MongoClientInterface:withCond', () => {
|
|||
];
|
||||
|
||||
beforeAll(done => {
|
||||
mongoserver.start().then(() => {
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27022',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMP_NAME, opts, null, logger);
|
||||
metadata.setup(done);
|
||||
});
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
mongodb: {
|
||||
replicaSetHosts: 'localhost:27022',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'rs0',
|
||||
readPreference: 'primary',
|
||||
database: DB_NAME,
|
||||
},
|
||||
};
|
||||
metadata = new MetadataWrapper(IMP_NAME, opts, null, logger);
|
||||
metadata.setup(done);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -220,10 +218,6 @@ describe('MongoClientInterface:withCond', () => {
|
|||
});
|
||||
|
||||
describe('::deleteObjectWithCond', () => {
|
||||
afterEach(done => {
|
||||
metadata.deleteBucket(BUCKET_NAME, logger, done);
|
||||
});
|
||||
|
||||
const tests = [
|
||||
[
|
||||
`should return no such key if the object does not exist ${variation.it}`,
|
||||
|
|
|
@ -15,7 +15,7 @@ const dbName = 'metadata';
|
|||
const mongoserver = new MongoMemoryReplSet({
|
||||
debug: false,
|
||||
instanceOpts: [
|
||||
{ port: 27021 },
|
||||
{ port: 27018 },
|
||||
],
|
||||
replSet: {
|
||||
name: 'customSetName',
|
||||
|
@ -560,20 +560,19 @@ describe('MongoClientInterface, tests', () => {
|
|||
const hr = 1000 * 60 * 60;
|
||||
let client;
|
||||
beforeAll(done => {
|
||||
mongoserver.start().then(() => {
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
replicaSetHosts: 'localhost:27021',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'customSetName',
|
||||
readPreference: 'primary',
|
||||
database: dbName,
|
||||
replicationGroupId: 'GR001',
|
||||
logger,
|
||||
};
|
||||
client = new MongoClientInterface(opts);
|
||||
client.setup(() => done());
|
||||
});
|
||||
mongoserver.waitUntilRunning().then(() => {
|
||||
const opts = {
|
||||
replicaSetHosts: 'localhost:27018',
|
||||
writeConcern: 'majority',
|
||||
replicaSet: 'customSetName',
|
||||
readPreference: 'primary',
|
||||
database: dbName,
|
||||
replicationGroupId: 'GR001',
|
||||
logger,
|
||||
};
|
||||
|
||||
client = new MongoClientInterface(opts);
|
||||
client.setup(done);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -692,7 +691,7 @@ describe('MongoClientInterface, tests', () => {
|
|||
},
|
||||
],
|
||||
];
|
||||
tests.forEach(([msg, testCase, expected]) => it.skip(msg, done => {
|
||||
tests.forEach(([msg, testCase, expected]) => it(msg, done => {
|
||||
const {
|
||||
bucketName,
|
||||
isVersioned,
|
||||
|
@ -751,7 +750,10 @@ describe('MongoClientInterface, tests', () => {
|
|||
const mObjectName = formatMasterKey(objectName, BucketVersioningKeyFormat.v1);
|
||||
c.findOne({
|
||||
_id: mObjectName,
|
||||
}, {}).then(doc => {
|
||||
}, {}, (err, doc) => {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
if (!doc) {
|
||||
return next(new Error('key not found'));
|
||||
}
|
||||
|
@ -768,7 +770,7 @@ describe('MongoClientInterface, tests', () => {
|
|||
MongoUtils.unserialize(doc.value);
|
||||
assert.deepStrictEqual(doc.value.tags, tags);
|
||||
return next();
|
||||
}).catch(err => next(err));
|
||||
});
|
||||
},
|
||||
next => client.deleteObject(bucketName, objectName, {}, logger, next),
|
||||
next => client.deleteBucket(bucketName, logger, next),
|
||||
|
|
|
@ -88,7 +88,7 @@ describe('MongoClientInterface:delObject', () => {
|
|||
|
||||
it('deleteObjectVer:: should fail when findOne fails', done => {
|
||||
const collection = {
|
||||
findOne: () => Promise.resolve(errors.InternalError),
|
||||
findOne: (filter, params, cb) => cb(errors.InternalError),
|
||||
};
|
||||
client.deleteObjectVer(collection, 'example-bucket', 'example-object', {}, logger, err => {
|
||||
assert(err.is.InternalError);
|
||||
|
@ -98,7 +98,7 @@ describe('MongoClientInterface:delObject', () => {
|
|||
|
||||
it('deleteObjectVer:: should fail when no key found', done => {
|
||||
const collection = {
|
||||
findOne: () => Promise.resolve(null),
|
||||
findOne: (filter, params, cb) => cb(null, null),
|
||||
};
|
||||
sinon.stub(client, 'getLatestVersion').callsFake((...args) => args[4](errors.NoSuchKey));
|
||||
client.deleteObjectVer(collection, 'example-bucket', 'example-object', {}, logger, err => {
|
||||
|
@ -114,20 +114,15 @@ describe('MongoClientInterface:delObject', () => {
|
|||
},
|
||||
};
|
||||
const collection = {
|
||||
findOne: () => Promise.resolve(mst),
|
||||
findOne: (filter, params, cb) => cb(null, mst),
|
||||
};
|
||||
const deleteObjectVerMasterSpy = sinon.spy();
|
||||
sinon.stub(client, 'deleteObjectVerMaster').callsFake((c, bucketName, objName, params, logs, next) => {
|
||||
deleteObjectVerMasterSpy();
|
||||
return next();
|
||||
});
|
||||
client.deleteObjectVer(collection, 'example-bucket', 'example-object', {}, logger, () => {
|
||||
assert(deleteObjectVerMasterSpy.calledOnce);
|
||||
return done();
|
||||
});
|
||||
sinon.stub(client, 'deleteObjectVerMaster').callsFake(deleteObjectVerMasterSpy);
|
||||
client.deleteObjectVer(collection, 'example-bucket', 'example-object', {}, logger, {});
|
||||
assert(deleteObjectVerMasterSpy.calledOnce);
|
||||
return done();
|
||||
});
|
||||
|
||||
|
||||
it('deleteObjectVer:: should call deleteObjectVerMaster when version is last', done => {
|
||||
const mst = {
|
||||
value: {
|
||||
|
@ -135,17 +130,13 @@ describe('MongoClientInterface:delObject', () => {
|
|||
},
|
||||
};
|
||||
const collection = {
|
||||
findOne: () => Promise.resolve(mst),
|
||||
findOne: (filter, params, cb) => cb(null, mst),
|
||||
};
|
||||
const deleteObjectVerMasterSpy = sinon.spy();
|
||||
sinon.stub(client, 'deleteObjectVerMaster').callsFake((c, bucketName, objName, params, logs, next) => {
|
||||
deleteObjectVerMasterSpy();
|
||||
return next();
|
||||
});
|
||||
client.deleteObjectVer(collection, 'example-bucket', 'example-object', { versionId: '1234' }, logger, () => {
|
||||
assert(deleteObjectVerMasterSpy.calledOnce);
|
||||
return done();
|
||||
});
|
||||
sinon.stub(client, 'deleteObjectVerMaster').callsFake(deleteObjectVerMasterSpy);
|
||||
client.deleteObjectVer(collection, 'example-bucket', 'example-object', { versionId: '1234' }, logger, {});
|
||||
assert(deleteObjectVerMasterSpy.calledOnce);
|
||||
return done();
|
||||
});
|
||||
|
||||
it('deleteObjectVerNotMaster:: should fail when findOneAndDelete fails', done => {
|
||||
|
@ -158,7 +149,7 @@ describe('MongoClientInterface:delObject', () => {
|
|||
|
||||
it('deleteObjectVerMaster:: should fail when deleteOrRepairPHD fails', done => {
|
||||
const collection = {
|
||||
updateOne: () => Promise.resolve(),
|
||||
updateOne: (filter, update, params, cb) => cb(null),
|
||||
};
|
||||
sinon.stub(client, 'internalDeleteObject').callsArg(5);
|
||||
sinon.stub(client, 'deleteOrRepairPHD').callsFake((...args) => args[6](errors.InternalError));
|
||||
|
@ -170,7 +161,7 @@ describe('MongoClientInterface:delObject', () => {
|
|||
|
||||
it('deleteObjectVerMaster:: should not fail', done => {
|
||||
const collection = {
|
||||
updateOne: () => Promise.resolve(),
|
||||
updateOne: (filter, update, params, cb) => cb(null),
|
||||
};
|
||||
sinon.stub(client, 'internalDeleteObject').callsArg(5);
|
||||
sinon.stub(client, 'deleteOrRepairPHD').callsArg(6);
|
||||
|
@ -193,7 +184,7 @@ describe('MongoClientInterface:delObject', () => {
|
|||
|
||||
it('repair:: should set correct originOp', done => {
|
||||
const collection = {
|
||||
findOneAndReplace: sinon.stub().resolves({ ok: 1 }),
|
||||
findOneAndReplace: sinon.stub().callsArgWith(3, null, { ok: 1 }),
|
||||
};
|
||||
const master = {
|
||||
versionId: '1234',
|
||||
|
@ -214,7 +205,7 @@ describe('MongoClientInterface:delObject', () => {
|
|||
|
||||
it('internalDeleteObject:: should fail when no object is found', done => {
|
||||
const collection = {
|
||||
findOneAndUpdate: sinon.stub().resolves({}),
|
||||
findOneAndUpdate: sinon.stub().callsArgWith(3, null, {}),
|
||||
};
|
||||
client.internalDeleteObject(collection, 'example-bucket', 'example-object', null, logger, err => {
|
||||
assert(err.is.NoSuchKey);
|
||||
|
@ -223,10 +214,10 @@ describe('MongoClientInterface:delObject', () => {
|
|||
});
|
||||
|
||||
it('internalDeleteObject:: should get PHD object with versionId', done => {
|
||||
const findOneAndUpdate = sinon.stub().resolves({ value: { value: objMD } });
|
||||
const findOneAndUpdate = sinon.stub().callsArgWith(3, null, { value: { value: objMD } });
|
||||
const collection = {
|
||||
findOneAndUpdate,
|
||||
bulkWrite: () => Promise.resolve(),
|
||||
bulkWrite: (ops, params, cb) => cb(null),
|
||||
};
|
||||
const filter = {
|
||||
'value.isPHD': true,
|
||||
|
|
|
@ -40,7 +40,7 @@ describe('MongoClientInterface:getObjectNoVer', () => {
|
|||
|
||||
it('should fail when findOne fails', done => {
|
||||
const collection = {
|
||||
findOne: () => Promise.reject(errors.InternalError),
|
||||
findOne: (filter, params, cb) => cb(errors.InternalError),
|
||||
};
|
||||
sinon.stub(client, 'getCollection').callsFake(() => collection);
|
||||
sinon.stub(client, 'getBucketVFormat').callsFake((bucketName, log, cb) => cb(null, 'v0'));
|
||||
|
@ -52,7 +52,7 @@ describe('MongoClientInterface:getObjectNoVer', () => {
|
|||
|
||||
it('should throw noSuchKey when no documents found', done => {
|
||||
const collection = {
|
||||
findOne: () => Promise.resolve(null),
|
||||
findOne: (filter, params, cb) => cb(null, null),
|
||||
};
|
||||
sinon.stub(client, 'getCollection').callsFake(() => collection);
|
||||
sinon.stub(client, 'getBucketVFormat').callsFake((bucketName, log, cb) => cb(null, 'v0'));
|
||||
|
@ -70,7 +70,7 @@ describe('MongoClientInterface:getObjectNoVer', () => {
|
|||
},
|
||||
};
|
||||
const collection = {
|
||||
findOne: () => Promise.resolve(doc),
|
||||
findOne: (filter, params, cb) => cb(null, doc),
|
||||
};
|
||||
sinon.stub(client, 'getCollection').callsFake(() => collection);
|
||||
sinon.stub(client, 'getBucketVFormat').callsFake((bucketName, log, cb) => cb(null, 'v0'));
|
||||
|
@ -89,7 +89,7 @@ describe('MongoClientInterface:getObjectNoVer', () => {
|
|||
},
|
||||
};
|
||||
const collection = {
|
||||
findOne: () => Promise.resolve(doc),
|
||||
findOne: (filter, params, cb) => cb(null, doc),
|
||||
};
|
||||
sinon.stub(client, 'getCollection').callsFake(() => collection);
|
||||
sinon.stub(client, 'getBucketVFormat').callsFake((bucketName, log, cb) => cb(null, 'v0'));
|
||||
|
@ -110,7 +110,7 @@ describe('MongoClientInterface:getObjectNoVer', () => {
|
|||
},
|
||||
};
|
||||
const collection = {
|
||||
findOne: () => Promise.resolve(doc),
|
||||
findOne: (filter, params, cb) => cb(null, doc),
|
||||
};
|
||||
sinon.stub(client, 'getCollection').callsFake(() => collection);
|
||||
sinon.stub(client, 'getBucketVFormat').callsFake((bucketName, log, cb) => cb(null, 'v0'));
|
||||
|
|
|
@ -210,7 +210,7 @@ describe('MongoClientInterface:putObjectVerCase1', () => {
|
|||
|
||||
it('should fail when error code not 11000', done => {
|
||||
const collection = {
|
||||
bulkWrite: () => Promise.reject(errors.InternalError),
|
||||
bulkWrite: (ops, params, cb) => cb(errors.InternalError),
|
||||
};
|
||||
client.putObjectVerCase1(collection, 'example-bucket', 'example-object', {}, {}, logger, err => {
|
||||
assert.deepStrictEqual(err, errors.InternalError);
|
||||
|
@ -226,7 +226,7 @@ describe('MongoClientInterface:putObjectVerCase1', () => {
|
|||
},
|
||||
};
|
||||
const collection = {
|
||||
bulkWrite: () => Promise.reject(error),
|
||||
bulkWrite: (ops, params, cb) => cb(error),
|
||||
};
|
||||
client.putObjectVerCase1(collection, 'example-bucket', 'example-object', {}, {}, logger, err => {
|
||||
assert.deepStrictEqual(err, null);
|
||||
|
@ -242,7 +242,7 @@ describe('MongoClientInterface:putObjectVerCase1', () => {
|
|||
},
|
||||
};
|
||||
const collection = {
|
||||
bulkWrite: () => Promise.reject(error),
|
||||
bulkWrite: (ops, params, cb) => cb(error),
|
||||
};
|
||||
client.putObjectVerCase1(collection, 'example-bucket', 'example-object', {}, {}, logger, err => {
|
||||
assert.deepStrictEqual(err, errors.InternalError);
|
||||
|
@ -252,7 +252,7 @@ describe('MongoClientInterface:putObjectVerCase1', () => {
|
|||
|
||||
it('should return version id when no error', done => {
|
||||
const collection = {
|
||||
bulkWrite: () => Promise.resolve(),
|
||||
bulkWrite: (ops, params, cb) => cb(null),
|
||||
};
|
||||
client.putObjectVerCase1(collection, 'example-bucket', 'example-object', {}, {}, logger, (err, res) => {
|
||||
assert.deepStrictEqual(err, null);
|
||||
|
@ -282,7 +282,7 @@ describe('MongoClientInterface:putObjectVerCase2', () => {
|
|||
|
||||
it('should return new object versionId', done => {
|
||||
const collection = {
|
||||
updateOne: () => Promise.resolve(),
|
||||
update: (filter, update, params, cb) => cb(null),
|
||||
};
|
||||
client.putObjectVerCase2(collection, 'example-bucket', 'example-object', {}, {}, logger, (err, res) => {
|
||||
assert.deepStrictEqual(err, null);
|
||||
|
@ -293,7 +293,7 @@ describe('MongoClientInterface:putObjectVerCase2', () => {
|
|||
|
||||
it('should fail when update fails', done => {
|
||||
const collection = {
|
||||
updateOne: () => Promise.reject(errors.InternalError),
|
||||
update: (filter, update, params, cb) => cb(errors.InternalError),
|
||||
};
|
||||
client.putObjectVerCase2(collection, 'example-bucket', 'example-object', {}, {}, logger, err => {
|
||||
assert.deepStrictEqual(err, errors.InternalError);
|
||||
|
@ -323,7 +323,7 @@ describe('MongoClientInterface:putObjectVerCase3', () => {
|
|||
|
||||
it('should throw InternalError when findOne fails', done => {
|
||||
const collection = {
|
||||
findOne: () => Promise.reject(errors.InternalError),
|
||||
findOne: (filter, cb) => cb(errors.InternalError),
|
||||
};
|
||||
client.putObjectVerCase3(collection, 'example-bucket', 'example-object', {}, {}, logger, err => {
|
||||
assert.deepStrictEqual(err, errors.InternalError);
|
||||
|
@ -333,8 +333,8 @@ describe('MongoClientInterface:putObjectVerCase3', () => {
|
|||
|
||||
it('should throw NoSuchVersion when bulkWrite fails', done => {
|
||||
const collection = {
|
||||
findOne: () => Promise.resolve({}),
|
||||
bulkWrite: () => Promise.reject(errors.InternalError),
|
||||
findOne: (filter, cb) => cb(null, {}),
|
||||
bulkWrite: (ops, params, cb) => cb(errors.InternalError),
|
||||
};
|
||||
client.putObjectVerCase3(collection, 'example-bucket', 'example-object', {}, {}, logger, err => {
|
||||
assert.deepStrictEqual(err, errors.NoSuchVersion);
|
||||
|
@ -347,8 +347,8 @@ describe('MongoClientInterface:putObjectVerCase3', () => {
|
|||
code: 11000,
|
||||
};
|
||||
const collection = {
|
||||
findOne: () => Promise.resolve({}),
|
||||
bulkWrite: () => Promise.reject(error),
|
||||
findOne: (filter, cb) => cb(null, {}),
|
||||
bulkWrite: (ops, params, cb) => cb(error),
|
||||
};
|
||||
client.putObjectVerCase3(collection, 'example-bucket', 'example-object', {}, {}, logger, err => {
|
||||
assert.deepStrictEqual(err, errors.InternalError);
|
||||
|
@ -358,8 +358,8 @@ describe('MongoClientInterface:putObjectVerCase3', () => {
|
|||
|
||||
it('should return versionId', done => {
|
||||
const collection = {
|
||||
findOne: () => Promise.resolve({}),
|
||||
bulkWrite: () => Promise.resolve(),
|
||||
findOne: (filter, cb) => cb(null, {}),
|
||||
bulkWrite: (ops, params, cb) => cb(null),
|
||||
};
|
||||
client.putObjectVerCase3(collection, 'example-bucket', 'example-object', {}, {}, logger, (err, res) => {
|
||||
assert.deepStrictEqual(err, null);
|
||||
|
@ -391,8 +391,8 @@ describe('MongoClientInterface:putObjectVerCase4', () => {
|
|||
it('should return versionId', done => {
|
||||
sinon.stub(client, 'getLatestVersion').callsFake((...args) => args[4](null, {}));
|
||||
const collection = {
|
||||
updateOne: () => Promise.resolve(),
|
||||
bulkWrite: () => Promise.resolve({}),
|
||||
update: (filter, update, params, cb) => cb(null),
|
||||
bulkWrite: (ops, params, cb) => cb(null, {}),
|
||||
};
|
||||
client.putObjectVerCase4(collection, 'example-bucket', 'example-object', {}, {}, logger, (err, res) => {
|
||||
assert.deepStrictEqual(err, null);
|
||||
|
@ -404,8 +404,8 @@ describe('MongoClientInterface:putObjectVerCase4', () => {
|
|||
it('should fail when update fails', done => {
|
||||
sinon.stub(client, 'getLatestVersion').callsFake((...args) => args[4](null, {}));
|
||||
const collection = {
|
||||
updateOne: () => Promise.reject(errors.InternalError),
|
||||
bulkWrite: () => Promise.reject(errors.InternalError),
|
||||
update: (filter, update, params, cb) => cb(errors.InternalError),
|
||||
bulkWrite: (ops, params, cb) => cb(errors.InternalError),
|
||||
};
|
||||
client.putObjectVerCase4(collection, 'example-bucket', 'example-object', {}, {}, logger, err => {
|
||||
assert.deepStrictEqual(err, errors.InternalError);
|
||||
|
@ -416,8 +416,8 @@ describe('MongoClientInterface:putObjectVerCase4', () => {
|
|||
it('should fail when getLatestVersion fails', done => {
|
||||
sinon.stub(client, 'getLatestVersion').callsFake((...args) => args[4](errors.InternalError));
|
||||
const collection = {
|
||||
updateOne: () => Promise.resolve(),
|
||||
bulkWrite: () => Promise.resolve(),
|
||||
update: (filter, update, params, cb) => cb(null),
|
||||
bulkWrite: (ops, params, cb) => cb(null),
|
||||
};
|
||||
client.putObjectVerCase4(collection, 'example-bucket', 'example-object', {}, {}, logger, err => {
|
||||
assert.deepStrictEqual(err, errors.InternalError);
|
||||
|
@ -446,7 +446,7 @@ describe('MongoClientInterface:putObjectNoVer', () => {
|
|||
|
||||
it('should not fail', done => {
|
||||
const collection = {
|
||||
updateOne: () => Promise.resolve({}),
|
||||
update: (filter, update, params, cb) => cb(null, {}),
|
||||
};
|
||||
client.putObjectNoVer(collection, 'example-bucket', 'example-object', {}, {}, logger, err => {
|
||||
assert.deepStrictEqual(err, undefined);
|
||||
|
@ -456,7 +456,7 @@ describe('MongoClientInterface:putObjectNoVer', () => {
|
|||
|
||||
it('should fail when update fails', done => {
|
||||
const collection = {
|
||||
updateOne: () => Promise.reject(errors.InternalError),
|
||||
update: (filter, update, params, cb) => cb(errors.InternalError),
|
||||
};
|
||||
client.putObjectNoVer(collection, 'example-bucket', 'example-object', {}, {}, logger, err => {
|
||||
assert.deepStrictEqual(err, errors.InternalError);
|
||||
|
|
|
@ -46,7 +46,7 @@ describe('MongoClientInterface:putObjectWithCond', () => {
|
|||
|
||||
it('should fail when findOneAndUpdate fails', done => {
|
||||
const collection = {
|
||||
findOneAndUpdate: () => Promise.reject(errors.InternalError),
|
||||
findOneAndUpdate: (filter, query, params, cb) => cb(errors.InternalError),
|
||||
};
|
||||
sinon.stub(client, 'getCollection').callsFake(() => collection);
|
||||
sinon.stub(client, 'getBucketVFormat').callsFake((bucketName, log, cb) => cb(null));
|
||||
|
|
Loading…
Reference in New Issue