UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

51 lines 5.27 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicndsb2NrLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyd2xvY2sudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUFpQztBQUNqQyx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLG1EQUFnRDtBQUVoRCxTQUFTLE9BQU87SUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxJQUFJLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDbEQsUUFBUTtJQUNSLE1BQU0sSUFBSSxHQUFHLElBQUksZUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkMsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFcEMsT0FBTztJQUNQLElBQUk7UUFDRixNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEUsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBQ3hFO1lBQVM7UUFDUixNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNuQjtBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGtEQUFrRCxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ2xFLFFBQVE7SUFDUixNQUFNLElBQUksR0FBRyxJQUFJLGVBQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRW5DLE9BQU87SUFDUCxJQUFJO1FBQ0YsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXZFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQ3BCO1lBQVM7UUFDUixNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNuQjtBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ25ELFFBQVE7SUFDUixNQUFNLElBQUksR0FBRyxJQUFJLGVBQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXBDLE9BQU87SUFDUCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3hDLElBQUk7UUFDRixNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNwQjtZQUFTO1FBQ1IsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7S0FDbkI7QUFDSCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9vcmRlciAqL1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFJXTG9jayB9IGZyb20gJy4uL2xpYi9hcGkvdXRpbC9yd2xvY2snO1xuXG5mdW5jdGlvbiB0ZXN0RGlyKCkge1xuICByZXR1cm4gcGF0aC5qb2luKG9zLnRtcGRpcigpLCAncndsb2NrLXRlc3RzJyk7XG59XG5cbnRlc3QoJ3dyaXRlciBsb2NrIGV4Y2x1ZGVzIG90aGVyIGxvY2tzJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBsb2NrID0gbmV3IFJXTG9jayh0ZXN0RGlyKCkpO1xuICBjb25zdCB3ID0gYXdhaXQgbG9jay5hY3F1aXJlV3JpdGUoKTtcblxuICAvLyBXSEVOXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhwZWN0KGxvY2suYWNxdWlyZVdyaXRlKCkpLnJlamVjdHMudG9UaHJvdygvY3VycmVudGx5IHN5bnRoaW5nLyk7XG4gICAgYXdhaXQgZXhwZWN0KGxvY2suYWNxdWlyZVJlYWQoKSkucmVqZWN0cy50b1Rocm93KC9jdXJyZW50bHkgc3ludGhpbmcvKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCB3LnJlbGVhc2UoKTtcbiAgfVxufSk7XG5cbnRlc3QoJ3JlYWRlciBsb2NrIGFsbG93cyBvdGhlciByZWFkZXJzIGJ1dCBub3Qgd3JpdGVycycsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgbG9jayA9IG5ldyBSV0xvY2sodGVzdERpcigpKTtcbiAgY29uc3QgciA9IGF3YWl0IGxvY2suYWNxdWlyZVJlYWQoKTtcblxuICAvLyBXSEVOXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhwZWN0KGxvY2suYWNxdWlyZVdyaXRlKCkpLnJlamVjdHMudG9UaHJvdygvY3VycmVudGx5IHJlYWRpbmcvKTtcblxuICAgIGNvbnN0IHIyID0gYXdhaXQgbG9jay5hY3F1aXJlUmVhZCgpO1xuICAgIGF3YWl0IHIyLnJlbGVhc2UoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCByLnJlbGVhc2UoKTtcbiAgfVxufSk7XG5cbnRlc3QoJ2NhbiBjb252ZXJ0IHdyaXRlciB0byByZWFkZXIgbG9jaycsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgbG9jayA9IG5ldyBSV0xvY2sodGVzdERpcigpKTtcbiAgY29uc3QgdyA9IGF3YWl0IGxvY2suYWNxdWlyZVdyaXRlKCk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByID0gYXdhaXQgdy5jb252ZXJ0VG9SZWFkZXJMb2NrKCk7XG4gIHRyeSB7XG4gICAgY29uc3QgcjIgPSBhd2FpdCBsb2NrLmFjcXVpcmVSZWFkKCk7XG4gICAgYXdhaXQgcjIucmVsZWFzZSgpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHIucmVsZWFzZSgpO1xuICB9XG59KTsiXX0=