in scripts/apm-server-load-test.js [257:328]
async function generatePayloads(transactionCount, trPerSession = 10) {
const spanPerTransaction = 50
let promises = []
let sessionId
let baseUrl
let payloads = []
for (let i = 0; i < transactionCount; i++) {
const sequence = i % trPerSession
if (sequence == 0) {
sessionId = generateRandomId(16)
baseUrl = faker.internet.url()
}
let payload = generateTransaction(
spanPerTransaction,
sessionId,
sequence + 1,
baseUrl
)
payload.unshift(merge({}, defaultMeta))
payloads.push(payload)
let p = postPayload(`${serverUrl}/intake/v2/rum/events`, payload)
promises.push(p)
}
let transactionResponses = await Promise.all(promises)
const responses = {}
transactionResponses.forEach(tr => {
if (!responses[tr]) {
responses[tr] = 1
} else {
responses[tr]++
}
})
const result = {
'@timestamp': Date.now(),
transactionCount,
spanPerTransaction,
apmServer: null,
transformStats: null,
responses
}
try {
let response = await fetch(`${serverUrl}/debug/vars`)
const apmServerResults = await response.json()
result.apmServer = apmServerResults
} catch (error) {
result.apmServer = error
}
if (debug) {
console.log(responses)
result.payloads = payloads
try {
let transformStats = await fetch(
`${esUrl}/_transform/transform_rum_sessions/_stats`,
{
method: 'GET',
headers: {
Authorization: esAuth
}
}
)
result.transformStats = await transformStats.json()
} catch (error) {
result.transformStats = error
}
}
return result
}