mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Prop#329 Tests: Add tests for conflux cells.
Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
@@ -147,6 +147,7 @@ src_test_test_SOURCES += \
|
||||
src/test/test_circuitstats.c \
|
||||
src/test/test_compat_libevent.c \
|
||||
src/test/test_config.c \
|
||||
src/test/test_conflux_cell.c \
|
||||
src/test/test_confmgr.c \
|
||||
src/test/test_confparse.c \
|
||||
src/test/test_connection.c \
|
||||
|
||||
@@ -778,6 +778,7 @@ struct testgroup_t testgroups[] = {
|
||||
{ "config/", config_tests },
|
||||
{ "config/mgr/", confmgr_tests },
|
||||
{ "config/parse/", confparse_tests },
|
||||
{ "conflux/cell/", conflux_cell_tests },
|
||||
{ "connection/", connection_tests },
|
||||
{ "conscache/", conscache_tests },
|
||||
{ "consdiff/", consdiff_tests },
|
||||
|
||||
@@ -107,6 +107,7 @@ extern struct testcase_t circuitstats_tests[];
|
||||
extern struct testcase_t circuituse_tests[];
|
||||
extern struct testcase_t compat_libevent_tests[];
|
||||
extern struct testcase_t config_tests[];
|
||||
extern struct testcase_t conflux_cell_tests[];
|
||||
extern struct testcase_t confmgr_tests[];
|
||||
extern struct testcase_t confparse_tests[];
|
||||
extern struct testcase_t connection_tests[];
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
/* Copyright (c) 2023, The Tor Project, Inc. */
|
||||
/* See LICENSE for licensing information */
|
||||
|
||||
/**
|
||||
* \file test_conflux_cell.
|
||||
* \brief Test conflux cells.
|
||||
*/
|
||||
|
||||
#include "test/test.h"
|
||||
#include "test/test_helpers.h"
|
||||
#include "test/log_test_helpers.h"
|
||||
|
||||
#include "core/or/conflux_cell.h"
|
||||
#include "core/or/conflux_st.h"
|
||||
#include "trunnel/conflux.h"
|
||||
|
||||
#include "lib/crypt_ops/crypto_rand.h"
|
||||
|
||||
static void
|
||||
test_link(void *arg)
|
||||
{
|
||||
cell_t cell;
|
||||
conflux_cell_link_t link;
|
||||
conflux_cell_link_t *decoded_link = NULL;
|
||||
|
||||
(void) arg;
|
||||
|
||||
memset(&link, 0, sizeof(link));
|
||||
|
||||
link.desired_ux = CONFLUX_UX_HIGH_THROUGHPUT;
|
||||
link.last_seqno_recv = 0;
|
||||
link.last_seqno_sent = 0;
|
||||
link.version = 0x01;
|
||||
|
||||
crypto_rand((char *) link.nonce, sizeof(link.nonce));
|
||||
|
||||
ssize_t cell_len = build_link_cell(&link, cell.payload+RELAY_HEADER_SIZE);
|
||||
tt_int_op(cell_len, OP_GT, 0);
|
||||
|
||||
decoded_link = conflux_cell_parse_link(&cell, cell_len);
|
||||
tt_assert(decoded_link);
|
||||
|
||||
uint8_t buf[RELAY_PAYLOAD_SIZE];
|
||||
ssize_t enc_cell_len = build_link_cell(decoded_link, buf);
|
||||
tt_int_op(cell_len, OP_EQ, enc_cell_len);
|
||||
|
||||
/* Validate the original link object with the decoded one. */
|
||||
tt_mem_op(&link, OP_EQ, decoded_link, sizeof(link));
|
||||
tor_free(decoded_link);
|
||||
|
||||
done:
|
||||
tor_free(decoded_link);
|
||||
}
|
||||
|
||||
struct testcase_t conflux_cell_tests[] = {
|
||||
{ "link", test_link, TT_FORK, NULL, NULL },
|
||||
|
||||
END_OF_TESTCASES
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user