guv
Version:
Grid Utilization Virgilante
56 lines (43 loc) • 1.47 kB
text/coffeescript
chai = require 'chai'
guv = require '..'
mocks = require './mocks'
mocks.enable = true
describe 'Statuspage.io metrics', ->
governor = null
before () ->
mocks.startRecord()
after () ->
mocks.stopRecord()
# Happy cases
describe 'enabled', ->
c = \
"""
'*': { app: 'guv-test', statuspage: 'statuspage-pageid-113'}
my: {queue: 'myrole.IN', worker: web, metric: 'statuspage-metricid-990'}
"""
cfg = guv.config.parse c
beforeEach (done) ->
process.env['STATUSPAGE_API_TOKEN'] = 'statuspage-api-token-444'
governor = new guv.governor.Governor cfg
guv.statuspage.register governor, cfg
chai.expect(cfg['*'].broker).to.include 'amqp://'
done()
afterEach (done) ->
guv.statuspage.unregister governor, cfg
governor.stop()
done()
describe 'when state changes', ->
it 'should report pending jobs', (done) ->
mocks.RabbitMQ.setQueues { 'myrole.IN': { 'messages': 1000 } }
postMetrics = mocks.StatusPageIO.expectMetric cfg['*'].statuspage, cfg.my.metric, 1000
setWorkers = mocks.Heroku.expectWorkers 'guv-test', { 'web': cfg.my.maximum }
governor.once 'error', (err) ->
console.log err.stack if err
chai.expect(err).to.not.exist
governor.once 'state', (state) ->
setTimeout ->
postMetrics.done()
setWorkers.done()
done()
, 0
governor.start()