preserve transport outage validation evidence

This commit is contained in:
Jay
2026-08-17 14:30:56 -04:00
parent 291c6b54e6
commit 1cf0a9ac77
9 changed files with 176 additions and 26 deletions
+12 -6
View File
@@ -3,6 +3,12 @@
#include "trikke_protocol.h"
static int fail(int code, const char *message)
{
fprintf(stderr, "protocol fixture failure %d: %s\n", code, message);
return code;
}
int main(void)
{
uint8_t packet[TRIKKE_WIRE_MAX_PACKET_SIZE] = {0};
@@ -20,7 +26,7 @@ int main(void)
size_t size = trikke_encode_metadata_packet(
packet, sizeof(packet), 41, 1234567, 2, 3, &metadata);
if (size == 0 || fwrite(packet, 1, size, stdout) != size) {
return 1;
return fail(1, "metadata encoding or output");
}
const trikke_wire_sample_t samples[] = {
@@ -52,7 +58,7 @@ int main(void)
size = trikke_encode_sample_packet(packet, sizeof(packet), 42, 2, 3,
samples, 2);
if (size == 0 || fwrite(packet, 1, size, stdout) != size) {
return 1;
return fail(2, "basic sample encoding or output");
}
trikke_wire_sample_t full_packet[TRIKKE_WIRE_MAX_RECORDS] = {0};
@@ -69,7 +75,7 @@ int main(void)
TRIKKE_WIRE_MAX_RECORDS);
if (size != TRIKKE_WIRE_MAX_PACKET_SIZE ||
fwrite(packet, 1, size, stdout) != size) {
return 2;
return fail(3, "maximum-size sample encoding or output");
}
const trikke_wire_sample_t saturated[] = {
@@ -79,13 +85,13 @@ int main(void)
size = trikke_encode_sample_packet(packet, sizeof(packet), 44, 2, 3,
saturated, 2);
if (size == 0 || fwrite(packet, 1, size, stdout) != size) {
return 3;
return fail(4, "saturated timestamp encoding or output");
}
if (!trikke_wire_timestamp_delta_fits(0, 655350) ||
trikke_wire_timestamp_delta_fits(0, 655351) ||
trikke_wire_timestamp_delta_fits(1, 0)) {
return 4;
return fail(5, "timestamp-delta boundary contract");
}
if (trikke_encode_metadata_packet(
packet, TRIKKE_WIRE_HEADER_SIZE + TRIKKE_WIRE_METADATA_SIZE - 1,
@@ -98,7 +104,7 @@ int main(void)
trikke_encode_sample_packet(packet, TRIKKE_WIRE_MAX_PACKET_SIZE - 1,
0, 0, 0, full_packet,
TRIKKE_WIRE_MAX_RECORDS) != 0) {
return 5;
return fail(6, "invalid argument rejection contract");
}
return 0;
}