Skip to content

Commit 07615c0

Browse files
committed
[#371] Add ConfigurationBuilder for flexible config management
1 parent 5570be8 commit 07615c0

File tree

4 files changed

+54
-8
lines changed

4 files changed

+54
-8
lines changed

index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88

99
const { AgentBuilder } = require('./lib/agent-builder')
1010
const AgentInfo = require('./lib/data/dto/agent-info')
11-
const { getConfig } = require('./lib/config')
11+
const { getConfig2 } = require('./lib/config')
1212
const { LogBuilder } = require('./lib/utils/log/log-builder')
1313
const logger = require('./lib/utils/log/logger')
1414

15-
const config = getConfig()
15+
const config = getConfig2()
1616
logger.setRootLogger(LogBuilder.createDefaultLogBuilder().setConfig(config).build())
1717

1818
const agentInfo = AgentInfo.make(config)

lib/agent-builder.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const { ModuleHook } = require('./instrumentation/module-hook')
1616
const Scheduler = require('./utils/scheduler')
1717
const AgentStatsMonitor = require('./metric/agent-stats-monitor')
1818
const PingScheduler = require('./metric/ping-scheduler')
19-
const { getConfig } = require('./config')
19+
const { getConfig2 } = require('./config')
2020

2121
class Agent {
2222
constructor(agentInfo, config, logger) {
@@ -117,7 +117,7 @@ class AgentBuilder {
117117

118118
build() {
119119
if (!this.config) {
120-
this.config = getConfig()
120+
this.config = getConfig2()
121121
}
122122

123123
const agent = new Agent(this.agentInfo, this.config, logger)

lib/instrumentation/http/http-status-code-errors-builder.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
'use strict'
88

9-
const { getConfig } = require('./../../config')
9+
const { getConfig2 } = require('./../../config')
1010

1111
class HttpStatusCodeErrors {
1212
constructor(errors) {
@@ -68,13 +68,18 @@ class HttpStatusCodeErrorsBuilder {
6868
let httpStatusCodeErrors
6969
function getHttpStatusCodeErrors() {
7070
if (!httpStatusCodeErrors) {
71-
const config = getConfig()
71+
const config = getConfig2()
7272
httpStatusCodeErrors = new HttpStatusCodeErrorsBuilder(config.httpStatusCodeErrors).build()
7373
}
7474
return httpStatusCodeErrors
7575
}
7676

77+
function clearHttpStatusCodeErrors() {
78+
httpStatusCodeErrors = undefined
79+
}
80+
7781
module.exports = {
7882
HttpStatusCodeErrorsBuilder,
79-
getHttpStatusCodeErrors
83+
getHttpStatusCodeErrors,
84+
clearHttpStatusCodeErrors
8085
}

test/config.test.js

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
const test = require('tape')
88
const { clear2, getConfig2, readConfigJson, readRootConfigFile, getMainModulePath } = require('../lib/config')
9-
const { HttpStatusCodeErrorsBuilder } = require('../lib/instrumentation/http/http-status-code-errors-builder')
9+
const { HttpStatusCodeErrorsBuilder, getHttpStatusCodeErrors, clearHttpStatusCodeErrors } = require('../lib/instrumentation/http/http-status-code-errors-builder')
1010
const log = require('../lib/utils/log/logger')
1111

1212
test('Agent ID required field', function (t) {
@@ -293,6 +293,47 @@ test('HTTP Status Code Errors', (t) => {
293293
t.end()
294294
})
295295

296+
test('HTTP Status Code Errors with config changes', (t) => {
297+
clear2()
298+
clearHttpStatusCodeErrors()
299+
300+
let httpErrors = getHttpStatusCodeErrors()
301+
t.equal(httpErrors.isErrorCode(500), true, 'default: 500 is error code')
302+
t.equal(httpErrors.isErrorCode(401), true, 'default: 401 is error code')
303+
t.equal(httpErrors.isErrorCode(403), true, 'default: 403 is error code')
304+
t.equal(httpErrors.isErrorCode(404), false, 'default: 404 is not error code')
305+
306+
clear2()
307+
clearHttpStatusCodeErrors()
308+
process.env['PINPOINT_HTTP_STATUS_CODE_ERRORS'] = '404,500'
309+
310+
httpErrors = getHttpStatusCodeErrors()
311+
t.equal(httpErrors.isErrorCode(500), true, 'env config: 500 is error code')
312+
t.equal(httpErrors.isErrorCode(404), true, 'env config: 404 is error code')
313+
t.equal(httpErrors.isErrorCode(401), false, 'env config: 401 is not error code')
314+
t.equal(httpErrors.isErrorCode(403), false, 'env config: 403 is not error code')
315+
316+
clear2()
317+
clearHttpStatusCodeErrors()
318+
delete process.env.PINPOINT_HTTP_STATUS_CODE_ERRORS
319+
320+
const customConfig = { 'http-status-code': { 'errors': '400,401,403,404' } }
321+
const conf = getConfig2(customConfig)
322+
t.equal(conf.httpStatusCodeErrors, '400,401,403,404', 'json config: httpStatusCodeErrors value')
323+
324+
httpErrors = getHttpStatusCodeErrors()
325+
t.equal(httpErrors.isErrorCode(400), true, 'json config: 400 is error code')
326+
t.equal(httpErrors.isErrorCode(401), true, 'json config: 401 is error code')
327+
t.equal(httpErrors.isErrorCode(403), true, 'json config: 403 is error code')
328+
t.equal(httpErrors.isErrorCode(404), true, 'json config: 404 is error code')
329+
t.equal(httpErrors.isErrorCode(500), false, 'json config: 500 is not error code')
330+
331+
delete process.env.PINPOINT_HTTP_STATUS_CODE_ERRORS
332+
clear2()
333+
clearHttpStatusCodeErrors()
334+
t.end()
335+
})
336+
296337
test('Logger levels', (t) => {
297338
clear2()
298339
const conf = require('../lib/config').getConfig2()

0 commit comments

Comments
 (0)