3#include <winpr/stream.h>
5#include <winpr/crypto.h>
7#include <freerdp/freerdp.h>
8#include <freerdp/streamdump.h>
10#include "../streamdump.h"
12static BOOL test_entry_read_write(
void)
21 BYTE tmp[16] = WINPR_C_ARRAY_INIT;
22 char tmp2[64] = WINPR_C_ARRAY_INIT;
24 size_t entrysize =
sizeof(UINT64) +
sizeof(BYTE) +
25 sizeof(UINT32) +
sizeof(UINT64) ;
27 if (winpr_RAND(tmp,
sizeof(tmp)) < 0)
30 for (
size_t x = 0; x <
sizeof(tmp); x++)
31 (
void)_snprintf(&tmp2[x * 2],
sizeof(tmp2) - 2 * x,
"%02" PRIx8, tmp[x]);
32 name = GetKnownSubPath(KNOWN_PATH_TEMP, tmp2);
35 (void)fprintf(stderr,
"[%s] Could not create temporary path\n", __func__);
39 sw = Stream_New(
nullptr, 8123);
40 sr = Stream_New(
nullptr, 1024);
43 (void)fprintf(stderr,
"[%s] Could not create iostreams sw=%p, sr=%p\n", __func__, (
void*)sw,
48 if (winpr_RAND(Stream_Buffer(sw), Stream_Capacity(sw)) < 0)
50 entrysize += Stream_Capacity(sw);
51 if (!Stream_SetLength(sw, Stream_Capacity(sw)))
54 fp = fopen(name,
"wb");
57 if (!stream_dump_write_line(fp, 0, sw))
61 fp = fopen(name,
"rb");
64 if (!stream_dump_read_line(fp, sr, &ts, &offset, &flags))
67 if (entrysize != offset)
69 (void)fprintf(stderr,
"[%s] offset %" PRIuz
" bytes, entrysize %" PRIuz
" bytes\n",
70 __func__, offset, entrysize);
74 if (Stream_Length(sr) != Stream_Capacity(sw))
76 (void)fprintf(stderr,
"[%s] Written %" PRIuz
" bytes, read %" PRIuz
" bytes\n", __func__,
77 Stream_Length(sr), Stream_Capacity(sw));
81 if (memcmp(Stream_Buffer(sw), Stream_Buffer(sr), Stream_Capacity(sw)) != 0)
83 (void)fprintf(stderr,
"[%s] Written data does not match data read back\n", __func__);
88 Stream_Free(sr, TRUE);
89 Stream_Free(sw, TRUE);
93 winpr_DeleteFile(name);
95 (void)fprintf(stderr,
"xxxxxxxxxxxxx %d\n", rc);
99int TestStreamDump(
int argc,
char* argv[])
104 if (!test_entry_read_write())