35 std::vector<InputRoute> schema;
36 for (
auto const& spec : inputspecs) {
37 auto routename = spec.binding +
"_source";
38 schema.emplace_back(createRoute(routename, spec));
41 std::random_device
rd;
42 std::uniform_int_distribution<> testvals(0, 42);
43 auto randval = [&
rd, &testvals]() {
46 std::vector<int> checkValues;
47 DataSet::Messages messages;
48 unsigned char packetCounter = 0;
50 auto initRawPage = [&checkValues, &amendRdh, &packetCounter](
char*
buffer,
size_t size,
auto value) {
52 unsigned int lastFEEID = 0;
53 unsigned int lastOrbit = 0;
61 if (wrtptr ==
buffer || header->feeId != lastFEEID || header->orbit != lastOrbit) {
64 lastFEEID = header->feeId;
65 lastOrbit = header->orbit;
68 header->pageCnt = pageCounter++;
69 header->packetCounter = packetCounter++;
70 *
reinterpret_cast<decltype(
value)*
>(wrtptr + header->headerSize) =
value;
72 checkValues.emplace_back(
value);
77 auto createMessage = [&messages, &initRawPage, &randval](
DataHeader dh) {
80 if (dh.splitPayloadParts == 0 || dh.splitPayloadIndex == 0) {
82 messages.emplace_back();
84 messages.back().emplace_back(std::make_unique<std::vector<char>>(
stack.size()));
85 memcpy(messages.back().back()->data(),
stack.data(), messages.back().back()->size());
86 messages.back().emplace_back(std::make_unique<std::vector<char>>(dh.payloadSize));
87 int value = randval();
88 initRawPage(messages.back().back()->data(), messages.back().back()->size(),
value);
92 for (
auto header : dataheaders) {
94 header.splitPayloadIndex =
index;
95 createMessage(header);
100 return {std::move(schema), std::move(messages), std::move(checkValues), {registry}};