in scripts/apm-server-load-test.js [159:226]
function generateTransaction(spanCount, sessionId, sequence, baseUrl) {
if (!baseUrl) {
baseUrl = faker.internet.url()
}
const url =
baseUrl +
'/' +
faker.random.words(3).split(' ').join('/').toLocaleLowerCase()
let breakdown = []
let tr = merge({}, defaultTransaction, {
transaction: {
id: generateRandomId(16),
trace_id: generateRandomId(),
duration: Math.floor(getRandomNumber(0, 5000)),
name: faker.random.words(3),
span_count: {
started: spanCount
},
sampled: spanCount != 0,
breakdown,
session: {
id: sessionId,
sequence
},
context: {
tags: {
session_id: sessionId,
session_seq: sequence
},
page: {
referer: faker.internet.url(),
url
}
}
}
})
breakdown.push({
transaction: { name: tr.transaction.name, type: tr.transaction.type },
samples: {
'transaction.duration.count': { value: 1 },
'transaction.duration.sum.us': { value: tr.transaction.duration },
'transaction.breakdown.count': { value: tr.transaction.sampled ? 1 : 0 }
}
})
let payload = [tr]
for (let i = 0; i < spanCount; i++) {
const span = merge({}, defaultSpan, {
span: {
id: generateRandomId(16),
transaction_id: tr.transaction.id,
parent_id: tr.transaction.id,
trace_id: tr.transaction.trace_id,
name: [
'http://testing.com',
generateRandomId(),
generateRandomId() + '.js'
].join('/'),
start: getRandomInt(0, tr.transaction.duration),
duration: getRandomInt(0, tr.transaction.duration)
}
})
payload.push(span)
}
return payload
}