aws-cdk
Version:
CDK Toolkit, the command line tool for CDK apps
51 lines • 5.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable import/order */
const os = require("os");
const path = require("path");
const rwlock_1 = require("../lib/api/util/rwlock");
function testDir() {
return path.join(os.tmpdir(), 'rwlock-tests');
}
test('writer lock excludes other locks', async () => {
// GIVEN
const lock = new rwlock_1.RWLock(testDir());
const w = await lock.acquireWrite();
// WHEN
try {
await expect(lock.acquireWrite()).rejects.toThrow(/currently synthing/);
await expect(lock.acquireRead()).rejects.toThrow(/currently synthing/);
}
finally {
await w.release();
}
});
test('reader lock allows other readers but not writers', async () => {
// GIVEN
const lock = new rwlock_1.RWLock(testDir());
const r = await lock.acquireRead();
// WHEN
try {
await expect(lock.acquireWrite()).rejects.toThrow(/currently reading/);
const r2 = await lock.acquireRead();
await r2.release();
}
finally {
await r.release();
}
});
test('can convert writer to reader lock', async () => {
// GIVEN
const lock = new rwlock_1.RWLock(testDir());
const w = await lock.acquireWrite();
// WHEN
const r = await w.convertToReaderLock();
try {
const r2 = await lock.acquireRead();
await r2.release();
}
finally {
await r.release();
}
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicndsb2NrLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyd2xvY2sudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUFpQztBQUNqQyx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLG1EQUFnRDtBQUVoRCxTQUFTLE9BQU87SUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxJQUFJLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDbEQsUUFBUTtJQUNSLE1BQU0sSUFBSSxHQUFHLElBQUksZUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkMsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFcEMsT0FBTztJQUNQLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RSxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDekUsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsa0RBQWtELEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDbEUsUUFBUTtJQUNSLE1BQU0sSUFBSSxHQUFHLElBQUksZUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkMsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFbkMsT0FBTztJQUNQLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV2RSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQixDQUFDO1lBQVMsQ0FBQztRQUNULE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLElBQUksRUFBRTtJQUNuRCxRQUFRO0lBQ1IsTUFBTSxJQUFJLEdBQUcsSUFBSSxlQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuQyxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVwQyxPQUFPO0lBQ1AsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUN4QyxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQixDQUFDO1lBQVMsQ0FBQztRQUNULE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9vcmRlciAqL1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFJXTG9jayB9IGZyb20gJy4uL2xpYi9hcGkvdXRpbC9yd2xvY2snO1xuXG5mdW5jdGlvbiB0ZXN0RGlyKCkge1xuICByZXR1cm4gcGF0aC5qb2luKG9zLnRtcGRpcigpLCAncndsb2NrLXRlc3RzJyk7XG59XG5cbnRlc3QoJ3dyaXRlciBsb2NrIGV4Y2x1ZGVzIG90aGVyIGxvY2tzJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBsb2NrID0gbmV3IFJXTG9jayh0ZXN0RGlyKCkpO1xuICBjb25zdCB3ID0gYXdhaXQgbG9jay5hY3F1aXJlV3JpdGUoKTtcblxuICAvLyBXSEVOXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhwZWN0KGxvY2suYWNxdWlyZVdyaXRlKCkpLnJlamVjdHMudG9UaHJvdygvY3VycmVudGx5IHN5bnRoaW5nLyk7XG4gICAgYXdhaXQgZXhwZWN0KGxvY2suYWNxdWlyZVJlYWQoKSkucmVqZWN0cy50b1Rocm93KC9jdXJyZW50bHkgc3ludGhpbmcvKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCB3LnJlbGVhc2UoKTtcbiAgfVxufSk7XG5cbnRlc3QoJ3JlYWRlciBsb2NrIGFsbG93cyBvdGhlciByZWFkZXJzIGJ1dCBub3Qgd3JpdGVycycsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgbG9jayA9IG5ldyBSV0xvY2sodGVzdERpcigpKTtcbiAgY29uc3QgciA9IGF3YWl0IGxvY2suYWNxdWlyZVJlYWQoKTtcblxuICAvLyBXSEVOXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhwZWN0KGxvY2suYWNxdWlyZVdyaXRlKCkpLnJlamVjdHMudG9UaHJvdygvY3VycmVudGx5IHJlYWRpbmcvKTtcblxuICAgIGNvbnN0IHIyID0gYXdhaXQgbG9jay5hY3F1aXJlUmVhZCgpO1xuICAgIGF3YWl0IHIyLnJlbGVhc2UoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCByLnJlbGVhc2UoKTtcbiAgfVxufSk7XG5cbnRlc3QoJ2NhbiBjb252ZXJ0IHdyaXRlciB0byByZWFkZXIgbG9jaycsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgbG9jayA9IG5ldyBSV0xvY2sodGVzdERpcigpKTtcbiAgY29uc3QgdyA9IGF3YWl0IGxvY2suYWNxdWlyZVdyaXRlKCk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByID0gYXdhaXQgdy5jb252ZXJ0VG9SZWFkZXJMb2NrKCk7XG4gIHRyeSB7XG4gICAgY29uc3QgcjIgPSBhd2FpdCBsb2NrLmFjcXVpcmVSZWFkKCk7XG4gICAgYXdhaXQgcjIucmVsZWFzZSgpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHIucmVsZWFzZSgpO1xuICB9XG59KTtcbiJdfQ==