summaryrefslogtreecommitdiffstats
path: root/tests/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/main.c')
-rw-r--r--tests/main.c357
1 files changed, 357 insertions, 0 deletions
diff --git a/tests/main.c b/tests/main.c
new file mode 100644
index 0000000..d6cd17c
--- /dev/null
+++ b/tests/main.c
@@ -0,0 +1,357 @@
+/*
+ * ngtcp2
+ *
+ * Copyright (c) 2016 ngtcp2 contributors
+ * Copyright (c) 2012 nghttp2 contributors
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif /* HAVE_CONFIG_H */
+
+#include <stdio.h>
+#include <string.h>
+#include <CUnit/Basic.h>
+/* include test cases' include files here */
+#include "ngtcp2_pkt_test.h"
+#include "ngtcp2_range_test.h"
+#include "ngtcp2_rob_test.h"
+#include "ngtcp2_rtb_test.h"
+#include "ngtcp2_acktr_test.h"
+#include "ngtcp2_crypto_test.h"
+#include "ngtcp2_idtr_test.h"
+#include "ngtcp2_conn_test.h"
+#include "ngtcp2_ringbuf_test.h"
+#include "ngtcp2_conv_test.h"
+#include "ngtcp2_ksl_test.h"
+#include "ngtcp2_map_test.h"
+#include "ngtcp2_gaptr_test.h"
+#include "ngtcp2_vec_test.h"
+#include "ngtcp2_strm_test.h"
+#include "ngtcp2_pv_test.h"
+#include "ngtcp2_pmtud_test.h"
+#include "ngtcp2_str_test.h"
+
+static int init_suite1(void) { return 0; }
+
+static int clean_suite1(void) { return 0; }
+
+int main(void) {
+ CU_pSuite pSuite = NULL;
+ unsigned int num_tests_failed;
+
+ /* initialize the CUnit test registry */
+ if (CUE_SUCCESS != CU_initialize_registry())
+ return (int)CU_get_error();
+
+ /* add a suite to the registry */
+ pSuite = CU_add_suite("libngtcp2_TestSuite", init_suite1, clean_suite1);
+ if (NULL == pSuite) {
+ CU_cleanup_registry();
+ return (int)CU_get_error();
+ }
+
+ init_static_path();
+
+ /* add the tests to the suite */
+ if (!CU_add_test(pSuite, "pkt_decode_version_cid",
+ test_ngtcp2_pkt_decode_version_cid) ||
+ !CU_add_test(pSuite, "pkt_decode_hd_long",
+ test_ngtcp2_pkt_decode_hd_long) ||
+ !CU_add_test(pSuite, "pkt_decode_hd_short",
+ test_ngtcp2_pkt_decode_hd_short) ||
+ !CU_add_test(pSuite, "pkt_decode_stream_frame",
+ test_ngtcp2_pkt_decode_stream_frame) ||
+ !CU_add_test(pSuite, "pkt_decode_ack_frame",
+ test_ngtcp2_pkt_decode_ack_frame) ||
+ !CU_add_test(pSuite, "pkt_decode_padding_frame",
+ test_ngtcp2_pkt_decode_padding_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_stream_frame",
+ test_ngtcp2_pkt_encode_stream_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_ack_frame",
+ test_ngtcp2_pkt_encode_ack_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_ack_ecn_frame",
+ test_ngtcp2_pkt_encode_ack_ecn_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_reset_stream_frame",
+ test_ngtcp2_pkt_encode_reset_stream_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_connection_close_frame",
+ test_ngtcp2_pkt_encode_connection_close_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_connection_close_app_frame",
+ test_ngtcp2_pkt_encode_connection_close_app_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_max_data_frame",
+ test_ngtcp2_pkt_encode_max_data_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_max_stream_data_frame",
+ test_ngtcp2_pkt_encode_max_stream_data_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_max_streams_frame",
+ test_ngtcp2_pkt_encode_max_streams_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_ping_frame",
+ test_ngtcp2_pkt_encode_ping_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_data_blocked_frame",
+ test_ngtcp2_pkt_encode_data_blocked_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_stream_data_blocked_frame",
+ test_ngtcp2_pkt_encode_stream_data_blocked_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_streams_blocked_frame",
+ test_ngtcp2_pkt_encode_streams_blocked_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_new_connection_id_frame",
+ test_ngtcp2_pkt_encode_new_connection_id_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_stop_sending_frame",
+ test_ngtcp2_pkt_encode_stop_sending_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_path_challenge_frame",
+ test_ngtcp2_pkt_encode_path_challenge_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_path_response_frame",
+ test_ngtcp2_pkt_encode_path_response_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_crypto_frame",
+ test_ngtcp2_pkt_encode_crypto_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_new_token_frame",
+ test_ngtcp2_pkt_encode_new_token_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_retire_connection_id",
+ test_ngtcp2_pkt_encode_retire_connection_id_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_handshake_done",
+ test_ngtcp2_pkt_encode_handshake_done_frame) ||
+ !CU_add_test(pSuite, "pkt_encode_datagram_frame",
+ test_ngtcp2_pkt_encode_datagram_frame) ||
+ !CU_add_test(pSuite, "pkt_adjust_pkt_num",
+ test_ngtcp2_pkt_adjust_pkt_num) ||
+ !CU_add_test(pSuite, "pkt_validate_ack", test_ngtcp2_pkt_validate_ack) ||
+ !CU_add_test(pSuite, "pkt_write_stateless_reset",
+ test_ngtcp2_pkt_write_stateless_reset) ||
+ !CU_add_test(pSuite, "pkt_write_retry", test_ngtcp2_pkt_write_retry) ||
+ !CU_add_test(pSuite, "pkt_write_version_negotiation",
+ test_ngtcp2_pkt_write_version_negotiation) ||
+ !CU_add_test(pSuite, "pkt_stream_max_datalen",
+ test_ngtcp2_pkt_stream_max_datalen) ||
+ !CU_add_test(pSuite, "get_varint", test_ngtcp2_get_varint) ||
+ !CU_add_test(pSuite, "get_uvarintlen", test_ngtcp2_get_uvarintlen) ||
+ !CU_add_test(pSuite, "put_uvarintlen", test_ngtcp2_put_uvarintlen) ||
+ !CU_add_test(pSuite, "get_uint64", test_ngtcp2_get_uint64) ||
+ !CU_add_test(pSuite, "get_uint48", test_ngtcp2_get_uint48) ||
+ !CU_add_test(pSuite, "get_uint32", test_ngtcp2_get_uint32) ||
+ !CU_add_test(pSuite, "get_uint24", test_ngtcp2_get_uint24) ||
+ !CU_add_test(pSuite, "get_uint16", test_ngtcp2_get_uint16) ||
+ !CU_add_test(pSuite, "get_uint16be", test_ngtcp2_get_uint16be) ||
+ !CU_add_test(pSuite, "nth_server_bidi_id",
+ test_ngtcp2_nth_server_bidi_id) ||
+ !CU_add_test(pSuite, "nth_server_uni_id",
+ test_ngtcp2_nth_server_uni_id) ||
+ !CU_add_test(pSuite, "nth_client_bidi_id",
+ test_ngtcp2_nth_client_bidi_id) ||
+ !CU_add_test(pSuite, "nth_client_uni_id",
+ test_ngtcp2_nth_client_uni_id) ||
+ !CU_add_test(pSuite, "range_intersect", test_ngtcp2_range_intersect) ||
+ !CU_add_test(pSuite, "range_cut", test_ngtcp2_range_cut) ||
+ !CU_add_test(pSuite, "range_not_after", test_ngtcp2_range_not_after) ||
+ !CU_add_test(pSuite, "ksl_insert", test_ngtcp2_ksl_insert) ||
+ !CU_add_test(pSuite, "ksl_clear", test_ngtcp2_ksl_clear) ||
+ !CU_add_test(pSuite, "ksl_range", test_ngtcp2_ksl_range) ||
+ !CU_add_test(pSuite, "ksl_update_key_range",
+ test_ngtcp2_ksl_update_key_range) ||
+ !CU_add_test(pSuite, "ksl_dup", test_ngtcp2_ksl_dup) ||
+ !CU_add_test(pSuite, "ksl_remove_hint", test_ngtcp2_ksl_remove_hint) ||
+ !CU_add_test(pSuite, "rob_push", test_ngtcp2_rob_push) ||
+ !CU_add_test(pSuite, "rob_push_random", test_ngtcp2_rob_push_random) ||
+ !CU_add_test(pSuite, "rob_data_at", test_ngtcp2_rob_data_at) ||
+ !CU_add_test(pSuite, "rob_remove_prefix",
+ test_ngtcp2_rob_remove_prefix) ||
+ !CU_add_test(pSuite, "acktr_add", test_ngtcp2_acktr_add) ||
+ !CU_add_test(pSuite, "acktr_eviction", test_ngtcp2_acktr_eviction) ||
+ !CU_add_test(pSuite, "acktr_forget", test_ngtcp2_acktr_forget) ||
+ !CU_add_test(pSuite, "acktr_recv_ack", test_ngtcp2_acktr_recv_ack) ||
+ !CU_add_test(pSuite, "encode_transport_params",
+ test_ngtcp2_encode_transport_params) ||
+ !CU_add_test(pSuite, "decode_transport_params_new",
+ test_ngtcp2_decode_transport_params_new) ||
+ !CU_add_test(pSuite, "rtb_add", test_ngtcp2_rtb_add) ||
+ !CU_add_test(pSuite, "rtb_recv_ack", test_ngtcp2_rtb_recv_ack) ||
+ !CU_add_test(pSuite, "rtb_lost_pkt_ts", test_ngtcp2_rtb_lost_pkt_ts) ||
+ !CU_add_test(pSuite, "rtb_remove_expired_lost_pkt",
+ test_ngtcp2_rtb_remove_expired_lost_pkt) ||
+ !CU_add_test(pSuite, "rtb_remove_excessive_lost_pkt",
+ test_ngtcp2_rtb_remove_excessive_lost_pkt) ||
+ !CU_add_test(pSuite, "idtr_open", test_ngtcp2_idtr_open) ||
+ !CU_add_test(pSuite, "ringbuf_push_front",
+ test_ngtcp2_ringbuf_push_front) ||
+ !CU_add_test(pSuite, "ringbuf_pop_front",
+ test_ngtcp2_ringbuf_pop_front) ||
+ !CU_add_test(pSuite, "conn_stream_open_close",
+ test_ngtcp2_conn_stream_open_close) ||
+ !CU_add_test(pSuite, "conn_stream_rx_flow_control",
+ test_ngtcp2_conn_stream_rx_flow_control) ||
+ !CU_add_test(pSuite, "conn_stream_rx_flow_control_error",
+ test_ngtcp2_conn_stream_rx_flow_control_error) ||
+ !CU_add_test(pSuite, "conn_stream_tx_flow_control",
+ test_ngtcp2_conn_stream_tx_flow_control) ||
+ !CU_add_test(pSuite, "conn_rx_flow_control",
+ test_ngtcp2_conn_rx_flow_control) ||
+ !CU_add_test(pSuite, "conn_rx_flow_control_error",
+ test_ngtcp2_conn_rx_flow_control_error) ||
+ !CU_add_test(pSuite, "conn_tx_flow_control",
+ test_ngtcp2_conn_tx_flow_control) ||
+ !CU_add_test(pSuite, "conn_shutdown_stream_write",
+ test_ngtcp2_conn_shutdown_stream_write) ||
+ !CU_add_test(pSuite, "conn_recv_reset_stream",
+ test_ngtcp2_conn_recv_reset_stream) ||
+ !CU_add_test(pSuite, "conn_recv_stop_sending",
+ test_ngtcp2_conn_recv_stop_sending) ||
+ !CU_add_test(pSuite, "conn_recv_conn_id_omitted",
+ test_ngtcp2_conn_recv_conn_id_omitted) ||
+ !CU_add_test(pSuite, "conn_short_pkt_type",
+ test_ngtcp2_conn_short_pkt_type) ||
+ !CU_add_test(pSuite, "conn_recv_stateless_reset",
+ test_ngtcp2_conn_recv_stateless_reset) ||
+ !CU_add_test(pSuite, "conn_recv_retry", test_ngtcp2_conn_recv_retry) ||
+ !CU_add_test(pSuite, "conn_recv_delayed_handshake_pkt",
+ test_ngtcp2_conn_recv_delayed_handshake_pkt) ||
+ !CU_add_test(pSuite, "conn_recv_max_streams",
+ test_ngtcp2_conn_recv_max_streams) ||
+ !CU_add_test(pSuite, "conn_handshake", test_ngtcp2_conn_handshake) ||
+ !CU_add_test(pSuite, "conn_handshake_error",
+ test_ngtcp2_conn_handshake_error) ||
+ !CU_add_test(pSuite, "conn_retransmit_protected",
+ test_ngtcp2_conn_retransmit_protected) ||
+ !CU_add_test(pSuite, "conn_send_max_stream_data",
+ test_ngtcp2_conn_send_max_stream_data) ||
+ !CU_add_test(pSuite, "conn_recv_stream_data",
+ test_ngtcp2_conn_recv_stream_data) ||
+ !CU_add_test(pSuite, "conn_recv_ping", test_ngtcp2_conn_recv_ping) ||
+ !CU_add_test(pSuite, "conn_recv_max_stream_data",
+ test_ngtcp2_conn_recv_max_stream_data) ||
+ !CU_add_test(pSuite, "conn_send_early_data",
+ test_ngtcp2_conn_send_early_data) ||
+ !CU_add_test(pSuite, "conn_recv_early_data",
+ test_ngtcp2_conn_recv_early_data) ||
+ !CU_add_test(pSuite, "conn_recv_compound_pkt",
+ test_ngtcp2_conn_recv_compound_pkt) ||
+ !CU_add_test(pSuite, "conn_pkt_payloadlen",
+ test_ngtcp2_conn_pkt_payloadlen) ||
+ !CU_add_test(pSuite, "conn_writev_stream",
+ test_ngtcp2_conn_writev_stream) ||
+ !CU_add_test(pSuite, "conn_writev_datagram",
+ test_ngtcp2_conn_writev_datagram) ||
+ !CU_add_test(pSuite, "conn_recv_datagram",
+ test_ngtcp2_conn_recv_datagram) ||
+ !CU_add_test(pSuite, "conn_recv_new_connection_id",
+ test_ngtcp2_conn_recv_new_connection_id) ||
+ !CU_add_test(pSuite, "conn_recv_retire_connection_id",
+ test_ngtcp2_conn_recv_retire_connection_id) ||
+ !CU_add_test(pSuite, "conn_server_path_validation",
+ test_ngtcp2_conn_server_path_validation) ||
+ !CU_add_test(pSuite, "conn_client_connection_migration",
+ test_ngtcp2_conn_client_connection_migration) ||
+ !CU_add_test(pSuite, "conn_recv_path_challenge",
+ test_ngtcp2_conn_recv_path_challenge) ||
+ !CU_add_test(pSuite, "conn_key_update", test_ngtcp2_conn_key_update) ||
+ !CU_add_test(pSuite, "conn_crypto_buffer_exceeded",
+ test_ngtcp2_conn_crypto_buffer_exceeded) ||
+ !CU_add_test(pSuite, "conn_handshake_probe",
+ test_ngtcp2_conn_handshake_probe) ||
+ !CU_add_test(pSuite, "conn_handshake_loss",
+ test_ngtcp2_conn_handshake_loss) ||
+ !CU_add_test(pSuite, "conn_recv_client_initial_retry",
+ test_ngtcp2_conn_recv_client_initial_retry) ||
+ !CU_add_test(pSuite, "conn_recv_client_initial_token",
+ test_ngtcp2_conn_recv_client_initial_token) ||
+ !CU_add_test(pSuite, "conn_get_active_dcid",
+ test_ngtcp2_conn_get_active_dcid) ||
+ !CU_add_test(pSuite, "conn_recv_version_negotiation",
+ test_ngtcp2_conn_recv_version_negotiation) ||
+ !CU_add_test(pSuite, "conn_send_initial_token",
+ test_ngtcp2_conn_send_initial_token) ||
+ !CU_add_test(pSuite, "conn_set_remote_transport_params",
+ test_ngtcp2_conn_set_remote_transport_params) ||
+ !CU_add_test(pSuite, "conn_write_connection_close",
+ test_ngtcp2_conn_write_connection_close) ||
+ !CU_add_test(pSuite, "conn_write_application_close",
+ test_ngtcp2_conn_write_application_close) ||
+ !CU_add_test(pSuite, "conn_rtb_reclaim_on_pto",
+ test_ngtcp2_conn_rtb_reclaim_on_pto) ||
+ !CU_add_test(pSuite, "conn_rtb_reclaim_on_pto_datagram",
+ test_ngtcp2_conn_rtb_reclaim_on_pto_datagram) ||
+ !CU_add_test(pSuite, "conn_validate_ecn",
+ test_ngtcp2_conn_validate_ecn) ||
+ !CU_add_test(pSuite, "conn_path_validation",
+ test_ngtcp2_conn_path_validation) ||
+ !CU_add_test(pSuite, "conn_early_data_sync_stream_data_limit",
+ test_ngtcp2_conn_early_data_sync_stream_data_limit) ||
+ !CU_add_test(pSuite, "conn_early_data_rejected",
+ test_ngtcp2_conn_early_data_rejected) ||
+ !CU_add_test(pSuite, "conn_keep_alive", test_ngtcp2_conn_keep_alive) ||
+ !CU_add_test(pSuite, "conn_retire_stale_bound_dcid",
+ test_ngtcp2_conn_retire_stale_bound_dcid) ||
+ !CU_add_test(pSuite, "conn_get_scid", test_ngtcp2_conn_get_scid) ||
+ !CU_add_test(pSuite, "conn_stream_close",
+ test_ngtcp2_conn_stream_close) ||
+ !CU_add_test(pSuite, "conn_buffer_pkt", test_ngtcp2_conn_buffer_pkt) ||
+ !CU_add_test(pSuite, "conn_handshake_timeout",
+ test_ngtcp2_conn_handshake_timeout) ||
+ !CU_add_test(pSuite, "conn_get_connection_close_error",
+ test_ngtcp2_conn_get_connection_close_error) ||
+ !CU_add_test(pSuite, "conn_version_negotiation",
+ test_ngtcp2_conn_version_negotiation) ||
+ !CU_add_test(pSuite, "conn_server_negotiate_version",
+ test_ngtcp2_conn_server_negotiate_version) ||
+ !CU_add_test(pSuite, "conn_pmtud_loss", test_ngtcp2_conn_pmtud_loss) ||
+ !CU_add_test(pSuite, "conn_amplification",
+ test_ngtcp2_conn_amplification) ||
+ !CU_add_test(pSuite, "conn_new_failmalloc",
+ test_ngtcp2_conn_new_failmalloc) ||
+ !CU_add_test(pSuite, "accept", test_ngtcp2_accept) ||
+ !CU_add_test(pSuite, "select_version", test_ngtcp2_select_version) ||
+ !CU_add_test(pSuite, "pkt_write_connection_close",
+ test_ngtcp2_pkt_write_connection_close) ||
+ !CU_add_test(pSuite, "map", test_ngtcp2_map) ||
+ !CU_add_test(pSuite, "map_functional", test_ngtcp2_map_functional) ||
+ !CU_add_test(pSuite, "map_each_free", test_ngtcp2_map_each_free) ||
+ !CU_add_test(pSuite, "map_clear", test_ngtcp2_map_clear) ||
+ !CU_add_test(pSuite, "gaptr_push", test_ngtcp2_gaptr_push) ||
+ !CU_add_test(pSuite, "gaptr_is_pushed", test_ngtcp2_gaptr_is_pushed) ||
+ !CU_add_test(pSuite, "gaptr_drop_first_gap",
+ test_ngtcp2_gaptr_drop_first_gap) ||
+ !CU_add_test(pSuite, "vec_split", test_ngtcp2_vec_split) ||
+ !CU_add_test(pSuite, "vec_merge", test_ngtcp2_vec_merge) ||
+ !CU_add_test(pSuite, "vec_len_varint", test_ngtcp2_vec_len_varint) ||
+ !CU_add_test(pSuite, "strm_streamfrq_pop",
+ test_ngtcp2_strm_streamfrq_pop) ||
+ !CU_add_test(pSuite, "strm_streamfrq_unacked_offset",
+ test_ngtcp2_strm_streamfrq_unacked_offset) ||
+ !CU_add_test(pSuite, "strm_streamfrq_unacked_pop",
+ test_ngtcp2_strm_streamfrq_unacked_pop) ||
+ !CU_add_test(pSuite, "pv_add_entry", test_ngtcp2_pv_add_entry) ||
+ !CU_add_test(pSuite, "pv_validate", test_ngtcp2_pv_validate) ||
+ !CU_add_test(pSuite, "pmtud_probe", test_ngtcp2_pmtud_probe) ||
+ !CU_add_test(pSuite, "encode_ipv4", test_ngtcp2_encode_ipv4) ||
+ !CU_add_test(pSuite, "encode_ipv6", test_ngtcp2_encode_ipv6) ||
+ !CU_add_test(pSuite, "get_bytes", test_ngtcp2_get_bytes)) {
+ CU_cleanup_registry();
+ return (int)CU_get_error();
+ }
+
+ /* Run all tests using the CUnit Basic interface */
+ CU_basic_set_mode(CU_BRM_VERBOSE);
+ CU_basic_run_tests();
+ num_tests_failed = CU_get_number_of_tests_failed();
+ CU_cleanup_registry();
+ if (CU_get_error() == CUE_SUCCESS) {
+ return (int)num_tests_failed;
+ } else {
+ printf("CUnit Error: %s\n", CU_get_error_msg());
+ return (int)CU_get_error();
+ }
+}