unity-builder/src/model/cloud-runner/tests/shared-workspace-locking.te...

79 lines
3.5 KiB
TypeScript
Raw Normal View History

2022-09-17 03:38:00 +00:00
import SharedWorkspaceLocking from '../../cli/shared-workspace-locking';
2022-09-17 04:09:36 +00:00
import { Cli } from '../../cli/cli';
2022-09-17 04:44:07 +00:00
import setups from './cloud-runner-suite.test';
2022-09-29 20:30:34 +00:00
import CloudRunnerLogger from '../services/cloud-runner-logger';
import { v4 as uuidv4 } from 'uuid';
2022-09-29 21:16:28 +00:00
import CloudRunnerOptions from '../cloud-runner-options';
2022-09-17 03:38:00 +00:00
2022-09-20 21:02:26 +00:00
describe('Cloud Runner Locking', () => {
2022-09-17 04:44:07 +00:00
setups();
2022-09-29 21:16:28 +00:00
it('Responds', () => {});
if (CloudRunnerOptions.cloudRunnerTests) {
2022-10-05 01:58:53 +00:00
it(`Simple Locking Flow`, async () => {
2022-09-29 21:16:28 +00:00
Cli.options.retainWorkspaces = true;
2022-10-05 17:00:51 +00:00
const buildParameters: any = {
cacheKey: `test-workspace-${uuidv4()}`,
};
2022-09-29 21:16:28 +00:00
const newWorkspaceName = `test-workspace-${uuidv4()}`;
const runId = uuidv4();
2022-10-05 17:00:51 +00:00
await SharedWorkspaceLocking.CreateWorkspace(newWorkspaceName, buildParameters);
2022-09-29 21:16:28 +00:00
const isExpectedUnlockedBeforeLocking =
2022-10-05 17:00:51 +00:00
(await SharedWorkspaceLocking.IsWorkspaceLocked(newWorkspaceName, buildParameters)) === false;
2022-09-29 21:16:28 +00:00
expect(isExpectedUnlockedBeforeLocking).toBeTruthy();
2022-10-05 17:00:51 +00:00
await SharedWorkspaceLocking.LockWorkspace(newWorkspaceName, runId, buildParameters);
const isExpectedLockedAfterLocking =
(await SharedWorkspaceLocking.IsWorkspaceLocked(newWorkspaceName, buildParameters)) === true;
2022-09-29 21:16:28 +00:00
expect(isExpectedLockedAfterLocking).toBeTruthy();
2022-10-05 17:00:51 +00:00
const locksBeforeRelease = await SharedWorkspaceLocking.GetAllLocks(newWorkspaceName, buildParameters);
2022-09-29 21:16:28 +00:00
CloudRunnerLogger.log(JSON.stringify(locksBeforeRelease, undefined, 4));
expect(locksBeforeRelease.length > 1).toBeTruthy();
2022-10-05 17:00:51 +00:00
await SharedWorkspaceLocking.ReleaseWorkspace(newWorkspaceName, runId, buildParameters);
const locks = await SharedWorkspaceLocking.GetAllLocks(newWorkspaceName, buildParameters);
2022-09-29 21:16:28 +00:00
expect(locks.length === 1).toBeTruthy();
const isExpectedLockedAfterReleasing =
2022-10-05 17:00:51 +00:00
(await SharedWorkspaceLocking.IsWorkspaceLocked(newWorkspaceName, buildParameters)) === false;
2022-09-29 21:16:28 +00:00
expect(isExpectedLockedAfterReleasing).toBeTruthy();
}, 150000);
2022-10-05 01:58:53 +00:00
it('All Locking Actions', async () => {
2022-09-29 21:16:28 +00:00
Cli.options.retainWorkspaces = true;
2022-10-05 17:00:51 +00:00
const buildParameters: any = {
cacheKey: `test-workspace-${uuidv4()}`,
};
CloudRunnerLogger.log(
`GetAllWorkspaces ${JSON.stringify(await SharedWorkspaceLocking.GetAllWorkspaces(buildParameters))}`,
);
CloudRunnerLogger.log(
`GetFreeWorkspaces ${JSON.stringify(await SharedWorkspaceLocking.GetFreeWorkspaces(buildParameters))}`,
);
2022-09-29 21:16:28 +00:00
CloudRunnerLogger.log(
2022-10-04 22:12:56 +00:00
`IsWorkspaceLocked ${JSON.stringify(
2022-10-05 17:00:51 +00:00
await SharedWorkspaceLocking.IsWorkspaceLocked(`test-workspace-${uuidv4()}`, buildParameters),
2022-10-04 22:12:56 +00:00
)}`,
2022-09-29 21:16:28 +00:00
);
2022-10-05 17:00:51 +00:00
CloudRunnerLogger.log(
`GetFreeWorkspaces ${JSON.stringify(await SharedWorkspaceLocking.GetFreeWorkspaces(buildParameters))}`,
);
2022-10-05 01:58:53 +00:00
CloudRunnerLogger.log(
`LockWorkspace ${JSON.stringify(
2022-10-05 17:00:51 +00:00
await SharedWorkspaceLocking.LockWorkspace(`test-workspace-${uuidv4()}`, uuidv4(), buildParameters),
2022-10-05 01:58:53 +00:00
)}`,
);
CloudRunnerLogger.log(
`CreateLockableWorkspace ${JSON.stringify(
2022-10-05 17:00:51 +00:00
await SharedWorkspaceLocking.CreateWorkspace(`test-workspace-${uuidv4()}`, buildParameters),
2022-10-05 01:58:53 +00:00
)}`,
);
CloudRunnerLogger.log(
`GetLockedWorkspace ${JSON.stringify(
2022-10-05 17:00:51 +00:00
await SharedWorkspaceLocking.GetOrCreateLockedWorkspace(
`test-workspace-${uuidv4()}`,
uuidv4(),
buildParameters,
),
2022-10-05 01:58:53 +00:00
)}`,
);
2022-09-29 21:16:28 +00:00
}, 3000000);
}
2022-09-17 03:38:00 +00:00
});