Skip to content

Commit b829901

Browse files
catmaxifacebook-github-bot
authored andcommitted
Adding binaryPacket to PacketResult
Summary: Adding binaryPacket to PacketResult. We're trying to use PacketResult to generate packets for tests in Droplet as well and it seems pretty useful. However, we usually need it in binary form (array of u8) anyways, and taking the b64 form of the packet to then turn it back into binary when it was available already seems overkill? Reviewed By: tagrawal03 Differential Revision: D82505602 fbshipit-source-id: bf83267d7a74d3ec48923d786a3a01eb39a0ed7d
1 parent 41d7749 commit b829901

3 files changed

Lines changed: 13 additions & 11 deletions

File tree

katran/lib/testing/tools/PacketBuilder.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,7 @@ PacketBuilder::PacketResult PacketBuilder::build() const {
377377
result.scapyCommand =
378378
const_cast<PacketBuilder*>(this)->generateScapyCommand();
379379
result.packetSize = binaryPacket.size();
380+
result.binaryPacket = std::move(binaryPacket); // ← Store the raw binary data!
380381

381382
return result;
382383
}

katran/lib/testing/tools/PacketBuilder.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,7 @@ class PacketBuilder {
477477
std::string base64Packet;
478478
std::string scapyCommand;
479479
size_t packetSize;
480+
std::vector<uint8_t> binaryPacket;
480481
};
481482

482483
// Default constructor

katran/lib/testing/tools/PacketBuilderTest.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ TEST_F(PacketBuilderTest, StableRoutingPayloadEmptyConnectionId) {
128128
.stableRoutingPayload({}, "test")
129129
.build();
130130

131-
auto binaryPacket = folly::base64Decode(packet.base64Packet);
131+
auto binaryPacket = packet.binaryPacket;
132132

133133
// Find the payload section (after UDP header)
134134
// Ethernet (14) + IPv4 (20) + UDP (8) = 42 bytes before payload
@@ -160,7 +160,7 @@ TEST_F(PacketBuilderTest, StableRoutingPayloadShortConnectionId) {
160160
.stableRoutingPayload({0x01, 0x02, 0x03}, "data")
161161
.build();
162162

163-
auto binaryPacket = folly::base64Decode(packet.base64Packet);
163+
auto binaryPacket = packet.binaryPacket;
164164

165165
// Find the payload section (after UDP header)
166166
ASSERT_GE(
@@ -196,7 +196,7 @@ TEST_F(PacketBuilderTest, StableRoutingPayloadFullConnectionId) {
196196
.stableRoutingPayload({0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}, "x")
197197
.build();
198198

199-
auto binaryPacket = folly::base64Decode(packet.base64Packet);
199+
auto binaryPacket = packet.binaryPacket;
200200

201201
// Find the payload section (after UDP header)
202202
ASSERT_GE(
@@ -228,7 +228,7 @@ TEST_F(PacketBuilderTest, StableRoutingPayloadEmptyPayload) {
228228
.stableRoutingPayload({0xAA, 0xBB}, "")
229229
.build();
230230

231-
auto binaryPacket = folly::base64Decode(packet.base64Packet);
231+
auto binaryPacket = packet.binaryPacket;
232232

233233
// Find the payload section (after UDP header)
234234
ASSERT_GE(
@@ -278,7 +278,7 @@ TEST_F(PacketBuilderTest, StableRoutingPayloadBinaryValues) {
278278
.stableRoutingPayload({0xFF}, binaryPayload)
279279
.build();
280280

281-
auto binaryPacket = folly::base64Decode(packet.base64Packet);
281+
auto binaryPacket = packet.binaryPacket;
282282

283283
// Find the payload section (after UDP header)
284284
// Calculate expected size: STABLE_UDP_HEADER_SIZE
@@ -378,7 +378,7 @@ TEST_F(PacketBuilderTest, TcpHeaderLengthWithTPROption) {
378378
.withTPR(0x0400) // 6 bytes: kind(1) + length(1) + data(4)
379379
.build();
380380

381-
auto binaryPacket = folly::base64Decode(packet.base64Packet);
381+
auto binaryPacket = packet.binaryPacket;
382382

383383
// TCP header starts at offset 34 (Ethernet 14 + IPv4 20)
384384
const uint8_t* tcpHeader =
@@ -402,7 +402,7 @@ TEST_F(PacketBuilderTest, TcpHeaderLengthWithMultipleOptions) {
402402
.payload("katran test pkt")
403403
.build();
404404

405-
auto binaryPacket = folly::base64Decode(packet.base64Packet);
405+
auto binaryPacket = packet.binaryPacket;
406406
const uint8_t* tcpHeader =
407407
reinterpret_cast<const uint8_t*>(binaryPacket.data()) + 34;
408408
uint8_t dataOffset = (tcpHeader[12] >> 4) & 0x0F;
@@ -421,7 +421,7 @@ TEST_F(PacketBuilderTest, TPROptionFormatValidation) {
421421
.withTPR(0x03FF) // TPR ID: 1023
422422
.build();
423423

424-
auto binaryPacket = folly::base64Decode(packet.base64Packet);
424+
auto binaryPacket = packet.binaryPacket;
425425
const uint8_t* tcpOptions =
426426
reinterpret_cast<const uint8_t*>(binaryPacket.data()) +
427427
54; // After TCP base header
@@ -444,7 +444,7 @@ TEST_F(PacketBuilderTest, NOPOptionFormatValidation) {
444444
.withNOP(3)
445445
.build();
446446

447-
auto binaryPacket = folly::base64Decode(packet.base64Packet);
447+
auto binaryPacket = packet.binaryPacket;
448448
const uint8_t* tcpOptions =
449449
reinterpret_cast<const uint8_t*>(binaryPacket.data()) + 54;
450450

@@ -464,7 +464,7 @@ TEST_F(PacketBuilderTest, TcpChecksumWithTPROption) {
464464
.payload("test")
465465
.build();
466466

467-
auto binaryPacket = folly::base64Decode(packet.base64Packet);
467+
auto binaryPacket = packet.binaryPacket;
468468
const uint8_t* tcpHeader =
469469
reinterpret_cast<const uint8_t*>(binaryPacket.data()) + 34;
470470

@@ -547,7 +547,7 @@ TEST_F(PacketBuilderTest, LargeNumberOfNOPs) {
547547
.payload("katran test pkt")
548548
.build();
549549

550-
auto binaryPacket = folly::base64Decode(packet.base64Packet);
550+
auto binaryPacket = packet.binaryPacket;
551551

552552
EXPECT_FALSE(packet.base64Packet.empty());
553553

0 commit comments

Comments
 (0)