UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

51 lines 5.36 kB
"use strict"; 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==