mirror of
https://github.com/balena-os/balena-supervisor.git
synced 2024-12-26 08:51:06 +00:00
51e59725f8
Change-type: patch Signed-off-by: Christina Ying Wang <christina@balena.io>
31 lines
932 B
TypeScript
31 lines
932 B
TypeScript
import { expect } from 'chai';
|
|
import * as deviceState from '~/src/device-state';
|
|
|
|
describe('usingInferStepsLock', () => {
|
|
it('should not allow to start a function call without finishing the previous sequential call of the function', async () => {
|
|
const result: string[] = [];
|
|
const fn = async (id: number, str: string) => {
|
|
return deviceState.usingInferStepsLock(async () => {
|
|
if (id < 3 || id === 20) {
|
|
result.push(`Started ${id}, ${str} call`);
|
|
await fn(id + 1, 'first');
|
|
await fn(id + 1, 'second');
|
|
result.push(`Finished ${id}, ${str} call`);
|
|
}
|
|
});
|
|
};
|
|
await fn(1, 'master');
|
|
await fn(20, 'master');
|
|
expect(result).to.deep.equal([
|
|
'Started 1, master call',
|
|
'Started 2, first call',
|
|
'Finished 2, first call',
|
|
'Started 2, second call',
|
|
'Finished 2, second call',
|
|
'Finished 1, master call',
|
|
'Started 20, master call',
|
|
'Finished 20, master call',
|
|
]);
|
|
});
|
|
});
|