X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=test.c;h=4a1bf16e3bff39ca60ac67472b3c4e0c8f9f0cd5;hb=b52e9aa456dfeedfaa8c3be0e8347d1e1477b611;hp=a078e1f9584ab756db68ef0357a17ba051aa314b;hpb=526b4278d148a1d902ca4144e2f6c6f8436aa06e;p=utcp diff --git a/test.c b/test.c index a078e1f..4a1bf16 100644 --- a/test.c +++ b/test.c @@ -30,11 +30,13 @@ double dropin; double dropout; long total_out; long total_in; +FILE *reference; char *reorder_data; size_t reorder_len; int reorder_countdown; +#if UTCP_DEBUG void debug(const char *format, ...) { struct timeval now; gettimeofday(&now, NULL); @@ -44,6 +46,9 @@ void debug(const char *format, ...) { vfprintf(stderr, format, ap); va_end(ap); } +#else +#define debug(...) +#endif ssize_t do_recv(struct utcp_connection *c, const void *data, size_t len) { if(!data || !len) { @@ -56,6 +61,17 @@ ssize_t do_recv(struct utcp_connection *c, const void *data, size_t len) { } return -1; } + if(reference) { + char buf[len]; + if(fread(buf, len, 1, reference) != 1) { + debug("Error reading reference\n"); + abort(); + } + if(memcmp(buf, data, len)) { + debug("Received data differs from reference\n"); + abort(); + } + } return write(1, data, len); } @@ -119,6 +135,10 @@ int main(int argc, char *argv[]) { if(getenv("REORDER")) reorder = atof(getenv("REORDER")); if(getenv("REORDER_DIST")) reorder_dist = atoi(getenv("REORDER_DIST")); + char *reference_filename = getenv("REFERENCE"); + if(reference_filename) + reference = fopen(reference_filename, "r"); + if(dropto < dropfrom) dropto = 1 << 30;