dd-trace
Version:
Datadog APM tracing client for JavaScript
51 lines (41 loc) • 1.66 kB
JavaScript
'use strict'
const URL = require('url').URL
const Writer = require('./writer')
const CoverageWriter = require('./coverage-writer')
const CiVisibilityExporter = require('../ci-visibility-exporter')
const log = require('../../../log')
class AgentlessCiVisibilityExporter extends CiVisibilityExporter {
constructor (config) {
super(config)
const { tags, site, url, isTestDynamicInstrumentationEnabled } = config
// we don't need to request /info because we are using agentless by configuration
this._isInitialized = true
this._resolveCanUseCiVisProtocol(true)
this._canForwardLogs = true
this._url = url || new URL(`https://citestcycle-intake.${site}`)
this._writer = new Writer({ url: this._url, tags })
this._coverageUrl = url || new URL(`https://citestcov-intake.${site}`)
this._coverageWriter = new CoverageWriter({ url: this._coverageUrl })
if (isTestDynamicInstrumentationEnabled) {
const DynamicInstrumentationLogsWriter = require('./di-logs-writer')
this._logsUrl = url || new URL(`https://http-intake.logs.${site}`)
this._logsWriter = new DynamicInstrumentationLogsWriter({ url: this._logsUrl, tags })
}
this._apiUrl = url || new URL(`https://api.${site}`)
// Agentless is always gzip compatible
this._isGzipCompatible = true
}
setUrl (url, coverageUrl = url, apiUrl = url) {
this._setUrl(url, coverageUrl)
try {
apiUrl = new URL(apiUrl)
this._apiUrl = apiUrl
} catch (e) {
log.error('Error setting CI exporter api url', e)
}
}
_getApiUrl () {
return this._apiUrl
}
}
module.exports = AgentlessCiVisibilityExporter