7#ifndef BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_TEST_BACKEND_PROTOBUF_H_
8#define BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_TEST_BACKEND_PROTOBUF_H_
15#include <inja/inja.hpp>
17#include "backends/p4tools/common/control_plane/p4info_map.h"
18#include "control-plane/p4RuntimeSerializer.h"
20#include "lib/cstring.h"
22#include "backends/p4tools/modules/testgen/lib/test_spec.h"
23#include "backends/p4tools/modules/testgen/targets/bmv2/test_backend/common.h"
27using P4::ControlPlaneAPI::p4rt_id_t;
32 std::string formattedTest_;
35 explicit ProtobufTest(std::string formattedTest) : formattedTest_(std::move(formattedTest)) {}
44class Protobuf :
public Bmv2TestFramework {
50 float currentCoverage)
override;
53 size_t testIdx,
float currentCoverage)
override;
63 inja::json getControlPlane(
const TestSpec *testSpec)
const override;
65 [[nodiscard]] inja::json getSend(
const TestSpec *testSpec)
const override;
67 [[nodiscard]] inja::json getExpectedPacket(
const TestSpec *testSpec)
const override;
70 static std::string formatHexExprWithSep(
const IR::Expression *expr);
74 [[nodiscard]] std::optional<p4rt_id_t> lookupP4RuntimeId(
cstring controlPlaneName)
const;
78 void emitPreamble(
const std::string &preamble);
85 inja::json produceTestCase(
const TestSpec *testSpec,
cstring selectedBranches,
size_t testId,
86 float currentCoverage)
const;
89 static std::string getTestCaseTemplate();
94 [[nodiscard]] inja::json getControlPlaneForTable(
cstring tableName,
cstring actionName,
95 const TableMatchMap &matches,
96 const std::vector<ActionArg> &args)
const;
Definition p4info_map.h:43
Definition p4RuntimeSerializer.h:48