Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
it('should start and finish span', async () => {
const query = 'SELECT 1 AS result'
const { rows } = await db.raw(query)
expect(rows).to.be.eql([{ result: 1 }])
expect(cls.startChildSpan).to.be.calledWith(tracer, `${instrumentation.OPERATION_NAME}_query`, {
tags: {
[Tags.SPAN_KIND]: Tags.SPAN_KIND_RPC_CLIENT,
[Tags.DB_TYPE]: instrumentation.DB_TYPE,
[Tags.DB_STATEMENT]: query
}
})
// FIXME: only with ../instrument.js tests together
// expect(mockChildSpan.finish).to.have.callCount(1)
})
it('should start and finish span', async () => {
const query = 'SELECT 1 AS result'
const result = await db.raw(query)
expect(result[0]).to.be.eql([{ result: 1 }])
expect(cls.startChildSpan).to.be.calledWith(tracer, `${instrumentation.OPERATION_NAME}_query`, {
tags: {
[Tags.SPAN_KIND]: Tags.SPAN_KIND_RPC_CLIENT,
[Tags.DB_TYPE]: instrumentation.DB_TYPE,
[Tags.DB_STATEMENT]: query
}
})
// FIXME: only with ../instrument.js tests together
// expect(mockChildSpan.finish).to.have.callCount(1)
})
client.set('string key', 'string val', (err, replies) => {
expect(replies).to.be.eql('OK')
expect(cls.startChildSpan).to.be.calledWith(tracer, 'redis_set', {
tags: {
[Tags.SPAN_KIND]: Tags.SPAN_KIND_RPC_CLIENT,
[Tags.DB_TYPE]: instrumentation.DB_TYPE,
[Tags.DB_STATEMENT]: 'set string key,string val'
}
})
// FIXME: is this an issue?
// expect(mockChildSpan.finish).to.have.callCount(1)
done(err)
})
})
it('should start and finish span', async () => {
const site = {
name: 'risingstack',
url: 'https://risingstack.com'
}
const result = await dbSites.insert(site)
expect(result).to.be.eql(site)
expect(cls.startChildSpan).to.be.calledWith(tracer, `${instrumentation.OPERATION_NAME}_insert`, {
tags: {
[Tags.SPAN_KIND]: Tags.SPAN_KIND_RPC_CLIENT,
[Tags.DB_TYPE]: instrumentation.DB_TYPE,
[Tags.DB_STATEMENT]: JSON.stringify([site]),
[Tags.DB_INSTANCE]: 'mydb.sites'
}
})
expect(mockChildSpan.finish).to.have.callCount(1)
})
return function createQueryWrapped (sql, values, cb) {
const query = createQuery.call(this, sql, values, cb)
const statement = query.sql
const operationName = `${OPERATION_NAME}_query`
const spans = tracers.map((tracer) => cls.startChildSpan(tracer, operationName, {
tags: {
[Tags.SPAN_KIND]: Tags.SPAN_KIND_RPC_CLIENT,
[Tags.DB_TYPE]: DB_TYPE,
[Tags.DB_STATEMENT]: statement
}
}))
debug(`Operation started ${OPERATION_NAME}`, {
[Tags.DB_TYPE]: DB_TYPE,
[Tags.DB_STATEMENT]: statement
})
query.on('error', (err) => {
spans.forEach((span) => span.log({
event: 'error',
'error.object': err,
message: err.message,
stack: err.stack
}))
spans.forEach((span) => span.setTag(Tags.ERROR, true))
debug(`Operation error captured ${operationName}`, {
reason: 'Error event',
errorMessage: err.message
})
const spans = tracers.map((tracer) => cls.startChildSpan(tracer, operationName, {
tags: {
[Tags.SPAN_KIND]: Tags.SPAN_KIND_RPC_CLIENT,
[Tags.DB_TYPE]: DB_TYPE,
[Tags.DB_STATEMENT]: statement
}
}))
const spans = tracers.map((tracer) => cls.startChildSpan(tracer, operationName, {
tags: {
[Tags.SPAN_KIND]: Tags.SPAN_KIND_RPC_CLIENT,
[Tags.DB_TYPE]: DB_TYPE,
[Tags.DB_STATEMENT]: statement,
[Tags.DB_INSTANCE]: ns
}
}))
const createCommand = (command: string) => (
promise: Promise
): Promise => {
const parentScope = tracer.scopeManager().active()
const span = tracer.startSpan("memcached", {
childOf: parentScope && parentScope.span(),
tags: {
[Tags.SPAN_KIND]: Tags.SPAN_KIND_RPC_CLIENT,
[Tags.DB_TYPE]: "memcached",
"service.name": `${DD_TRACER_SERVICE_NAME}.memcached`,
"resource.name": command,
"span.type": "memcached",
},
})
return promise.then(
result => {
span.finish()
return result
},
err => {
const tags = {
"error.type": err.name,
"error.msg": err.message,
}
const spans = tracers.map((tracer) => cls.startChildSpan(tracer, operationName, {
tags: {
[Tags.SPAN_KIND]: Tags.SPAN_KIND_RPC_CLIENT,
[Tags.DB_TYPE]: DB_TYPE,
[Tags.DB_STATEMENT]: statement
}
}))