int main()

in katran/lib/testing/katran_tester.cpp [388:470]


int main(int argc, char** argv) {
  gflags::ParseCommandLineFlags(&argc, &argv, true);
  google::InitGoogleLogging(argv[0]);
  FLAGS_logtostderr = 1;
  katran::TesterConfig config;
  auto testParam = getTestParam();
  config.inputFileName = FLAGS_pcap_input;
  config.outputFileName = FLAGS_pcap_output;
  config.testData = testParam.testData;

  if (FLAGS_packet_num >= 0) {
    config.singleTestRunPacketNumber_ = FLAGS_packet_num;
  }
  katran::BpfTester tester(config);
  if (FLAGS_print_base64) {
    if (FLAGS_pcap_input.empty()) {
      std::cout << "pcap_input is not specified! exiting";
      return 1;
    }
    tester.printPcktBase64();
    return 0;
  }
  katran::KatranMonitorConfig kmconfig;
  kmconfig.path = FLAGS_monitor_output;
  if (FLAGS_iobuf_storage) {
    kmconfig.storage = katran::PcapStorageFormat::IOBUF;
    kmconfig.bufferSize = k1Mbyte;
  }
  katran::KatranConfig kconfig{
      kMainInterface,
      kV4TunInterface,
      kV6TunInterface,
      FLAGS_balancer_prog,
      FLAGS_healthchecking_prog,
      kDefaultMac,
      kDefaultPriority,
      kNoExternalMap,
      kDefaultKatranPos};

  kconfig.enableHc = FLAGS_healthchecking_prog.empty() ? false : true;
  kconfig.monitorConfig = kmconfig;
  kconfig.katranSrcV4 = "10.0.13.37";
  kconfig.katranSrcV6 = "fc00:2307::1337";
  kconfig.localMac = kLocalMac;
  kconfig.maxVips = MAX_VIPS;

  katran::KatranLb lb(kconfig);
  lb.loadBpfProgs();
  listFeatures(lb);
  auto balancer_prog_fd = lb.getKatranProgFd();
  if (FLAGS_optional_counter_tests) {
    preTestOptionalLbCounters(lb);
  }
  tester.setBpfProgFd(balancer_prog_fd);
  if (FLAGS_test_from_fixtures) {
    runTestsFromFixture(lb, tester, testParam);
    if (FLAGS_install_features_mask > 0 || FLAGS_remove_features_mask > 0) {
      // install/remove features will reload prog if provided, therefore
      // reloading again is redundant
      testInstallAndRemoveFeatures(lb);
      runTestsFromFixture(lb, tester, testParam);
    } else if (!FLAGS_reloaded_balancer_prog.empty()) {
      auto res = lb.reloadBalancerProg(FLAGS_reloaded_balancer_prog);
      if (!res) {
        LOG(INFO) << "cannot reload balancer program";
        return 1;
      }
      listFeatures(lb);
      runTestsFromFixture(lb, tester, testParam);
    }
    return 0;
  }
  prepareLbData(lb);
  if (!FLAGS_pcap_input.empty()) {
    tester.testPcktsFromPcap();
    return 0;
  } else if (FLAGS_perf_testing) {
    // for perf tests to work katran must be compiled w -DINLINE_DECAP
    preparePerfTestingLbData(lb);
    tester.testPerfFromFixture(FLAGS_repeat, FLAGS_position);
  }
  return 0;
}