[bug] Add storage test with tenant; Fix bug 68563

This commit is contained in:
Sergey Konovalov
2024-06-11 19:18:00 +03:00
parent 96a5d76fb7
commit bf8ff4daa8
3 changed files with 30 additions and 7 deletions

View File

@ -65,17 +65,17 @@ function isDiffrentPersistentStorage() {
async function headObject(ctx, strPath, opt_specialDir) {
let storage = getStorage(opt_specialDir);
let storageCfg = getStorageCfg(ctx, opt_specialDir);
return await storage.headObject(storageCfg, getStoragePath(storageCfg, strPath, opt_specialDir));
return await storage.headObject(storageCfg, getStoragePath(ctx, strPath, opt_specialDir));
}
async function getObject(ctx, strPath, opt_specialDir) {
let storage = getStorage(opt_specialDir);
let storageCfg = getStorageCfg(ctx, opt_specialDir);
return await storage.getObject(storageCfg, getStoragePath(storageCfg, strPath, opt_specialDir));
return await storage.getObject(storageCfg, getStoragePath(ctx, strPath, opt_specialDir));
}
async function createReadStream(ctx, strPath, opt_specialDir) {
let storage = getStorage(opt_specialDir);
let storageCfg = getStorageCfg(ctx, opt_specialDir);
return await storage.createReadStream(storageCfg, getStoragePath(storageCfg, strPath, opt_specialDir));
return await storage.createReadStream(storageCfg, getStoragePath(ctx, strPath, opt_specialDir));
}
async function putObject(ctx, strPath, buffer, contentLength, opt_specialDir) {
let storage = getStorage(opt_specialDir);

View File

@ -262,8 +262,13 @@ function getTenantLicense(ctx) {
function getServerLicense(ctx) {
return licenseInfo;
}
let hasBaseDir = !!cfgTenantsBaseDir;
function isMultitenantMode(ctx) {
return !!cfgTenantsBaseDir;
return hasBaseDir;
}
function setMultitenantMode(val) {
//for tests only!!
return hasBaseDir = val;
}
function isDefaultTenant(ctx) {
return ctx.tenant === cfgTenantsDefaultTenant;
@ -405,4 +410,5 @@ exports.getTenantLicense = getTenantLicense;
exports.getServerLicense = getServerLicense;
exports.setDefLicense = setDefLicense;
exports.isMultitenantMode = isMultitenantMode;
exports.setMultitenantMode = setMultitenantMode;
exports.isDefaultTenant = isDefaultTenant;

View File

@ -16,6 +16,7 @@ jest.mock("fs/promises", () => ({
const { cp } = require('fs/promises');
const operationContext = require('../../../Common/sources/operationContext');
const tenantManager = require('../../../Common/sources/tenantManager');
const storage = require('../../../Common/sources/storage-base');
const utils = require('../../../Common/sources/utils');
const commonDefines = require("../../../Common/sources/commondefines");
@ -52,8 +53,12 @@ function request(url) {
});
});
}
function runTestForDir(specialDir) {
function runTestForDir(ctx, isMultitenantMode, specialDir) {
let oldMultitenantMode = tenantManager.isMultitenantMode();
test("start listObjects", async () => {
//todo set in all tests do not rely on test order
tenantManager.setMultitenantMode(isMultitenantMode);
let list = await storage.listObjects(ctx, testDir, specialDir);
expect(list).toEqual([]);
});
@ -213,20 +218,32 @@ function runTestForDir(specialDir) {
list = await storage.listObjects(ctx, testDir, specialDir);
expect(list.sort()).toEqual([].sort());
tenantManager.setMultitenantMode(oldMultitenantMode);
});
}
// Assumed, that server is already up.
describe('storage common dir', function () {
runTestForDir(specialDirCache);
runTestForDir(ctx, false, specialDirCache);
});
describe('storage forgotten dir', function () {
runTestForDir(specialDirForgotten);
runTestForDir(ctx, false, specialDirForgotten);
});
describe('storage common dir with tenants', function () {
runTestForDir(ctx, true, specialDirCache);
});
describe('storage forgotten dir with tenants', function () {
runTestForDir(ctx, true, specialDirForgotten);
});
describe('storage mix common and forgotten dir', function () {
test("putObject", async () => {
tenantManager.setMultitenantMode(false);
let buffer = Buffer.from(testFileData1);
let res = await storage.putObject(ctx, testFile1, buffer, buffer.length, specialDirCache);
expect(res).toEqual(undefined);