lsqpack 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +19 -0
- data/Gemfile.lock +82 -0
- data/LICENSE +21 -0
- data/README.md +36 -0
- data/Rakefile +19 -0
- data/Steepfile +6 -0
- data/ext/lsqpack/extconf.rb +18 -0
- data/ext/lsqpack/lsqpack.c +426 -0
- data/ext/lsqpack/lsqpack.h +6 -0
- data/lib/lsqpack/version.rb +5 -0
- data/lib/lsqpack.rb +30 -0
- data/ls-qpack/.appveyor.yml +14 -0
- data/ls-qpack/.cirrus.yml +6 -0
- data/ls-qpack/.travis.yml +32 -0
- data/ls-qpack/CMakeLists.txt +66 -0
- data/ls-qpack/LICENSE +21 -0
- data/ls-qpack/README.md +65 -0
- data/ls-qpack/bin/CMakeLists.txt +21 -0
- data/ls-qpack/bin/encode-int.c +87 -0
- data/ls-qpack/bin/fuzz-decode.c +247 -0
- data/ls-qpack/bin/interop-decode.c +433 -0
- data/ls-qpack/bin/interop-encode.c +554 -0
- data/ls-qpack/deps/xxhash/xxhash.c +941 -0
- data/ls-qpack/deps/xxhash/xxhash.h +160 -0
- data/ls-qpack/fuzz/decode/a/README +3 -0
- data/ls-qpack/fuzz/decode/a/preamble +0 -0
- data/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000390,op_havoc,rep_4 +0 -0
- data/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000579,op_flip1,pos_14 +0 -0
- data/ls-qpack/fuzz/decode/a/test-cases/id_000000,src_000000,op_flip2,pos_12 +0 -0
- data/ls-qpack/fuzz/decode/a/test-cases/id_000001,sig_11,src_000579,op_havoc,rep_4 +0 -0
- data/ls-qpack/fuzz/decode/a/test-cases/id_000002,sig_11,src_000481,op_int16,pos_15,val_-1 +0 -0
- data/ls-qpack/fuzz/decode/a/test-cases/id_000002,src_000000,op_havoc,rep_8 +0 -0
- data/ls-qpack/fuzz/decode/a/test-cases/id_000006,src_000285,op_flip2,pos_14 +0 -0
- data/ls-qpack/fuzz/decode/a/test-cases/id_000008,src_000285,op_flip2,pos_20 +0 -0
- data/ls-qpack/fuzz/decode/a/test-cases/id_000010,src_000306,op_flip2,pos_75 +0 -0
- data/ls-qpack/fuzz/decode/a/test-cases/id_000011,src_000344,op_havoc,rep_2 +0 -0
- data/ls-qpack/fuzz/decode/a/test-cases/id_000014,src_000366,op_flip2,pos_28 +0 -0
- data/ls-qpack/fuzz/decode/b/README +1 -0
- data/ls-qpack/fuzz/decode/b/preamble +0 -0
- data/ls-qpack/fuzz/decode/b/test-cases/seed +0 -0
- data/ls-qpack/fuzz/decode/c/setup.sh +3 -0
- data/ls-qpack/fuzz/decode/c/test-cases/fb-req.qif.proxygen.out.256.100.0-chopped +0 -0
- data/ls-qpack/fuzz/decode/d/preamble +0 -0
- data/ls-qpack/fuzz/decode/d/setup.sh +3 -0
- data/ls-qpack/fuzz/decode/d/test-cases/fb-resp.minhq.256.128.0.ack +0 -0
- data/ls-qpack/fuzz/input/256.100.1/fb-req.out.256.100.1 +0 -0
- data/ls-qpack/fuzz/input/256.100.1/fb-resp.out.256.100.1 +0 -0
- data/ls-qpack/fuzz/input/256.100.1/netbsd.out.256.100.1 +0 -0
- data/ls-qpack/huff-tables.h +136247 -0
- data/ls-qpack/lsqpack.c +5547 -0
- data/ls-qpack/lsqpack.h +768 -0
- data/ls-qpack/test/CMakeLists.txt +76 -0
- data/ls-qpack/test/lsqpack-test.h +43 -0
- data/ls-qpack/test/qifs/fb-req.qif +4917 -0
- data/ls-qpack/test/qifs/fb-resp.qif +5982 -0
- data/ls-qpack/test/qifs/long-codes.qif +5984 -0
- data/ls-qpack/test/qifs/netbsd.qif +235 -0
- data/ls-qpack/test/run-qif.pl +97 -0
- data/ls-qpack/test/run-scenario.sh +68 -0
- data/ls-qpack/test/scenarios/0.95-reset.sce +10 -0
- data/ls-qpack/test/scenarios/cancel-stream.sce +22 -0
- data/ls-qpack/test/scenarios/drain-2.sce +37 -0
- data/ls-qpack/test/scenarios/drain.sce +37 -0
- data/ls-qpack/test/scenarios/end-dst-2.sce +14 -0
- data/ls-qpack/test/scenarios/end-dst.sce +14 -0
- data/ls-qpack/test/scenarios/incl-name.sce +13 -0
- data/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-1.sce +110 -0
- data/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-2.sce +161 -0
- data/ls-qpack/test/scenarios/post-base-1.sce +10 -0
- data/ls-qpack/test/scenarios/post-base-2.sce +13 -0
- data/ls-qpack/test/scenarios/post-base-nr.sce +10 -0
- data/ls-qpack/test/scenarios/set-max-cap.sce +15 -0
- data/ls-qpack/test/test_enc_str.c +139 -0
- data/ls-qpack/test/test_get_stx_id.c +144 -0
- data/ls-qpack/test/test_huff_dec.c +399 -0
- data/ls-qpack/test/test_int.c +220 -0
- data/ls-qpack/test/test_qpack.c +856 -0
- data/ls-qpack/test/test_read_enc_stream.c +256 -0
- data/ls-qpack/tools/har2qif.pl +139 -0
- data/ls-qpack/tools/randomize-cookies.pl +41 -0
- data/ls-qpack/tools/sort-qif.pl +31 -0
- data/ls-qpack/wincompat/getopt.c +758 -0
- data/ls-qpack/wincompat/getopt.h +131 -0
- data/ls-qpack/wincompat/getopt1.c +188 -0
- data/ls-qpack/wincompat/sys/queue.h +859 -0
- data/lsqpack.gemspec +39 -0
- data/sig/lsqpack.rbs +29 -0
- metadata +135 -0
@@ -0,0 +1,76 @@
|
|
1
|
+
function(lsqpack_add_test TARGET)
|
2
|
+
add_executable(test_${TARGET} "")
|
3
|
+
target_sources(test_${TARGET} PRIVATE test_${TARGET}.c)
|
4
|
+
target_link_libraries(test_${TARGET} ls-qpack)
|
5
|
+
|
6
|
+
if(MSVC)
|
7
|
+
target_include_directories(test_${TARGET} PRIVATE ../wincompat)
|
8
|
+
target_sources(test_${TARGET} PRIVATE
|
9
|
+
../wincompat/getopt.c
|
10
|
+
../wincompat/getopt1.c
|
11
|
+
)
|
12
|
+
else()
|
13
|
+
target_link_libraries(test_${TARGET} m)
|
14
|
+
endif()
|
15
|
+
|
16
|
+
add_test(${TARGET} test_${TARGET})
|
17
|
+
endfunction()
|
18
|
+
|
19
|
+
lsqpack_add_test(int)
|
20
|
+
lsqpack_add_test(enc_str)
|
21
|
+
lsqpack_add_test(huff_dec)
|
22
|
+
lsqpack_add_test(read_enc_stream)
|
23
|
+
lsqpack_add_test(qpack)
|
24
|
+
lsqpack_add_test(get_stx_id)
|
25
|
+
|
26
|
+
if(MSVC)
|
27
|
+
message(WARNING "Scenario tests are disabled on Windows (TODO)")
|
28
|
+
else()
|
29
|
+
file(GLOB SCENARIOS scenarios/*.sce)
|
30
|
+
foreach(SCENARIO ${SCENARIOS})
|
31
|
+
get_filename_component(TEST_NAME ${SCENARIO} NAME)
|
32
|
+
add_test(
|
33
|
+
NAME scenario-${TEST_NAME}
|
34
|
+
COMMAND bash run-scenario.sh ${SCENARIO}
|
35
|
+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test
|
36
|
+
)
|
37
|
+
set_tests_properties(scenario-${TEST_NAME} PROPERTIES
|
38
|
+
ENVIRONMENT "PATH=$ENV{PATH}:${PROJECT_BINARY_DIR}/bin:${PROJECT_SOURCE_DIR}/tools"
|
39
|
+
)
|
40
|
+
endforeach()
|
41
|
+
endif()
|
42
|
+
|
43
|
+
find_package(Perl)
|
44
|
+
|
45
|
+
if(PERL_FOUND)
|
46
|
+
message(STATUS "Found Perl interpreter: ${PERL}")
|
47
|
+
file(GLOB QIFS qifs/*.qif)
|
48
|
+
|
49
|
+
foreach(QIF ${QIFS})
|
50
|
+
get_filename_component(FILE_NAME ${QIF} NAME)
|
51
|
+
|
52
|
+
foreach(TABLE_SIZE 0 256 512 1024 4096)
|
53
|
+
foreach(RISKED_STREAMS 0 100)
|
54
|
+
foreach(IMMEDIATE_ACK 0 1)
|
55
|
+
foreach(AGGRESSIVE 0 1)
|
56
|
+
set(TEST_NAME qif-${FILE_NAME}-t${TABLE_SIZE}-s${RISKED_STREAMS}-a${IMMEDIATE_ACK}-A${AGGRESSIVE})
|
57
|
+
|
58
|
+
add_test(
|
59
|
+
NAME ${TEST_NAME}
|
60
|
+
COMMAND ${PERL} run-qif.pl --table-size ${TABLE_SIZE} --risked-streams ${RISKED_STREAMS} --immed-ack ${IMMEDIATE_ACK} --aggressive ${AGGRESSIVE} ${QIF}
|
61
|
+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test
|
62
|
+
)
|
63
|
+
|
64
|
+
if(NOT MSVC)
|
65
|
+
set_tests_properties(${TEST_NAME} PROPERTIES
|
66
|
+
ENVIRONMENT "PATH=$ENV{PATH}:${PROJECT_BINARY_DIR}/bin:${PROJECT_SOURCE_DIR}/tools"
|
67
|
+
)
|
68
|
+
endif()
|
69
|
+
endforeach()
|
70
|
+
endforeach()
|
71
|
+
endforeach()
|
72
|
+
endforeach()
|
73
|
+
endforeach()
|
74
|
+
else()
|
75
|
+
message(WARNING "Perl not found: QIF tests won't be run")
|
76
|
+
endif()
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#ifndef LITESPEED_QPACK_TEST_H
|
2
|
+
#define LITESPEED_QPACK_TEST_H 1
|
3
|
+
|
4
|
+
#ifndef LS_QPACK_USE_LARGE_TABLES
|
5
|
+
#define LS_QPACK_USE_LARGE_TABLES 1
|
6
|
+
#endif
|
7
|
+
|
8
|
+
#if !LS_QPACK_USE_LARGE_TABLES
|
9
|
+
#define lsqpack_huff_decode_full lsqpack_huff_decode
|
10
|
+
#endif
|
11
|
+
|
12
|
+
int
|
13
|
+
lsqpack_enc_enc_str (unsigned prefix_bits, unsigned char *const dst,
|
14
|
+
size_t dst_len, const unsigned char *str, unsigned str_len);
|
15
|
+
|
16
|
+
unsigned char *
|
17
|
+
lsqpack_enc_int (unsigned char *dst, unsigned char *const end, uint64_t value,
|
18
|
+
unsigned prefix_bits);
|
19
|
+
|
20
|
+
int
|
21
|
+
lsqpack_dec_int (const unsigned char **src_p, const unsigned char *src_end,
|
22
|
+
unsigned prefix_bits, uint64_t *value_p,
|
23
|
+
struct lsqpack_dec_int_state *state);
|
24
|
+
|
25
|
+
struct huff_decode_retval
|
26
|
+
{
|
27
|
+
enum
|
28
|
+
{
|
29
|
+
HUFF_DEC_OK,
|
30
|
+
HUFF_DEC_END_SRC,
|
31
|
+
HUFF_DEC_END_DST,
|
32
|
+
HUFF_DEC_ERROR,
|
33
|
+
} status;
|
34
|
+
unsigned n_dst;
|
35
|
+
unsigned n_src;
|
36
|
+
};
|
37
|
+
|
38
|
+
struct huff_decode_retval
|
39
|
+
lsqpack_huff_decode_full (const unsigned char *src, int src_len,
|
40
|
+
unsigned char *dst, int dst_len,
|
41
|
+
struct lsqpack_huff_decode_state *state, int final);
|
42
|
+
|
43
|
+
#endif
|