void BpfTester::testPerfFromFixture()

in katran/lib/testing/BpfTester.cpp [267:311]


void BpfTester::testPerfFromFixture(uint32_t repeat, const int position) {
  // for inputData format is <pckt_base64, test description>
  int first_index{0}, last_index{0};
  uint32_t duration{0};
  uint64_t pckt_num{1};
  std::string ret_val_str;
  std::string test_result;
  if (position < 0 || position >= config_.testData.size()) {
    first_index = 0;
    last_index = config_.testData.size();
  } else {
    first_index = position;
    last_index = first_index + 1;
  }
  for (int i = first_index; i < last_index; i++) {
    auto buf = folly::IOBuf::create(kMaxXdpPcktSize);
    auto input_pckt =
        parser_.getPacketFromBase64(config_.testData[i].inputPacket);
    auto res = adapter_.testXdpProg(
        config_.bpfProgFd,
        repeat,
        input_pckt->writableData(),
        input_pckt->length(),
        buf->writableData(),
        nullptr, // output pckt size
        nullptr, // retval
        &duration);
    if (res < 0) {
      LOG(INFO) << "failed to run bpf test on pckt #" << pckt_num;
      ++pckt_num;
      continue;
    }
    VLOG(2) << "pckt #" << pckt_num;
    if (duration == 0) {
      duration = 1;
    }
    auto pps = kNanosecInSec / duration;
    LOG(INFO) << folly::format(
        "Test: {:60} duration: {:10} ns/pckt or {} pps",
        config_.testData[i].description,
        duration,
        pps);
    ++pckt_num;
  }
}