diff --git a/lib/agent.js b/lib/agent.js index c5080008..7445fb6b 100644 --- a/lib/agent.js +++ b/lib/agent.js @@ -37,7 +37,7 @@ class Agent { const agentStartTime = Date.now() this.agentInfo = this.createAgentInfo(this.config, agentStartTime) - const dataSender = dataSenderFactory.create(this.config, this.agentInfo) + const dataSender = this.makeDataSender() this.dataSender = dataSender this.initializeDataSender(dataSender) this.initializePinpointClient(dataSender) @@ -52,6 +52,10 @@ class Agent { log.warn('[Pinpoint Agent][' + agentId + '] Init Completed') } + makeDataSender() { + return dataSenderFactory.create(this.config, this.agentInfo) + } + initializeDataSender(dataSender) { dataSender.send(this.agentInfo) stringMetaService.init(dataSender) diff --git a/test/client/grpc-data-sender.test.js b/test/client/grpc-data-sender.test.js index 00725697..33d29b5f 100644 --- a/test/client/grpc-data-sender.test.js +++ b/test/client/grpc-data-sender.test.js @@ -20,10 +20,10 @@ const AsyncSpanChunkBuilder = require('../../lib/context/trace/async-span-chunk- const SpanRepository = require('../../lib/context/trace/span-repository') const ChildTraceBuilder = require('../../lib/context/trace/child-trace-builder') const serviceType = require('../../lib/context/service-type') -const makeMockDataSender = require('../fixtures/mock-data-sender') const SpanChunkBuilder = require('../../lib/context/span-chunk-builder') const Trace = require('../../lib/context/trace/trace2') const defaultPredefinedMethodDescriptorRegistry = require('../../lib/constant/default-predefined-method-descriptor-registry') +const dataSenderMock = require('../support/data-sender-mock') let sendSpanMethodOnDataCallback function sendSpan(call) { @@ -70,7 +70,7 @@ test('Should send span', function (t) { server.bindAsync('localhost:0', grpc.ServerCredentials.createInsecure(), (error, port) => { const grpcDataSender = beforeSpecificOne(port, DataSource) const traceRoot = new RemoteTraceRootBuilder(agent.agentInfo, '5').build() - dataSender = makeMockDataSender(agent.config, grpcDataSender) + dataSender = dataSenderMock(agent.config, grpcDataSender) const spanBuilder = new SpanBuilder(traceRoot) spanBuilder.setServiceType(1400) spanBuilder.setEndPoint('localhost:3000') @@ -167,7 +167,7 @@ test('sendSpanChunk redis.SET.end', function (t) { const grpcDataSender = beforeSpecificOne(port, DataSource) const traceRoot = new RemoteTraceRootBuilder(agent.agentInfo, '5').build() const asyncId = AsyncId.make() - dataSender = makeMockDataSender(agent.config, grpcDataSender) + dataSender = dataSenderMock(agent.config, grpcDataSender) const spanChunkBuilder = new AsyncSpanChunkBuilder(traceRoot, asyncId) const repository = new SpanRepository(spanChunkBuilder, dataSender, agent.agentInfo) const childTraceBuilder = new ChildTraceBuilder(traceRoot, repository, asyncId) @@ -245,7 +245,7 @@ test('sendSpanChunk redis.GET.end', (t) => { const grpcDataSender = beforeSpecificOne(port, DataSource) const traceRoot = new RemoteTraceRootBuilder(agent.agentInfo, '5').build() const asyncId = AsyncId.make() - dataSender = makeMockDataSender(agent.config, grpcDataSender) + dataSender = dataSenderMock(agent.config, grpcDataSender) const spanChunkBuilder = new AsyncSpanChunkBuilder(traceRoot, asyncId) const repository = new SpanRepository(spanChunkBuilder, dataSender, agent.agentInfo) const childTraceBuilder = new ChildTraceBuilder(traceRoot, repository, asyncId) @@ -315,7 +315,7 @@ test('sendSpan', (t) => { server.bindAsync('localhost:0', grpc.ServerCredentials.createInsecure(), (error, port) => { const grpcDataSender = beforeSpecificOne(port, DataSource) const traceRoot = new RemoteTraceRootBuilder(agent.agentInfo, '5').build() - dataSender = makeMockDataSender(agent.config, grpcDataSender) + dataSender = dataSenderMock(agent.config, grpcDataSender) const spanBuilder = new SpanBuilder(traceRoot) const spanChunkBuilder = new SpanChunkBuilder(traceRoot) const repository = new SpanRepository(spanChunkBuilder, dataSender, agent.agentInfo) diff --git a/test/fixtures/mock-data-sender.js b/test/fixtures/mock-data-sender.js deleted file mode 100644 index 89688894..00000000 --- a/test/fixtures/mock-data-sender.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Pinpoint Node.js Agent - * Copyright 2020-present NAVER Corp. - * Apache License v2.0 - */ - -'use strict' - -const DataSender = require('../../lib/client/data-sender') -const AgentInfo = require('../../lib/data/dto/agent-info') -const ApiMetaInfo = require('../../lib/data/dto/api-meta-info') -const StringMetaInfo = require('../../lib/data/dto/string-meta-info') -const Span = require('../../lib/context/span') -const SpanChunk = require('../../lib/context/span-chunk') -const SqlMetaData = require('../../lib/client/sql-meta-data') - -class MockDataSender extends DataSender { - constructor(config, dataSender) { - super(config, dataSender) - this.mockAPIMetaInfos = [] - this.mockSpanChunks = [] - this.mockSpans = [] - } - - send(data) { - if (data instanceof AgentInfo) { - this.mockAgentInfo = data - super.send(data) - } else if (data instanceof ApiMetaInfo) { - this.mockAPIMetaInfos.push(data) - super.send(data) - } else if (data instanceof StringMetaInfo) { - this.mockMetaInfo = data - super.send(data) - } else if (data instanceof Span) { - this.mockSpan = data - this.mockSpans.push(data) - super.send(data) - } else if (data instanceof SpanChunk) { - this.mockSpanChunks.push(data) - super.send(data) - } else if (data instanceof SqlMetaData) { - this.mockSqlMetaData = data - super.send(data) - } else if (data?.isAsyncSpanChunk?.()) { - this.mockSpanChunks.push(data) - super.send(data) - } else if (data?.isSpan?.()) { - this.mockSpan = data - this.mockSpans.push(data) - super.send(data) - } - } - - findSpanChunk(asyncId) { - return this.mockSpanChunks.find(spanChunk => spanChunk.localAsyncId.asyncId === (asyncId.asyncId || asyncId)) - } - findSpanEvent(apiId) { - return this.mockSpan.spanEventList.find(event => event.apiId === apiId) - } -} - -const makeMockDataSender = (config, dataSender) => new MockDataSender(config, dataSender) - -module.exports = makeMockDataSender \ No newline at end of file diff --git a/test/support/agent-singleton-mock.js b/test/support/agent-singleton-mock.js index c0988ae9..fa329989 100644 --- a/test/support/agent-singleton-mock.js +++ b/test/support/agent-singleton-mock.js @@ -107,10 +107,10 @@ class MockAgent extends Agent { this.traceContext.traceSampler = new TraceSampler(this.agentInfo, config) this.traceContext.config = config - const dataSender = dataSenderMock(this.config, this.agentInfo) + const dataSender = this.makeDataSender() this.traceContext.dataSender = dataSender this.dataSender = dataSender - + // this.initializeDataSender(dataSender) stringMetaService.init(dataSender) apiMetaService.init(dataSender) @@ -219,6 +219,10 @@ class MockAgent extends Agent { getTraceByAsyncId(asyncId) { return getTraceByAsyncId(asyncId) } + + makeDataSender() { + return dataSenderMock(this.config, this.agentInfo) + } } const agent = new MockAgent(require('../pinpoint-config-test')) diff --git a/test/support/data-sender-mock.js b/test/support/data-sender-mock.js index 7ec0b1c7..20cd0227 100644 --- a/test/support/data-sender-mock.js +++ b/test/support/data-sender-mock.js @@ -77,11 +77,16 @@ class MockDataSender extends DataSender { } } -const dataSender = (conf, agentInfo) => { +const dataSender = (conf, agentInfoOrGrpcDataSender) => { + if (typeof agentInfoOrGrpcDataSender?.sendAgentInfo === 'function') { + return new MockDataSender({ + enabledDataSending: true, + }, agentInfoOrGrpcDataSender) + } if (typeof conf?.collectorSpanPort === 'number') { return new MockDataSender({ enabledDataSending: true, - }, new GrpcDataSender(conf.collectorIp, conf.collectorSpanPort, conf.collectorStatPort, conf.collectorTcpPort, agentInfo, conf)) + }, new GrpcDataSender(conf.collectorIp, conf.collectorSpanPort, conf.collectorStatPort, conf.collectorTcpPort, agentInfoOrGrpcDataSender, conf)) } return new MockDataSender({ enabledDataSending: true,