lsqpack 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|