Skip to content

Commit

Permalink
[TEST] add test case for updating dynamic table capacity to a smaller…
Browse files Browse the repository at this point in the history
… value.
  • Loading branch information
gwanglst committed Oct 19, 2022
1 parent ba02bf5 commit bce4878
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 0 deletions.
1 change: 1 addition & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ lsqpack_add_test(huff_dec)
lsqpack_add_test(read_enc_stream)
lsqpack_add_test(qpack)
lsqpack_add_test(circ_list)
lsqpack_add_test(dyn_table_cap_mismatch)

if(MSVC)
message(WARNING "Scenario tests are disabled on Windows (TODO)")
Expand Down
51 changes: 51 additions & 0 deletions test/test_dyn_table_cap_mismatch.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#include <stdio.h>
#include <stdlib.h>
#include "lsqpack.h"
#include "lsxpack_header.h"

static void _decoderUnblocked(void *context) {
}

static struct lsxpack_header *_decoderPrepareDecode(void *context, struct lsxpack_header *header, size_t space)
{
static struct lsxpack_header xpackHeader;
char *xpackHeaderBuffer = (char *)malloc(space);
lsxpack_header_prepare_decode(&xpackHeader, xpackHeaderBuffer, 0, space);
return &xpackHeader;
}

static int _decoderProcessHeader(void *context, struct lsxpack_header *header)
{
printf("Decode header %.*s: %.*s\n", header->name_len, &header->buf[header->name_offset], header->val_len, &header->buf[header->val_offset]);
return 0;
}

int main(int argc, const char * argv[]) {
struct lsqpack_dec qpackDecoder;

struct lsqpack_dec_hset_if callbacks = {
.dhi_unblocked = _decoderUnblocked,
.dhi_prepare_decode = _decoderPrepareDecode,
.dhi_process_header = _decoderProcessHeader,
};
lsqpack_dec_init(&qpackDecoder, stderr, 16384, 100, &callbacks, (enum lsqpack_dec_opts)0);

FILE *encoder_stream = fopen("testdata/encoder_stream", "r");
uint8_t buffer[16384];
size_t size = 0;
while ((size = fread(buffer, 1, sizeof(buffer), encoder_stream)) > 0) {
lsqpack_dec_enc_in(&qpackDecoder, buffer, size);
}
fclose(encoder_stream);

FILE *response = fopen("testdata/response", "r");
size = fread(buffer, 1, sizeof(buffer), response);
uint8_t decoderBuffer[LSQPACK_LONGEST_HEADER_ACK];
size_t decoderBufferSize = sizeof(decoderBuffer);
const uint8_t *bufferRef = buffer;
enum lsqpack_read_header_status status = lsqpack_dec_header_in(&qpackDecoder, NULL, 2092, size, &bufferRef, size, decoderBuffer, &decoderBufferSize);
printf("Decode status %d\n", status);
fclose(response);

return 0;
}
Binary file added test/testdata/encoder_stream
Binary file not shown.
2 changes: 2 additions & 0 deletions test/testdata/response
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@

����

0 comments on commit bce4878

Please sign in to comment.