dirvote: Fix memleak when computing consensus
[tor.git] / src / test / test_proto_haproxy.c
blobdade0d77caf9a4e72f20c4f69c29d54c87cc86de
1 /* Copyright (c) 2019-2021, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
4 /**
5 * \file test_proto_haproxy.c
6 * \brief Tests for our HAProxy protocol parser code
7 */
9 #define PROTO_HAPROXY_PRIVATE
11 #include "test/test.h"
12 #include "core/proto/proto_haproxy.h"
13 #include "test/log_test_helpers.h"
15 static void
16 test_format_proxy_header_line(void *arg)
18 tor_addr_t addr;
19 tor_addr_port_t *addr_port = NULL;
20 char *output = NULL;
22 (void) arg;
24 /* IPv4 address. */
25 tor_addr_parse(&addr, "192.168.1.2");
26 addr_port = tor_addr_port_new(&addr, 8000);
27 output = haproxy_format_proxy_header_line(addr_port);
29 tt_str_op(output, OP_EQ, "PROXY TCP4 0.0.0.0 192.168.1.2 0 8000\r\n");
31 tor_free(addr_port);
32 tor_free(output);
34 /* IPv6 address. */
35 tor_addr_parse(&addr, "123:45:6789::5005:11");
36 addr_port = tor_addr_port_new(&addr, 8000);
37 output = haproxy_format_proxy_header_line(addr_port);
39 tt_str_op(output, OP_EQ, "PROXY TCP6 :: 123:45:6789::5005:11 0 8000\r\n");
41 tor_free(addr_port);
42 tor_free(output);
44 /* UNIX socket address. */
45 memset(&addr, 0, sizeof(addr));
46 addr.family = AF_UNIX;
47 addr_port = tor_addr_port_new(&addr, 8000);
48 output = haproxy_format_proxy_header_line(addr_port);
50 /* If it's not an IPv4 or IPv6 address, haproxy_format_proxy_header_line
51 * must return NULL. */
52 tt_ptr_op(output, OP_EQ, NULL);
54 tor_free(addr_port);
55 tor_free(output);
57 done:
58 tor_free(addr_port);
59 tor_free(output);
62 struct testcase_t proto_haproxy_tests[] = {
63 { "format_proxy_header_line", test_format_proxy_header_line, 0, NULL, NULL },
65 END_OF_TESTCASES