Skip to content

Commit

Permalink
Fix hapi v15.0.2 timing errors in tests
Browse files Browse the repository at this point in the history
  • Loading branch information
hueniverse committed Sep 5, 2016
1 parent 4a22673 commit 77bae30
Showing 1 changed file with 135 additions and 113 deletions.
248 changes: 135 additions & 113 deletions test/monitor.js
Expand Up @@ -194,7 +194,7 @@ describe('Monitor', () => {
expect(() => {

const monitor = internals.monitorFactory(new Hapi.Server(), options);
monitor.start(() => {});
monitor.start(() => { });
}).to.throw(Error, 'Error in foo. ../test/fixtures/reporters must be a constructor function.');

expect(() => {
Expand All @@ -204,7 +204,7 @@ describe('Monitor', () => {
name: 'NotStream'
}];
const monitor = internals.monitorFactory(new Hapi.Server(), options);
monitor.start(() => {});
monitor.start(() => { });
}).to.throw(Error, 'Error in foo. ../test/fixtures/reporters must create a stream that has a pipe function.');

done();
Expand Down Expand Up @@ -343,7 +343,7 @@ describe('Monitor', () => {
const out1 = new GoodReporter.Writer(true);
const out2 = new GoodReporter.Writer(true);
// remove these keys so deep.equal works. they change call to call and machine to machine
const filters = ['timestamp','pid', 'id', 'log', 'responseTime', 'source'];
const filters = ['timestamp', 'pid', 'id', 'log', 'responseTime', 'source'];
const monitor = internals.monitorFactory(server, {
reporters: {
foo: [
Expand Down Expand Up @@ -371,69 +371,72 @@ describe('Monitor', () => {
}, (res) => {

expect(res.statusCode).to.equal(500);
const res1 = out1.data;
const res2 = out2.data;

expect(res1).to.have.length(4);
expect(res1).to.contain([{
event: 'request',
tags: ['test-tag'],
data: 'log request data',
method: 'get',
path: '/',
config: { foo: 'bar' },
name: 'foo'
}, {
event: 'log',
tags: ['test'],
data: 'test data',
name: 'foo'
}, {
event: 'response',
instance: server.info.uri,
labels: [],
method: 'get',
path: '/',
query: { q: 'test' },
statusCode: 500,
config: { foo: 'bar' },
name: 'foo'
}]);

const err1 = JSON.parse(JSON.stringify(res1[2]));
expect(err1.event).to.equal('error');
expect(err1.error.error).to.equal('Uncaught error: mock error');
expect(err1.error.stack.split('\n')[0]).to.equal('Error: Uncaught error: mock error');

expect(res2).to.have.length(4);
expect(res2).to.contain([{
event: 'request',
tags: ['test-tag'],
data: 'log request data',
method: 'get',
path: '/',
config: { foo: 'bar' }
}, {
event: 'log',
tags: ['test'],
data: 'test data'
}, {
event: 'response',
instance: server.info.uri,
labels: [],
method: 'get',
path: '/',
query: { q: 'test' },
statusCode: 500,
config: { foo: 'bar' }
}]);

const err2 = JSON.parse(JSON.stringify(res1[2]));
expect(err2.event).to.equal('error');
expect(err2.error.error).to.equal('Uncaught error: mock error');
expect(err2.error.stack.split('\n')[0]).to.equal('Error: Uncaught error: mock error');

callback();
setTimeout(() => {

const res1 = out1.data;
const res2 = out2.data;

expect(res1).to.have.length(4);
expect(res1).to.contain([{
event: 'request',
tags: ['test-tag'],
data: 'log request data',
method: 'get',
path: '/',
config: { foo: 'bar' },
name: 'foo'
}, {
event: 'log',
tags: ['test'],
data: 'test data',
name: 'foo'
}, {
event: 'response',
instance: server.info.uri,
labels: [],
method: 'get',
path: '/',
query: { q: 'test' },
statusCode: 500,
config: { foo: 'bar' },
name: 'foo'
}]);

const err1 = JSON.parse(JSON.stringify(res1[2]));
expect(err1.event).to.equal('error');
expect(err1.error.error).to.equal('Uncaught error: mock error');
expect(err1.error.stack.split('\n')[0]).to.equal('Error: Uncaught error: mock error');

expect(res2).to.have.length(4);
expect(res2).to.contain([{
event: 'request',
tags: ['test-tag'],
data: 'log request data',
method: 'get',
path: '/',
config: { foo: 'bar' }
}, {
event: 'log',
tags: ['test'],
data: 'test data'
}, {
event: 'response',
instance: server.info.uri,
labels: [],
method: 'get',
path: '/',
query: { q: 'test' },
statusCode: 500,
config: { foo: 'bar' }
}]);

const err2 = JSON.parse(JSON.stringify(res1[2]));
expect(err2.event).to.equal('error');
expect(err2.error.error).to.equal('Uncaught error: mock error');
expect(err2.error.stack.split('\n')[0]).to.equal('Error: Uncaught error: mock error');

callback();
}, 50);
});
req.end();
}
Expand Down Expand Up @@ -480,21 +483,24 @@ describe('Monitor', () => {
}
}, (res) => {

const messages = out.data;
const response = messages[1];

expect(res.statusCode).to.equal(200);
expect(messages).to.have.length(2);

expect(response.event).to.equal('response');
expect(response.log).to.be.an.array();
expect(response.headers).to.exist();
expect(response.requestPayload).to.equal({
data: 'example payload'
});
expect(response.responsePayload).to.equal('done');
expect(response.route).to.equal('/');
server.stop(callback);
setTimeout(() => {

const messages = out.data;
const response = messages[1];

expect(messages).to.have.length(2);

expect(response.event).to.equal('response');
expect(response.log).to.be.an.array();
expect(response.headers).to.exist();
expect(response.requestPayload).to.equal({
data: 'example payload'
});
expect(response.responsePayload).to.equal('done');
expect(response.route).to.equal('/');
server.stop(callback);
}, 50);
});

req.write(JSON.stringify({
Expand Down Expand Up @@ -558,7 +564,7 @@ describe('Monitor', () => {
});

const out = new GoodReporter.Writer(true);
const monitor = internals.monitorFactory(server, { reporters: { foo : [out] } });
const monitor = internals.monitorFactory(server, { reporters: { foo: [out] } });

Async.series([
server.start.bind(server),
Expand All @@ -570,11 +576,14 @@ describe('Monitor', () => {
}, (res) => {

expect(res.statusCode).to.equal(201);
expect(out.data).to.have.length(1);
setTimeout(() => {

const event = out.data[0];
expect(event).to.be.an.instanceof(Utils.RequestSent);
server.stop(callback);
expect(out.data).to.have.length(1);

const event = out.data[0];
expect(event).to.be.an.instanceof(Utils.RequestSent);
server.stop(callback);
}, 50);
});
}
], done);
Expand Down Expand Up @@ -607,17 +616,20 @@ describe('Monitor', () => {
}, (res) => {

expect(res.statusCode).to.equal(500);
expect(out.data).to.have.length(2);
setTimeout(() => {

const event = out.data[0];
expect(event).to.be.an.instanceof(Utils.RequestError);
server.stop(callback);
expect(out.data).to.have.length(2);

const event = out.data[0];
expect(event).to.be.an.instanceof(Utils.RequestError);
server.stop(callback);
}, 50);
});
}
], done);
});

it('has a standard "log" data object', { plan: 3 }, (done) => {
it('has a standard "log" data object', { plan: 3 }, (done) => {

const server = new Hapi.Server();
server.connection();
Expand Down Expand Up @@ -645,12 +657,15 @@ describe('Monitor', () => {
}, (res) => {

expect(res.statusCode).to.equal(200);
expect(out.data).to.have.length(2);
setTimeout(() => {

const event = out.data[0];
expect(out.data).to.have.length(2);

expect(event).to.be.an.instanceof(Utils.ServerLog);
server.stop(callback);
const event = out.data[0];

expect(event).to.be.an.instanceof(Utils.ServerLog);
server.stop(callback);
}, 50);
});
}
], done);
Expand Down Expand Up @@ -684,12 +699,15 @@ describe('Monitor', () => {
}, (res) => {

expect(res.statusCode).to.equal(200);
expect(out.data).to.have.length(2);
setTimeout(() => {

const event = out.data[0];
expect(out.data).to.have.length(2);

expect(event).to.be.an.instanceof(Utils.RequestLog);
server.stop(callback);
const event = out.data[0];

expect(event).to.be.an.instanceof(Utils.RequestLog);
server.stop(callback);
}, 50);
});
}
], done);
Expand Down Expand Up @@ -738,12 +756,13 @@ describe('Monitor', () => {
});
},
server.stop.bind(server),
(callback) => setTimeout(callback, 100),
(callback) => {

expect(out.data).to.have.length(8);

expect(out.data[0].event).to.equal('start');
const internalEvents = [1, 4, 5];
const internalEvents = [1, 3, 5];

for (let i = 0; i < internalEvents.length; ++i) {
const index = internalEvents[i];
Expand All @@ -762,12 +781,12 @@ describe('Monitor', () => {
}]
});

expect(out.data[3]).to.equal({
expect(out.data[4]).to.equal({
event: 'super-secret',
payload: [null]
});

expect(out.data[7].event).to.equal('stop');
expect(out.data[6].event).to.equal('stop');
callback();
}
], done);
Expand Down Expand Up @@ -811,17 +830,20 @@ describe('Monitor', () => {
}, (res) => {

expect(res.statusCode).to.equal(200);
expect(out.data[0].config).to.equal({
foo: 'baz',
filter: true,
zip: 'zap'
});
expect(out.data[1].config).to.equal({
foo: 'baz',
filter: true,
zip: 'zap'
});
callback();
setTimeout(() => {

expect(out.data[0].config).to.equal({
foo: 'baz',
filter: true,
zip: 'zap'
});
expect(out.data[1].config).to.equal({
foo: 'baz',
filter: true,
zip: 'zap'
});
callback();
}, 50);
});
}
], done);
Expand Down Expand Up @@ -886,7 +908,7 @@ describe('Monitor', () => {

callback();
}
],done);
], done);
});
});
});

0 comments on commit 77bae30

Please sign in to comment.