function generateTransaction()

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
}