7#ifndef BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_TEST_BACKEND_PTF_H_
8#define BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_TEST_BACKEND_PTF_H_
18#include <inja/inja.hpp>
22#include "lib/cstring.h"
24#include "backends/p4tools/modules/testgen/lib/test_object.h"
25#include "backends/p4tools/modules/testgen/lib/test_spec.h"
26#include "backends/p4tools/modules/testgen/targets/bmv2/test_backend/common.h"
31class PTF :
public Bmv2TestFramework {
37 float currentCoverage)
override;
41 bool preambleEmitted =
false;
44 std::ofstream ptfFileStream;
55 void emitTestcase(
const TestSpec *testSpec,
cstring selectedBranches,
size_t testId,
56 const std::string &testCase,
float currentCoverage);
59 static std::string getTestCaseTemplate();
61 inja::json getExpectedPacket(
const TestSpec *testSpec)
const override;
65 static std::vector<std::pair<size_t, size_t>> getIgnoreMasks(
const IR::Constant *mask);