Skip to content

Commit

Permalink
mu-error
Browse files Browse the repository at this point in the history
  • Loading branch information
davidmarkclements committed Oct 26, 2016
1 parent 31a8507 commit ceabeaa
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 47 deletions.
7 changes: 0 additions & 7 deletions core/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
var assert = require('assert')
var uuid = require('uuid')
var pino = require('pino')
var errors = require('./err')
var createRouter = require('./router')
var DEFAULT_TTL = 10

Expand Down Expand Up @@ -84,10 +83,4 @@ createMu.log = Object.keys(pino.levels.values).reduce((acc, key) => {
return acc
}, {})

createMu.errors = {
SERVICE_ERR: errors.SERVICE_ERR,
FRAMEWORK_ERR: errors.FRAMEWORK_ERR,
TRANSPORT_ERR: errors.TRANSPORT_ERR
}

module.exports = createMu
21 changes: 0 additions & 21 deletions core/err.js

This file was deleted.

20 changes: 11 additions & 9 deletions core/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
var bloomrun = require('bloomrun')
var assert = require('assert')
var stringify = require('fast-safe-stringify')
var errors = require('./err')
var mue = require('mu-error')({dev: process.NODE_ENV !== 'production'})

/**
* pattern router. responsible for the routing table
Expand Down Expand Up @@ -68,7 +68,7 @@ module.exports = function (logger) {
if (tf.type === 'handler') {
logger.debug(message, 'handling message')
tf.tf(message, function (err, response) {
cb(err || null, response || {})
cb(mue.wrap(err || null), response || {})
})
} else if (tf.type === 'transport') {
// update the repsponse routing information
Expand All @@ -81,18 +81,20 @@ module.exports = function (logger) {
// be logged and an exception thrown. This will result in this node crashing and restarting - this is by design
if (tf.direction === 'outbound') {
tf.tf(message, function (err) {
if (err) { return cb(err) }
if (err) {
return cb(mue.wrap(err))
}
})
} else {
logger.error('Routing error: no valid outbound route or handler available. Message will be discarded')
cb({type: errors.TRANSPORT_ERR, message: 'Routing error: no valid outbound route available. Message will be discarded'})
cb(mue.transport('Routing error: no valid outbound route available. Message will be discarded'))
}
}
} else {
// unable to find a route, discard message
logger.error('Routing error no matching route and no defualt route provided, Message will be discarded')
logger.error('Routing error no matching route and no default route provided, Message will be discarded')
logger.debug(message, 'discarded message')
cb({type: errors.TRANSPORT_ERR, message: 'Routing error no matching route and no defualt route provided, Message will be discarded', data: message})
cb(mue.transport('Routing error no matching route and no default route provided, Message will be discarded', message))
}
} else if (message && message.response) {
// we are routing a response message as there is a response block on the message and no pattern block
Expand All @@ -108,19 +110,19 @@ module.exports = function (logger) {
idmap[muid].tf(message.response.err || null, message.response)
} else {
idmap[muid].tf(message, function (err, response) {
cb(err, response)
cb(mue.wrap(err), response)
})
}
} else {
// there is no available transport or handler for this mu id, this should never happen, discard the packet...
logger.error(message, 'routing error no available response transport function for')
cb('routing error no available response transport function for: ' + stringify(message))
cb(mue.framework('routing error no available response transport function', message))
}
} else {
// missing both pattern and response fields, this should never happen, discard packet...
logger.error('malformed packet no pattern or response field. Message will be discarded')
logger.debug(message, 'malformed message')
cb({type: errors.TRANSPORT_ERR, message: 'Malformed packet no pattern or response field. Message will be discarded', data: message})
cb(mue.transport('Malformed packet no pattern or response field. Message will be discarded', message))
}
}

Expand Down
4 changes: 2 additions & 2 deletions drivers/function-driver/driver.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
*/

'use strict'

var mue = require('mu-error')({dev: process.NODE_ENV !== 'production'})
var register = {}

