diff --git a/README.md b/README.md index 7bd102d..1e69746 100644 --- a/README.md +++ b/README.md @@ -20,18 +20,18 @@ npm install mongo-leader ## Example ```javascript -const { Leader } = require('mongo-leader'); -const { MongoClient } = require('mongodb'); +const { Leader } = require('mongo-leader') +const { MongoClient } = require('mongodb') -const url = 'mongodb://localhost:27017'; +const url = 'mongodb://localhost:27017' MongoClient.connect(url, { useNewUrlParser: true }, function (err, client) { - const db = client.db('test'); - const leader = new Leader(db, { ttl: 5000, wait: 1000 }); + const db = client.db('test') + const leader = new Leader(db, { ttl: 5000, wait: 1000 }) setInterval(() => { - leader.isLeader().then(leader => console.log(`Am I leader? : ${leader}`)); - }, 100); -}); + leader.isLeader().then((leader) => console.log(`Am I leader? : ${leader}`)) + }, 100) +}) ``` ## API diff --git a/index.js b/index.js index d67d1b9..e5ee6af 100644 --- a/index.js +++ b/index.js @@ -58,7 +58,7 @@ class Leader extends EventEmitter { } elect() { - if (this.stopped) return + if (this.paused) return this.db .collection(this.key) .findOneAndUpdate( @@ -77,7 +77,7 @@ class Leader extends EventEmitter { } renew() { - if (this.stopped) return + if (this.paused) return this.db .collection(this.key) .findOneAndUpdate( @@ -95,12 +95,15 @@ class Leader extends EventEmitter { }) } - stop() { - this.stopped = true + pause() { + if (!this.paused) this.paused = true } - start() { - this.stopped = false + resume() { + if (this.paused) { + this.paused = false + this.elect() + } } } diff --git a/tests/index.test.js b/tests/index.test.js index d8853d4..4a1fc09 100644 --- a/tests/index.test.js +++ b/tests/index.test.js @@ -19,7 +19,7 @@ describe('Leader', () => { expect(leader.key).toMatch(/^leader-?/) } finally { // Cleanup - leader.stop() + leader.pause() } }) }) @@ -34,7 +34,7 @@ describe('Leader', () => { expect(mockCollection.createIndex).toHaveBeenCalled() } finally { // Cleanup - leader.stop() + leader.pause() } }) }) @@ -50,7 +50,7 @@ describe('Leader', () => { expect(result).toBe(true) } finally { // Cleanup - leader.stop() + leader.pause() } }) }) @@ -65,7 +65,7 @@ describe('Leader', () => { expect(mockCollection.findOneAndUpdate).toHaveBeenCalled() } finally { // Cleanup - leader.stop() + leader.pause() } }) }) @@ -80,22 +80,22 @@ describe('Leader', () => { expect(mockCollection.findOneAndUpdate).toHaveBeenCalled() } finally { // Cleanup - leader.stop() + leader.pause() } }) }) - describe('stop', () => { - it('should stop the leader', function () { + describe('pause', () => { + it('should pause the leader', function () { // Arrange const leader = new Leader(mockDb) try { // Act - leader.stop() + leader.pause() // Assert - expect(leader.stopped).toBe(true) + expect(leader.paused).toBe(true) } finally { // Cleanup - leader.stop() + leader.pause() } }) }) @@ -105,13 +105,13 @@ describe('Leader', () => { const leader = new Leader(mockDb) try { // Act - leader.stop() - leader.start() + leader.pause() + leader.resume() // Assert - expect(leader.stopped).toBe(false) + expect(leader.paused).toBe(false) } finally { // Cleanup - leader.stop() + leader.pause() } }) })