當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript etcd3.Namespace類代碼示例

本文整理匯總了TypeScript中etcd3.Namespace的典型用法代碼示例。如果您正苦於以下問題:TypeScript Namespace類的具體用法?TypeScript Namespace怎麽用?TypeScript Namespace使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了Namespace類的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: describe

describe('locking', () => {
    let etcd: Etcd3;
    let nsp: Namespace;
    let lock: ConnectionLock;
    let clock: SinonFakeTimers;
    let watcher: Watcher;

    before(async () => {
        etcd = new Etcd3({ hosts: config.get<string[]>('etcd3.hosts') });
        nsp = etcd.namespace(`${config.get<string>('etcd3.namespace')}/locks/`);
        watcher = await nsp
            .watch()
            .key('connection')
            .create();
    });

    beforeEach(() => {
        lock = new ConnectionLock(etcd);
        lock.start();
        clock = useFakeTimers();
    });

    afterEach(async () => {
        clock.restore();
        await nsp
            .delete()
            .key('connection')
            .exec();
    });

    it('acquires the lock', async () => {
        await lock.create();
        expect(await nsp.get('connection').string()).to.not.be.null;
    });

    it('releases the lock', async () => {
        await lock.create();
        clock.tick(6000);
        await new Promise(resolve => {
            watcher.once('delete', () => resolve());
        });
    });

    it('retries if unable to lock', async () => {
        const acquire = stub(Lock.prototype, 'acquire')
            .onFirstCall()
            .rejects(new EtcdLockFailedError());
        const backoff = stub(lock, 'backoff').resolves();
        await lock.create();
        backoff.restore();
    });
});
開發者ID:WatchBeam,項目名稱:discord-sync,代碼行數:52,代碼來源:locking.test.ts

示例2: describe

describe('sharding', () => {
    let sharding: Sharding;
    let etcd: Etcd3;
    let nsp: Namespace;
    let lease: Lease;
    let grant: string;
    let doConnect: SinonSpy;

    before(() => {
        etcd = new Etcd3({ hosts: config.get<string[]>('etcd3.hosts') });
        nsp = etcd.namespace(`${config.get<string>('etcd3.namespace')}/shards/`);
    });

    beforeEach(async () => {
        doConnect = spy();
        lease = etcd.lease(5);
        grant = await lease.grant();
        sharding = new Sharding(etcd, doConnect);
    });

    afterEach(async () => {
        etcd.unmock();
        sharding.stop();
        await lease.revoke();
    });

    it('assigns shard id', async () => {
        await sharding.start();
        expect(doConnect).to.have.been.calledOnce.and.calledWith(0, 1);
    });

    it('updates total when new server available', async () => {
        await sharding.start();
        await nsp
            .put('1')
            .lease(grant)
            .exec();
        await sharding.syncShards();
        expect(doConnect).to.have.been.calledTwice.and.calledWith(0, 2);
    });

    it('does not reconnect with no changes', async () => {
        await sharding.start();
        await sharding.syncShards();
        expect(doConnect).to.have.been.calledOnce.and.calledWith(0, 1);
    });

    it('retries if unsuccessfully claimed shard', async () => {
        await nsp
            .put('0')
            .lease(grant)
            .exec();
        etcd.mock({
            exec(service, method, value) {
                etcd.unmock();
                return Promise.resolve({ kvs: [] });
            },
        });
        await sharding.createLease();
        expect(doConnect).to.have.been.calledOnce.and.calledWith(1, 2);
        nsp.delete().key('1');
    });

    it('releases old shard when switching', async () => {
        await nsp
            .put('0')
            .lease(grant)
            .exec();
        await sharding.start();
        await nsp
            .delete()
            .key('0')
            .exec();
        await sharding.syncShards();
        expect(doConnect).to.have.been.calledWith(0, 1);
        expect(await nsp.get('1')).to.equal(null);
    });
});
開發者ID:WatchBeam,項目名稱:discord-sync,代碼行數:78,代碼來源:sharding.test.ts

示例3: it

 it('releases old shard when switching', async () => {
     await nsp
         .put('0')
         .lease(grant)
         .exec();
     await sharding.start();
     await nsp
         .delete()
         .key('0')
         .exec();
     await sharding.syncShards();
     expect(doConnect).to.have.been.calledWith(0, 1);
     expect(await nsp.get('1')).to.equal(null);
 });
開發者ID:WatchBeam,項目名稱:discord-sync,代碼行數:14,代碼來源:sharding.test.ts

示例4: afterEach

 afterEach(async () => {
     clock.restore();
     await nsp
         .delete()
         .key('connection')
         .exec();
 });
開發者ID:WatchBeam,項目名稱:discord-sync,代碼行數:7,代碼來源:locking.test.ts

示例5: before

 before(async () => {
     etcd = new Etcd3({ hosts: config.get<string[]>('etcd3.hosts') });
     nsp = etcd.namespace(`${config.get<string>('etcd3.namespace')}/locks/`);
     watcher = await nsp
         .watch()
         .key('connection')
         .create();
 });
開發者ID:WatchBeam,項目名稱:discord-sync,代碼行數:8,代碼來源:locking.test.ts

示例6: it

 it('acquires the lock', async () => {
     await lock.create();
     expect(await nsp.get('connection').string()).to.not.be.null;
 });
開發者ID:WatchBeam,項目名稱:discord-sync,代碼行數:4,代碼來源:locking.test.ts


注:本文中的etcd3.Namespace類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。