123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161 |
- /*
- * Copyright (C) 2009 Mamadou Diop.
- * Copyright (C) 2012 Doubango Telecom <http://doubango.org>.
- *
- * This file is part of Open Source Doubango Framework.
- *
- * DOUBANGO is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * DOUBANGO is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with DOUBANGO.
- *
- */
- #ifndef TEST_TINYSIGCOMP_TORTURES_H
- #define TEST_TINYSIGCOMP_TORTURES_H
- #define COMPARTMENT_ID "urn:uuid:2e5fdc76-00be-4314-8202-1116fa82a473"
- #define COMPARTMENT_ID_0 "urn:uuid:0"
- #define COMPARTMENT_ID_1 "urn:uuid:1"
- #define COMPARTMENT_ID_2 "urn:uuid:2"
- #define OUTPUT_BUFFER_SIZE 2000
- // Be careful before changing these values as not all tests accept any
- #define DMS 16384 //2048//4096//8192//65536
- #define SMS 2048 //2048//4096//8192//65536
- #define CPB 16 // 16//32//64//128
- #define RUN_TEST_LOOP 1
- #define RUN_TEST_ALL 1
- #define RUN_TEST_NO 68
- #define IS_STREAM_YES 1
- #define IS_STREAM_NO 0
- #define XFAIL_YES 1
- #define XFAIL_NO 0
- #include "rfc4465_torture_tests.h"
- #include <assert.h>
- struct_torture_test tests[] = {
- {
- //*** 0***
- "A.1.1. Bit Manipulation",
- RFC4465_A_1_1__Bit_Manipulation,
- 170,
- {8, "\x01\x50\x00\x00\xfe\xbf\x00\x00"},
- 22,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //*** 1***
- "A.1.2(.1) Arithmetic",
- RFC4465_A_1_2__Arithmetic_1,
- 174,
- {8, "\x00\x00\x00\x00\x00\x00\x00\x04"},
- 25,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //*** 2***
- "A.1.2(.2) Arithmetic",
- RFC4465_A_1_2__Arithmetic_2,
- 174,
- {11, "DIV_BY_ZERO"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //*** 3***
- "A.1.2(.3) Arithmetic",
- RFC4465_A_1_2__Arithmetic_3,
- 174,
- {11, "DIV_BY_ZERO"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //*** 4***
- "A.1.3. Sorting",
- RFC4465_A_1_3__Sorting,
- 223,
- {
- 45, "\x46\x6f\x72\x64\x2c\x20\x79\x6f\x75\x27\x72\x65\x20\x74\x75\x72\x6e\x69\x6e\x67"
- "\x20\x69\x6e\x74\x6f\x20\x61\x20\x70\x65\x6e\x67\x75\x69\x6e\x2e\x20\x53\x74\x6f"
- "\x70\x20\x69\x74\x2e"
- },
- 371,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //*** 5**
- "A.1.4. SHA-1",
- RFC4465_A_1_4__SHA1,
- 138,
- {
- 40, "\xa9\x99\x3e\x36\x47\x06\x81\x6a\xba\x3e\x25\x71\x78\x50\xc2\x6c\x9c\xd0\xd8\x9d"
- "\x84\x98\x3e\x44\x1c\x3b\xd2\x6e\xba\xae\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1"
- "\x12\xff\x34\x7b\x4f\x27\xd6\x9e\x1f\x32\x8e\x6f\x4b\x55\x73\xe3\x66\x6e\x12\x2f"
- "\x4f\x46\x04\x52\xeb\xb5\x63\x93\x4f\x46\x04\x52\xeb\xb5\x63\x93\x4f\x46\x04\x52"
- },
- 17176,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //*** 6**
- "A.1.5.(1) LOAD and MULTILOAD",
- RFC4465_A_1_5__LOAD_and_MULTILOAD_1,
- 58,
- {16, "\x00\x84\x00\x84\x00\x86\x00\x86\x00\x2a\x00\x80\x00\x2a\x00\x2a"},
- 36,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //*** 7**
- "A.1.5.(2) LOAD and MULTILOAD",
- RFC4465_A_1_5__LOAD_and_MULTILOAD_2,
- 58,
- {21, "MULTILOAD_OVERWRITTEN"},
- 36,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //*** 8**
- "A.1.5.(3) LOAD and MULTILOAD",
- RFC4465_A_1_5__LOAD_and_MULTILOAD_3,
- 58,
- {21, "MULTILOAD_OVERWRITTEN"},
- 36,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 9**
- "A.1.6. COPY",
- RFC4465_A_1_6__COPY,
- 60,
- {
- 125, "\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40"
- "\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x40\x41\x41\x41\x41\x41\x41\x41\x41"
- "\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
- "\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
- "\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
- "\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x55\x41"
- "\x42\x43\x44\x43\x44"
- },
- 365,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 10**
- "A.1.7. COPY-LITERAL and COPY-OFFSET",
- RFC4465_A_1_7__COPY_LITERAL_and_COPY_OFFSET,
- 100,
- {
- 34, "\x41\x41\x41\x41\x00\x61\x41\x41\x41\x41\x49\x4a\x41\x42\x43\x44\x49\x4a\x41\x42"
- "\x00\x4a\x00\x4e\x47\x48\x48\x45\x46\x47\x47\x48\x45\x46"
- },
- 216,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 11**
- "A.1.8. MEMSET",
- RFC4465_A_1_8__MEMSET,
- 27,
- {16, "\x80\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9\xb8\xc7\xd6\xe5\xf4\x03\x12"},
- 166,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 12**
- "A.1.9.(1) CRC",
- RFC4465_A_1_9__CRC_1,
- 29,
- {0, ""},
- 95,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 13**
- "A.1.9.(2) CRC",
- RFC4465_A_1_9__CRC_2,
- 29,
- {14, "USER_REQUESTED"},
- 95,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 14**
- "A.1.10. INPUT-BITS",
- RFC4465_A_1_10__INPUT_BITS,
- 28,
- {16, "\x00\x00\x00\x02\x00\x02\x00\x13\x00\x00\x00\x03\x00\x1a\x00\x38"},
- 66,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 15**
- "A.1.11. INPUT-HUFFMAN",
- RFC4465_A_1_11__INPUT_HUFFMAN,
- 39,
- {16, "\x00\x00\x00\x03\x00\x08\x04\xd7\x00\x02\x00\x03\x03\x99\x30\xfe"},
- 84,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 16**
- "A.1.12. INPUT-BYTES",
- RFC4465_A_1_12__INPUT_BYTES,
- 72,
- {
- 39, "\x00\x00\x93\x2e\x00\x01\xb1\x66\xd8\x6f\xb1\x00\x1a\x2b\x00\x03\x9a\x97\x34\xd8"
- "\x00\x07\x00\x01\x33\x87\x4e\x00\x08\xdc\x96\x51\xb5\xdc\x96\x00\x59\x9d\x6a"
- },
- 130,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 17**
- "A.1.13. Stack Manipulation",
- RFC4465_A_1_13__Stack_Manipulation,
- 324,
- {16, "\x00\x03\x00\x02\x00\x01\x00\x42\x00\x42\x00\x00\x00\x01\x00\x01"},
- 40,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 18**
- "A.1.14. Program Flow",
- RFC4465_A_1_14__Program_Flow,
- 66,
- {20, "\x00\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x07\x07\x07\x08\x08\x08\x09\x09"},
- 131,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 19**
- "A.1.15.(1) State Creation",
- RFC4465_A_1_15__State_Creation_1,
- 152,
- {0, ""},
- 23,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 20 (requires previsous test)**
- "A.1.15.(2) State Creation",
- RFC4465_A_1_15__State_Creation_2,
- 152,
- {0, ""},
- 14,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 21 (requires previsous test)**
- "A.1.15.(3) State Creation",
- RFC4465_A_1_15__State_Creation_3,
- 152,
- {0, ""},
- 24,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 22 (requires previsous test)**
- "A.1.15.(4) State Creation", // FAIL
- RFC4465_A_1_15__State_Creation_4,
- 153,
- {23, "INVALID_STATE_ID_LENGTH"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 23 (requires previsous test)**
- "A.1.15.(5) State Creation", // FAIL
- RFC4465_A_1_15__State_Creation_5,
- 153,
- {23, "INVALID_STATE_ID_LENGTH"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 24 (requires previsous test)**
- "A.1.15.(6) State Creation",
- RFC4465_A_1_15__State_Creation_6,
- 153,
- {0, ""},
- 23,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 25 (requires previsous test)**
- "A.1.15.(7) State Creation",
- RFC4465_A_1_15__State_Creation_7,
- 152,
- {0, ""},
- 34,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 26 (requires previsous test)**
- "A.1.15.(8) State Creation",
- RFC4465_A_1_15__State_Creation_8,
- 153,
- {0, ""},
- 46,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 27 (requires previsous test)**
- "A.1.15.(9) State Creation",
- RFC4465_A_1_15__State_Creation_9,
- 153,
- {0, ""},
- 47,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- #if 0 // FIXME: http://code.google.com/p/doubango/issues/detail?id=181
- ,
- {
- //** 23 (requires previsous test)**
- "A.1.15.(10) State Creation",
- RFC4465_A_1_15__State_Creation_10,
- 153,
- {0, ""},
- 60,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- #endif
- ,
- {
- //** 28**
- "A.1.16.(0) STATE-ACCESS {Set up bytecode}",
- RFC4465_A_1_16__STATE_ACCESS__SETUP,
- 403,
- {0, ""},
- 17,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 29 (requires previous test)**
- "A.1.16.(1) STATE-ACCESS",
- RFC4465_A_1_16__STATE_ACCESS_1,
- 408,
- {4, "\x74\x65\x73\x74"},
- 26,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 30 (requires previous test)**
- "A.1.16.(2) STATE-ACCESS",
- RFC4465_A_1_16__STATE_ACCESS_2,
- 408,
- {4, "\x74\x65\x73\x74"},
- 15,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 31 (requires previous test)**
- "A.1.16.(3) STATE-ACCESS",
- RFC4465_A_1_16__STATE_ACCESS_3,
- 408,
- {15, "STATE_NOT_FOUND"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 32 (requires previous test)**
- "A.1.16.(4) STATE-ACCESS",
- RFC4465_A_1_16__STATE_ACCESS_4,
- 408,
- {15, "STATE_NOT_FOUND"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 33 (requires previous test)**
- "A.1.16.(5) STATE-ACCESS",
- RFC4465_A_1_16__STATE_ACCESS_5,
- 408,
- {15, "STATE_TOO_SHORT"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 34**
- "A.2.1.(1) Useful Values",
- RFC4465_A_2_1__Useful_Values_1,
- 93,
- {0, ""},
- 966,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 35 (Requires previous test)**
- "A.2.1.(2) Useful Values",
- RFC4465_A_2_1__Useful_Values_2,
- 9,
- {0, ""},
- (1072 << 4),
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 36 (Requires previous test)**
- "A.2.1.(3) Useful Values",
- RFC4465_A_2_1__Useful_Values_3,
- 9,
- {16, "CYCLES_EXHAUSTED"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 37 (Requires previous test)**
- "A.2.1.(4) Useful Values",
- RFC4465_A_2_1__Useful_Values_4,
- 9,
- {8, "SEGFAULT"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 38**
- "A.2.2. Cycles Checking",
- RFC4465_A_2_2__Cycles_Checking,
- 29,
- {16, "CYCLES_EXHAUSTED"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 39**
- "A.2.3.(1) Message-based Transport",
- RFC4465_A_2_3_Message_based_Transport_1,
- 1,
- {17, "MESSAGE_TOO_SHORT"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 40**
- "A.2.3.(2) Message-based Transport",
- RFC4465_A_2_3_Message_based_Transport_2,
- 2,
- {17, "MESSAGE_TOO_SHORT"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 41**
- "A.2.3.(3) Message-based Transport",
- RFC4465_A_2_3_Message_based_Transport_3,
- 17,
- {25, "decompression_memory_size"},
- 5,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 42**
- "A.2.3.(4) Message-based Transport",
- RFC4465_A_2_3_Message_based_Transport_4,
- 17,
- {17, "MESSAGE_TOO_SHORT"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 43**
- "A.2.3.(5) Message-based Transport",
- RFC4465_A_2_3_Message_based_Transport_5,
- 17,
- {21, "INVALID_CODE_LOCATION"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 44**
- "A.2.3.(6) Message-based Transport",
- RFC4465_A_2_3_Message_based_Transport_6,
- 17,
- {25, "decompression_memory_size"},
- 5,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 45**
- "A.2.4.(1&2) Stream-based Transport",
- RFC4465_A_2_4_Stream_based_Transport_1,
- 67,
- {25, "decompression_memory_size"},
- 11,
- IS_STREAM_YES,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 46**
- "A.2.4.(3) Stream-based Transport",
- RFC4465_A_2_4_Stream_based_Transport_3,
- 3,
- {17, "MESSAGE_TOO_SHORT"},
- 0,
- IS_STREAM_YES,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 47**
- "A.2.4.(4) Stream-based Transport",
- RFC4465_A_2_4_Stream_based_Transport_4,
- 4,
- {17, "MESSAGE_TOO_SHORT"},
- 0,
- IS_STREAM_YES,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 48**
- "A.2.4.(5) Stream-based Transport",
- RFC4465_A_2_4_Stream_based_Transport_5,
- 30,
- {17, "MESSAGE_TOO_SHORT"},
- 0,
- IS_STREAM_YES,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 49**
- "A.2.4.(5.1) Stream-based Transport (cleanup)",
- "\xff\xff",
- 2,
- {14, "INTERNAL_ERROR"},
- 0,
- IS_STREAM_YES,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 50**
- "A.2.4.(6) Stream-based Transport",
- RFC4465_A_2_4_Stream_based_Transport_6,
- 29,
- {21, "INVALID_CODE_LOCATION"},
- 0,
- IS_STREAM_YES,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 51**
- "A.2.4.(6.1) Stream-based Transport (cleanup)",
- "\xff\xff",
- 2,
- {14, "INTERNAL_ERROR"},
- 0,
- IS_STREAM_YES,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 52**
- "A.2.5.(1) Input Past the End of a Message",
- RFC4465_A_2_5__Input_Past_the_End_of_a_Message_1,
- 59,
- {3, "\x68\x69\x21"},
- 23,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 53**
- "A.2.5.(2) Input Past the End of a Message",
- RFC4465_A_2_5__Input_Past_the_End_of_a_Message_2,
- 58,
- {14, "USER_REQUESTED"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 54**
- "A.3.1.(1) SigComp Feedback Mechanism",
- RFC4465_A_3_1__SigComp_Feedback_Mechanism_1,
- 84,
- {0, ""},
- 52,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 55**
- "A.3.1.(2) SigComp Feedback Mechanism",
- RFC4465_A_3_1__SigComp_Feedback_Mechanism_2,
- 84,
- {0, ""},
- 179,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 56 (SMS MUST be 2048)**
- "A.3.2.(1) State Memory Management",
- RFC4465_A_3_2__State_Memory_Management_1,
- 446,
- {0, ""},
- 811,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 57 (Requires previous test)**
- "A.3.2.(2) State Memory Management",
- RFC4465_A_3_2__State_Memory_Management_2,
- 446,
- {0, ""},
- 2603,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 58 (Requires previous test)**
- "A.3.2.(3) State Memory Management",
- RFC4465_A_3_2__State_Memory_Management_3,
- 446,
- {0, ""},
- 811,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 59 (Requires previous test)**
- "A.3.2.(4) State Memory Management",
- RFC4465_A_3_2__State_Memory_Management_4,
- 446,
- {0, ""},
- 1805,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 60 (Requires previous test)**
- "A.3.2.(5) State Memory Management",
- RFC4465_A_3_2__State_Memory_Management_5,
- 446,
- {15, "STATE_NOT_FOUND"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID
- }
- ,
- {
- //** 61 (Requires previous test)**
- "A.3.2.(6) State Memory Management",
- RFC4465_A_3_2__State_Memory_Management_6,
- 446,
- {0, ""},
- 2057,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 62 (Requires previous test)**
- "A.3.2.(7) State Memory Management",
- RFC4465_A_3_2__State_Memory_Management_7,
- 446,
- {0, ""},
- 1993,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 63**
- "A.3.3.(1) Multiple Compartments",
- RFC4465_A_3_3__Multiple_Compartments_1,
- 437,
- {0, ""},
- 1809,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID_0
- }
- ,
- {
- //** 64 (requires previsous test)**
- "A.3.3.(2) Multiple Compartments",
- RFC4465_A_3_3__Multiple_Compartments_2,
- 437,
- {0, ""},
- 1809,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID_1
- }
- ,
- {
- //** 65 (requires previsous test)**
- "A.3.3.(3) Multiple Compartments",
- RFC4465_A_3_3__Multiple_Compartments_3,
- 437,
- {0, ""},
- 1809,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID_2
- }
- ,
- {
- //** 66 (requires previsous test)**
- "A.3.3.(4) Multiple Compartments",
- RFC4465_A_3_3__Multiple_Compartments_4,
- 437,
- {0, ""},
- 1993,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID_0
- }
- ,
- {
- //** 67 (requires previsous test)**
- "A.3.3.(5) Multiple Compartments",
- RFC4465_A_3_3__Multiple_Compartments_5,
- 437,
- {0, ""},
- 1994,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID_1
- }
- ,
- {
- //** 68 (requires previsous test)**
- "A.3.3.(6) Multiple Compartments",
- RFC4465_A_3_3__Multiple_Compartments_6,
- 437,
- {0, ""},
- 1804,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID_2
- }
- ,
- {
- //** 69 (requires previsous test)**
- "A.3.3.(7) Multiple Compartments",
- RFC4465_A_3_3__Multiple_Compartments_7,
- 437,
- {15, "STATE_NOT_FOUND"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID_0
- }
- ,
- {
- //** 70 (requires previsous test)**
- "A.3.3.(8) Multiple Compartments",
- RFC4465_A_3_3__Multiple_Compartments_8,
- 437,
- {15, "STATE_NOT_FOUND"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID_1
- }
- ,
- {
- //** 71 (requires previsous test)**
- "A.3.3.(9) Multiple Compartments",
- RFC4465_A_3_3__Multiple_Compartments_9,
- 437,
- {15, "STATE_NOT_FOUND"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- COMPARTMENT_ID_2
- }
- ,
- {
- //** 72**
- "A.3.4. Accessing RFC 3485 State",
- RFC4465_A_3_4__Accessing_RFC_3485_State,
- 61,
- {3, "\x53\x49\x50"},
- 11,
- IS_STREAM_NO,
- XFAIL_NO,
- COMPARTMENT_ID
- }
- ,
- {
- //** 73**
- "A.3.5.(1) Bytecode State Creation",
- RFC4465_A_3_5__Bytecode_State_Creation_1,
- 74,
- {2, "\x4f\x4b"},
- 66,
- IS_STREAM_NO,
- XFAIL_NO,
- "Comp-id:A.3.5. Bytecode State Creation"
- }
- ,
- {
- //** 74**
- "A.3.5.(2) Bytecode State Creation",
- RFC4465_A_3_5__Bytecode_State_Creation_2,
- 8,
- {3, "\x4f\x4b\x31"},
- 7,
- IS_STREAM_NO,
- XFAIL_NO,
- "Comp-id:A.3.5. Bytecode State Creation"
- }
- ,
- {
- //** 75**
- "A.3.5.(3) Bytecode State Creation",
- RFC4465_A_3_5__Bytecode_State_Creation_3,
- 13,
- {3, "\x4f\x4b\x32"},
- 5,
- IS_STREAM_NO,
- XFAIL_NO,
- "Comp-id:A.3.5. Bytecode State Creation"
- }
- ,
- {
- //** 76**
- "A.3.5.(4) Bytecode State Creation",
- RFC4465_A_3_5__Bytecode_State_Creation_4,
- 7,
- {3, "\x00\x00\x32"},
- 5,
- IS_STREAM_NO,
- XFAIL_NO,
- "Comp-id:A.3.5. Bytecode State Creation"
- }
- ,
- {
- //** 77**
- "A.3.5.(5) Bytecode State Creation",
- RFC4465_A_3_5__Bytecode_State_Creation_5,
- 7,
- {15, "STATE_NOT_FOUND"},
- 0,
- IS_STREAM_NO,
- XFAIL_YES,
- "Comp-id:A.3.5. Bytecode State Creation"
- }
- };
- int startsWith(const char* buffer1, size_t size1, const char* buffer2, size_t size2)
- {
- size_t i;
- if(!size2) {
- return 1;
- }
- if(size1 < size2) {
- return 0;
- }
- for(i = 0; i< size2; i++) {
- if(buffer1[i] != buffer2[i]) {
- return 0;
- }
- }
- return 1;
- }
- static const int16_t wordForEndianess = 0x4321;
- static tsk_bool_t isBigEndian;
- static TCOMP_INLINE uint16_t HostToNetworkShort(uint16_t x)
- {
- return isBigEndian ? (x) : ((((uint16_t)(x) & 0xff00) >> 8) |
- (((uint16_t)(x) & 0x00ff) << 8));
- }
- static void checkResult(const struct_torture_test* test, const tcomp_result_t *result, const void* output_ptr, tsk_size_t output_size)
- {
- tsk_bool_t ok_cycles = (result->consumed_cycles == test->xcycles);
- tsk_bool_t ok_output = tsk_true;
- if(tsk_striequals(test->xoutput.ptr, "decompression_memory_size")) {
- printf("xoutput (decompression_memory_size): %s\n", (HostToNetworkShort(DMS) == *((uint16_t*)output_ptr)) ? "YES" : "NO");
- }
- else {
- ok_output = startsWith(output_ptr, output_size, test->xoutput.ptr, test->xoutput.size);
- printf("xoutput: %s\n", ok_output ? "YES" : "NO");
- }
- printf("xcycles: %s\n", ok_cycles ? "YES" : "NO");
- if(!ok_cycles || !ok_output) {
- assert(test->xfail && result->isNack); // failure must be expected and NACK have to be present
- assert(tsk_strequals(test->xoutput.ptr, tcomp_nackinfo_get_description(result->nack_info))); // returned NACK and expected one must be equal
- }
- }
- static int test_tortures()
- {
- size_t i, start, end;
- size_t res_size = 0;
- char buffer[OUTPUT_BUFFER_SIZE];
- #if RUN_TEST_LOOP
- for(;;)
- #endif
- {
- tcomp_manager_handle_t *manager = tcomp_manager_create();
- tcomp_result_t *result = tcomp_result_create();
- isBigEndian = ((*(int8_t *)&wordForEndianess) != 0x21);
- /* Add SIP dictionary. */
- tcomp_manager_addSipSdpDictionary(manager);
- /* Add Presence dictionary. */
- tcomp_manager_addPresenceDictionary(manager);
- /* Set decompression size. */
- tcomp_manager_setDecompression_Memory_Size(manager, DMS);
- /* Set state memory size. */
- tcomp_manager_setState_Memory_Size(manager, SMS);
- /* Set Cycles Per Bit */
- tcomp_manager_setCycles_Per_Bit(manager, CPB);
- #if RUN_TEST_ALL
- start = 0, end = sizeof(tests)/sizeof(tests[0]);
- #else
- start = RUN_TEST_NO, end = RUN_TEST_NO + 1;
- #endif
- for(i = start; i<end; i++) {
- printf("=== Testing %s ===\n\n", tests[i].section_name);
- if(tests[i].stream) {
- tcomp_result_setOutputTCPBuffer(result, buffer, OUTPUT_BUFFER_SIZE, STREAM_ID);
- }
- else {
- tcomp_result_setOutputUDPBuffer(result, buffer, OUTPUT_BUFFER_SIZE);
- }
- /* Performs decompression */
- res_size = tcomp_manager_decompress(manager, tests[i].bytecode, tests[i].bytecode_size, result);
- if(result->isNack) {
- printf("\n==WE GOT A NACK\n\n");
- //sendto(tcomp_buffer_getBuffer(result->nack_info), tcomp_buffer_getSize(result->nack_info));
- }
- else {
- tcomp_result_setCompartmentId(result, tests[i].comp_id, strlen(tests[i].comp_id));
- tcomp_manager_provideCompartmentId(manager, result);
- }
- /* Checks result */
- checkResult(&tests[i], result, buffer, sizeof(buffer));
- /* Get sub-sequent stream messages */
- if(tests[i].stream && (res_size || result->isNack)) {
- uint64_t consumed_cycles = result->consumed_cycles; // save "consumed_cycles" (shared by all sub-sequent messages)
- for(;;) {
- res_size = tcomp_manager_getNextStreamMessage(manager, result);
- if(!res_size && !result->isNack) {
- break;
- }
- else if(res_size) {
- tcomp_result_setCompartmentId(result, tests[i].comp_id, strlen(tests[i].comp_id));
- tcomp_manager_provideCompartmentId(manager, result);
- }
- else {
- printf("\n==WE GOT A NACK\n\n");
- //sendto(tcomp_buffer_getBuffer(result->nack_info), tcomp_buffer_getSize(result->nack_info));
- }
- result->consumed_cycles = consumed_cycles; // restore cycles just for checking. Had been cleared by "tcomp_manager_getNextStreamMessage()"
- checkResult(&tests[i], result, buffer, sizeof(buffer));
- }
- }
- }
- /* Free previously allocated resources. */
- TSK_OBJECT_SAFE_FREE(result);
- TSK_OBJECT_SAFE_FREE(manager);
- }/* LOOP */
- return 0;
- }
- #endif /* TEST_TINYSIGCOMP_TORTURES_H */
|