/**
Expand Down Expand Up @@ -52,7 +52,7 @@ module.exports = function createFunctionDriver (options) {

function call (message) {
if (message && message.pattern && message.pattern.__err) {
cb(message.pattern.__err, message)
cb(mue(message.pattern.__err), message)
} else {
cb(null, message)
}
Expand Down
3 changes: 2 additions & 1 deletion drivers/tcp-driver/driver.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
var net = require('net')
var EventEmitter = require('events')
var stringify = require('fast-safe-stringify')
var mue = require('mu-error')()
var SIGNATURE = 4242

/**
Expand Down Expand Up @@ -84,7 +85,7 @@ module.exports = function createTcpDriver (options) {

connections[message.protocol.dst].on('error', function (err) {
connections[message.protocol.dst] = null
cb(err || null, null)
cb(mue.wrap(err || null))
})
}
connections[message.protocol.dst].write(encode(message))
Expand Down
15 changes: 11 additions & 4 deletions test/drivers/error.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
'use strict'

var test = require('tap').test
var mue = require('mu-error')
var mu = require('../../core/core')()
var tcp = require('../../drivers/tcp')
var errorService = require('./system/errorService/service')
Expand All @@ -30,7 +31,7 @@ test('test no service', function (t) {
mu.outbound('*', tcp.client({port: 3001, host: '127.0.0.1'}))
mu.dispatch({role: 'wibble', cmd: 'fish'}, function (err, result) {
mu.tearDown()
t.equal(err.code, 'ECONNREFUSED', 'check connection refused')
t.is(err.code, 'ECONNREFUSED', 'check connection refused')
t.end()
})
})
Expand All @@ -40,7 +41,9 @@ test('test match nothing', function (t) {
mu.outbound('*', tcp.client({port: 3001, host: '127.0.0.1'}))
mu.dispatch({role: 'wibble', cmd: 'fish'}, function (err, result) {
mu.tearDown()
t.deepEqual(err, { message: 'Routing error: no valid outbound route available. Message will be discarded', type: 3 })
err = mue.extract(err)
t.is(err.code, mue.ERRORS.TRANSPORT)
t.is(err.message, 'Routing error: no valid outbound route available. Message will be discarded')
errSvc.tearDown()
t.end()
})
Expand All @@ -52,7 +55,9 @@ test('test match partial', function (t) {
mu.outbound('*', tcp.client({port: 3001, host: '127.0.0.1'}))
mu.dispatch({role: 'error', cmd: 'fish'}, function (err, result) {
mu.tearDown()
t.deepEqual(err, { message: 'Routing error: no valid outbound route available. Message will be discarded', type: 3 })
err = mue.extract(err)
t.is(err.code, mue.ERRORS.TRANSPORT)
t.is(err.message, 'Routing error: no valid outbound route available. Message will be discarded')
errSvc.tearDown()
t.end()
})
Expand All @@ -64,7 +69,9 @@ test('service returning inbound error', function (t) {
mu.outbound('*', tcp.client({port: 3001, host: '127.0.0.1'}))
mu.dispatch({role: 'error', cmd: 'error'}, function (err, result) {
mu.tearDown()
t.equal(err, 'oh fek', 'check error response')
err = mue.extract(err)
t.is(err.code, mue.ERRORS.SERVICE)
t.is(err.message, 'oh fek', 'check error response')
errSvc.tearDown()
t.end()
})
Expand Down
2 changes: 1 addition & 1 deletion test/drivers/force-driver-error.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ var test = require('tap').test
var createMu = require('../../core/core')
var func = require('../../drivers/func')

test('force an error with function trasport test for coverage numbers', function (t) {
test('force an error with function transport test for coverage numbers', function (t) {
t.plan(1)

var mu1 = createMu()
Expand Down
2 changes: 1 addition & 1 deletion test/drivers/routing-errors.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ test('test no service', function (t) {
mu.dispatch({role: 's1', cmd: 'one'}, function (err, result) {
t.equal(err, null)
mu.dispatch({wibble: 'fish'}, function (err, result) {
t.equal(err.message, 'Routing error no matching route and no defualt route provided, Message will be discarded')
t.equal(err.message, 'Routing error no matching route and no default route provided, Message will be discarded')
s1.tearDown()
mu.tearDown()
})
Expand Down
3 changes: 2 additions & 1 deletion test/drivers/system/errorService/service.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@
'use strict'

var mu = require('../../../../core/core')()
var mue = require('mu-error')()

module.exports = function (cb) {
mu.define({role: 'error', cmd: 'error'}, function (args, cb) {
cb('oh fek', null)
cb(mue('oh fek'), null)
})

mu.define({role: 'error', cmd: 'crash'}, function (args, cb) {
Expand Down

0 comments on commit ceabeaa

Please sign in to comment.