Przeglądaj źródła

fix eventlogger tests to use name with dashes

Brian Gough 7 lat temu
rodzic
commit
936311f1fb

+ 55 - 31
services/real-time/test/unit/coffee/EventLoggerTests.coffee

@@ -11,9 +11,11 @@ describe 'EventLogger', ->
 		tk.freeze(new Date(@start))
 		@EventLogger = SandboxedModule.require modulePath, requires:
 			"logger-sharelatex": @logger = {error: sinon.stub()}
-		@id_1 = "abc-1"
+			"metrics-sharelatex": @metrics = {inc: sinon.stub()}
+		@channel = "applied-ops"
+		@id_1 = "random-hostname:abc-1"
 		@message_1 = "message-1"
-		@id_2 = "abc-2"
+		@id_2 = "random-hostname:abc-2"
 		@message_2 = "message-2"
 
 	afterEach ->
@@ -21,32 +23,54 @@ describe 'EventLogger', ->
 
 	describe 'checkEventOrder', ->
 
-		it 'should accept events in order', ->
-			@EventLogger.checkEventOrder(@id_1, @message_1)
-			status = @EventLogger.checkEventOrder(@id_2, @message_2)
-			expect(status).to.be.undefined
-
-		it 'should return "duplicate" for the same event', ->
-			@EventLogger.checkEventOrder(@id_1, @message_1)
-			status = @EventLogger.checkEventOrder(@id_1, @message_1)
-			expect(status).to.equal "duplicate"
-
-		it 'should log an error for out of order events', ->
-			@EventLogger.checkEventOrder(@id_1, @message_1)
-			@EventLogger.checkEventOrder(@id_2, @message_2)
-			status = @EventLogger.checkEventOrder(@id_1, @message_1)
-			expect(status).to.be.undefined
-
-		it 'should flush old entries', ->
-			@EventLogger.MAX_EVENTS_BEFORE_CLEAN = 10
-			@EventLogger.checkEventOrder(@id_1, @message_1)
-			for i in [1..8]
-				status = @EventLogger.checkEventOrder(@id_1, @message_1)
-				expect(status).to.equal "duplicate"
-			# the next event should flush the old entries aboce
-			@EventLogger.MAX_STALE_TIME_IN_MS=1000
-			tk.freeze(new Date(@start + 5 * 1000))
-			# because we flushed the entries this should not be a duplicate
-			@EventLogger.checkEventOrder('other-1', @message_2)
-			status = @EventLogger.checkEventOrder(@id_1, @message_1)
-			expect(status).to.be.undefined
+		describe 'when the events are in order', ->
+			beforeEach ->
+				@EventLogger.checkEventOrder(@channel, @id_1, @message_1)
+				@status = @EventLogger.checkEventOrder(@channel, @id_2, @message_2)
+
+			it 'should accept events in order', ->
+				expect(@status).to.be.undefined
+
+			it 'should increment the valid event metric', ->
+				@metrics.inc.calledWith("event.#{@channel}.valid", 1)
+					.should.equal.true
+
+		describe 'when there is a duplicate events', ->
+			beforeEach ->
+				@EventLogger.checkEventOrder(@channel, @id_1, @message_1)
+				@status = @EventLogger.checkEventOrder(@channel, @id_1, @message_1)
+
+			it 'should return "duplicate" for the same event', ->
+				expect(@status).to.equal "duplicate"
+
+			it 'should increment the duplicate event metric', ->
+				@metrics.inc.calledWith("event.#{@channel}.duplicate", 1)
+					.should.equal.true
+
+		describe 'when there are out of order events', ->
+			beforeEach ->
+				@EventLogger.checkEventOrder(@channel, @id_1, @message_1)
+				@EventLogger.checkEventOrder(@channel, @id_2, @message_2)
+				@status = @EventLogger.checkEventOrder(@channel, @id_1, @message_1)
+
+			it 'should return "out-of-order" for the event', ->
+				expect(@status).to.equal "out-of-order"
+
+			it 'should increment the out-of-order event metric', ->
+				@metrics.inc.calledWith("event.#{@channel}.out-of-order", 1)
+					.should.equal.true
+
+		describe 'after MAX_STALE_TIME_IN_MS', ->
+			it 'should flush old entries', ->
+				@EventLogger.MAX_EVENTS_BEFORE_CLEAN = 10
+				@EventLogger.checkEventOrder(@channel, @id_1, @message_1)
+				for i in [1..8]
+					status = @EventLogger.checkEventOrder(@channel, @id_1, @message_1)
+					expect(status).to.equal "duplicate"
+				# the next event should flush the old entries aboce
+				@EventLogger.MAX_STALE_TIME_IN_MS=1000
+				tk.freeze(new Date(@start + 5 * 1000))
+				# because we flushed the entries this should not be a duplicate
+				@EventLogger.checkEventOrder(@channel, 'other-1', @message_2)
+				status = @EventLogger.checkEventOrder(@channel, @id_1, @message_1)
+				expect(status).to.be.undefined