Skip to content

Commit ef04851

Browse files
committed
chore(e2e): refactor e2e testing completely
1 parent bfa05d4 commit ef04851

10 files changed

Lines changed: 302 additions & 278 deletions

e2e/apiCalls.spec.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
'use strict'
2+
3+
var express = require('express')
4+
var request = require('superagent')
5+
var test = require('./utils/test')
6+
var serviceMocks = require('./utils/serviceMocks')
7+
8+
var TRACE_MODULE = '..'
9+
var TRACE_COLLECTOR_API_URL = 'https://trace-collector-api.risingstack.com'
10+
var TRACE_API_KEY = 'headers.payload.signature'
11+
var TRACE_SERVICE_NAME = 'service-name'
12+
var TEST_TRACE_SERVICE_KEY = 42
13+
var TEST_TIMEOUT = 1000
14+
var TEST_WEB_SERVER_PORT = process.env.TEST_WEBSERVER_PORT || 44332
15+
16+
var cpOpts = {
17+
env: {
18+
TRACE_API_KEY: TRACE_API_KEY,
19+
TRACE_SERVICE_NAME: TRACE_SERVICE_NAME,
20+
TRACE_COLLECT_INTERVAL: 100
21+
}
22+
}
23+
24+
var apiCalls = [
25+
'RpmMetrics',
26+
'ApmMetrics',
27+
'ExternalEdgeMetrics',
28+
'IncomingEdgeMetrics',
29+
'Trace'
30+
]
31+
32+
apiCalls.forEach(function (name) {
33+
test('should report ' + name,
34+
{
35+
isolate: 'child-process',
36+
childProcessOpts: cpOpts
37+
}, function (t) {
38+
serviceMocks.mockServiceKeyRequest({
39+
url: TRACE_COLLECTOR_API_URL,
40+
apiKey: TRACE_API_KEY,
41+
callback: function (uri, requestBody) {
42+
return [200, { key: TEST_TRACE_SERVICE_KEY }]
43+
}
44+
})
45+
serviceMocks['mock' + name + 'Request']({
46+
url: TRACE_COLLECTOR_API_URL,
47+
apiKey: TRACE_API_KEY,
48+
serviceKey: TEST_TRACE_SERVICE_KEY,
49+
callback: function (uri, requestBody) {
50+
t.pass('collector sends ' + name)
51+
t.end()
52+
process.exit()
53+
}
54+
})
55+
require(TRACE_MODULE)
56+
t.pass('Trace loaded into server')
57+
// http server
58+
var app = express()
59+
app.get('/test', function (req, res) {
60+
res.send('test')
61+
})
62+
app.listen(TEST_WEB_SERVER_PORT, function (err) {
63+
t.error(err, 'server starts listening at ' + TEST_WEB_SERVER_PORT)
64+
// http client request
65+
request
66+
.get('127.0.0.1:' + TEST_WEB_SERVER_PORT + '/test')
67+
.set('x-must-collect', '1')
68+
.end(function (err) {
69+
t.error(err, 'client sends request to /test')
70+
})
71+
})
72+
setTimeout(function () {
73+
t.fail('test timed out without completing')
74+
process.exit(1)
75+
}, TEST_TIMEOUT)
76+
})
77+
})

e2e/getServiceKey.spec.js

Lines changed: 0 additions & 26 deletions
This file was deleted.

e2e/index.js

Lines changed: 0 additions & 52 deletions
This file was deleted.

e2e/initialization.spec.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
'use strict'
2+
3+
require('string.prototype.startswith')
4+
5+
var sinon = require('sinon')
6+
var test = require('./utils/test')
7+
var serviceMocks = require('./utils/serviceMocks')
8+
var pkg = require('../package.json')
9+
10+
var TRACE_MODULE = '..'
11+
var TRACE_COLLECTOR_API_URL = 'https://trace-collector-api.risingstack.com'
12+
var TRACE_API_KEY = 'headers.payload.signature'
13+
var TRACE_SERVICE_NAME = 'service-name'
14+
15+
test('should print error on missing service name',
16+
{
17+
isolate: 'child-process',
18+
childProcessOpts: {
19+
env: {
20+
TRACE_API_KEY: TRACE_API_KEY,
21+
TRACE_COLLECT_INTERVAL: 100
22+
}
23+
}
24+
}, function (t) {
25+
t.plan(3)
26+
var sandbox = sinon.sandbox.create()
27+
var consoleErrorStub = sandbox.stub(console, 'error')
28+
require(TRACE_MODULE)
29+
t.pass('does not crash')
30+
t.ok(consoleErrorStub.called, 'console.error has been called')
31+
t.ok(consoleErrorStub.args[0].join(' ').startsWith('error: [trace] Missing service name'), 'message indicates missing service name')
32+
sandbox.restore()
33+
})
34+
test('should print error on missing API key',
35+
{
36+
isolate: 'child-process',
37+
childProcessOpts: {
38+
env: {
39+
TRACE_SERVICE_NAME: TRACE_SERVICE_NAME,
40+
TRACE_COLLECT_INTERVAL: 100
41+
}
42+
}
43+
}, function (t) {
44+
t.plan(3)
45+
var sandbox = sinon.sandbox.create()
46+
var consoleErrorStub = sandbox.stub(console, 'error')
47+
require(TRACE_MODULE)
48+
t.pass('does not crash')
49+
t.ok(consoleErrorStub.called, 'console.error has been called')
50+
t.ok(consoleErrorStub.args[0].join(' ').startsWith('error: [trace] Missing API key'), 'message indicates missing API key')
51+
sandbox.restore()
52+
})
53+
54+
test('should get service key',
55+
{
56+
isolate: 'child-process',
57+
childProcessOpts: {
58+
env: {
59+
TRACE_API_KEY: TRACE_API_KEY,
60+
TRACE_SERVICE_NAME: TRACE_SERVICE_NAME,
61+
TRACE_COLLECT_INTERVAL: 100
62+
}
63+
}
64+
}, function (t) {
65+
serviceMocks.mockServiceKeyRequest({
66+
url: TRACE_COLLECTOR_API_URL,
67+
apiKey: TRACE_API_KEY,
68+
callback: function (uri, requestBody) {
69+
// some smoke tests
70+
t.equal(requestBody.name, TRACE_SERVICE_NAME, 'service name ok')
71+
t.equal(requestBody.version, '2', 'schema version ok')
72+
t.equal(requestBody.collector.version, pkg.version, 'collector version ok')
73+
t.end()
74+
}
75+
})
76+
require(TRACE_MODULE)
77+
})

e2e/reportApmMetrics.spec.js

Lines changed: 0 additions & 53 deletions
This file was deleted.

e2e/reportHttpRequest.spec.js

Lines changed: 0 additions & 76 deletions
This file was deleted.

e2e/utils/childProcessTest.js

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)