2011-07-13 19:06:14 +02:00
|
|
|
/* Copyright (c) 2001-2004, Roger Dingledine.
|
|
|
|
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
|
2019-01-16 18:33:22 +01:00
|
|
|
* Copyright (c) 2007-2019, The Tor Project, Inc. */
|
2011-07-13 19:06:14 +02:00
|
|
|
/* See LICENSE for licensing information */
|
|
|
|
|
|
|
|
#include "orconfig.h"
|
|
|
|
#define PT_PRIVATE
|
2013-07-29 15:59:59 +02:00
|
|
|
#define UTIL_PRIVATE
|
2013-08-05 19:54:54 +02:00
|
|
|
#define STATEFILE_PRIVATE
|
2019-03-25 17:11:59 +01:00
|
|
|
#define CONTROL_EVENTS_PRIVATE
|
2018-11-23 05:56:41 +01:00
|
|
|
#define PROCESS_PRIVATE
|
2018-07-05 22:34:59 +02:00
|
|
|
#include "core/or/or.h"
|
|
|
|
#include "app/config/config.h"
|
|
|
|
#include "app/config/confparse.h"
|
|
|
|
#include "feature/control/control.h"
|
2019-03-25 17:11:59 +01:00
|
|
|
#include "feature/control/control_events.h"
|
2018-07-05 22:34:59 +02:00
|
|
|
#include "feature/client/transports.h"
|
|
|
|
#include "core/or/circuitbuild.h"
|
|
|
|
#include "app/config/statefile.h"
|
2018-06-20 15:35:05 +02:00
|
|
|
#include "test/test.h"
|
2018-07-01 17:32:11 +02:00
|
|
|
#include "lib/encoding/confline.h"
|
2018-07-10 19:36:45 +02:00
|
|
|
#include "lib/net/resolve.h"
|
2018-11-23 05:56:41 +01:00
|
|
|
#include "lib/process/process.h"
|
2011-07-13 19:06:14 +02:00
|
|
|
|
2018-07-05 22:34:59 +02:00
|
|
|
#include "app/config/or_state_st.h"
|
2018-07-01 20:51:53 +02:00
|
|
|
|
2019-01-16 21:54:35 +01:00
|
|
|
#include "test/log_test_helpers.h"
|
|
|
|
|
2011-07-13 19:06:14 +02:00
|
|
|
static void
|
|
|
|
reset_mp(managed_proxy_t *mp)
|
|
|
|
{
|
2011-10-07 15:44:58 +02:00
|
|
|
mp->conf_state = PT_PROTO_LAUNCHED;
|
2011-07-13 19:06:14 +02:00
|
|
|
SMARTLIST_FOREACH(mp->transports, transport_t *, t, transport_free(t));
|
|
|
|
smartlist_clear(mp->transports);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
Remove the legacy_test_helper and legacy_setup wrappers
These wrappers went into place when the default type for our unit
test functions changed from "void fn(void)" to "void fn(void *arg)".
To generate this patch, I did the same hokey-pokey as before with
replacing all operators used as macro arguments, then I ran a
coccinelle script, then I ran perl script to fix up everything that
used legacy_test_helper, then I manually removed the
legacy_test_helper functions, then I ran a final perl script to put
the operators back how they were.
==============================
#!/usr/bin/perl -w -i -p
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
--------------------
@@
identifier func =~ "test_.*$";
statement S, S2;
@@
static void func (
-void
+void *arg
)
{
... when != S2
+(void) arg;
S
...
}
--------------------
#!/usr/bin/perl -w -i -p
s/, *legacy_test_helper, *([^,]+), *\&legacy_setup, *([^\}]+) *}/, $2, $1, NULL, NULL }/g;
--------------------
#!/usr/bin/perl -w -i -p
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
--------------------
2014-09-16 15:30:22 +02:00
|
|
|
test_pt_parsing(void *arg)
|
2011-07-13 19:06:14 +02:00
|
|
|
{
|
|
|
|
char line[200];
|
2013-07-16 13:07:03 +02:00
|
|
|
transport_t *transport = NULL;
|
|
|
|
tor_addr_t test_addr;
|
2011-07-13 19:06:14 +02:00
|
|
|
|
2014-09-11 15:17:13 +02:00
|
|
|
managed_proxy_t *mp = tor_malloc_zero(sizeof(managed_proxy_t));
|
Remove the legacy_test_helper and legacy_setup wrappers
These wrappers went into place when the default type for our unit
test functions changed from "void fn(void)" to "void fn(void *arg)".
To generate this patch, I did the same hokey-pokey as before with
replacing all operators used as macro arguments, then I ran a
coccinelle script, then I ran perl script to fix up everything that
used legacy_test_helper, then I manually removed the
legacy_test_helper functions, then I ran a final perl script to put
the operators back how they were.
==============================
#!/usr/bin/perl -w -i -p
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
--------------------
@@
identifier func =~ "test_.*$";
statement S, S2;
@@
static void func (
-void
+void *arg
)
{
... when != S2
+(void) arg;
S
...
}
--------------------
#!/usr/bin/perl -w -i -p
s/, *legacy_test_helper, *([^,]+), *\&legacy_setup, *([^\}]+) *}/, $2, $1, NULL, NULL }/g;
--------------------
#!/usr/bin/perl -w -i -p
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
--------------------
2014-09-16 15:30:22 +02:00
|
|
|
(void)arg;
|
2011-07-13 19:06:14 +02:00
|
|
|
mp->conf_state = PT_PROTO_INFANT;
|
2012-01-18 21:53:30 +01:00
|
|
|
mp->transports = smartlist_new();
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
/* incomplete cmethod */
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"CMETHOD trebuchet",sizeof(line));
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_int_op(parse_cmethod_line(line, mp), OP_LT, 0);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
reset_mp(mp);
|
|
|
|
|
|
|
|
/* wrong proxy type */
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"CMETHOD trebuchet dog 127.0.0.1:1999",sizeof(line));
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_int_op(parse_cmethod_line(line, mp), OP_LT, 0);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
reset_mp(mp);
|
|
|
|
|
|
|
|
/* wrong addrport */
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"CMETHOD trebuchet socks4 abcd",sizeof(line));
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_int_op(parse_cmethod_line(line, mp), OP_LT, 0);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
reset_mp(mp);
|
|
|
|
|
|
|
|
/* correct line */
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"CMETHOD trebuchet socks5 127.0.0.1:1999",sizeof(line));
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_int_op(parse_cmethod_line(line, mp), OP_EQ, 0);
|
|
|
|
tt_int_op(smartlist_len(mp->transports), OP_EQ, 1);
|
2013-07-16 13:07:03 +02:00
|
|
|
transport = smartlist_get(mp->transports, 0);
|
|
|
|
/* test registered address of transport */
|
|
|
|
tor_addr_parse(&test_addr, "127.0.0.1");
|
Use coccinelle scripts to clean up our unit tests
This should get rid of most of the users of the old test_*
functions. Some are in macros and will need manual cleanup, though.
This patch is for 13119, and was automatically generated with these
scripts. The perl scripts are there because coccinelle hates
operators as macro arguments.
------------------------------
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
------------------------------
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_fail_msg
+TT_DIE
(
+(
a
+)
)
...>
}
@@
identifier func;
@@
func (...) {
<...
-test_fail()
+TT_DIE(("Assertion failed."))
...>
}
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_assert
+tt_assert
(a)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq
+tt_int_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_neq
+tt_int_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_streq
+tt_str_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_strneq
+tt_str_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq_ptr
+tt_ptr_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func() {
<...
-test_neq_ptr
+tt_ptr_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memeq
+tt_mem_op
(a,
+_X_EQ_,
b, len)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memneq
+tt_mem_op
(a,
+_X_NEQ_,
b, len)
...>
}
------------------------------
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
------------------------------
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
s/test_mem_op\(/tt_mem_op\(/g;
2014-09-16 03:18:21 +02:00
|
|
|
tt_assert(tor_addr_eq(&test_addr, &transport->addr));
|
2013-07-16 13:07:03 +02:00
|
|
|
/* test registered port of transport */
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_uint_op(transport->port, OP_EQ, 1999);
|
2013-07-16 13:07:03 +02:00
|
|
|
/* test registered SOCKS version of transport */
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_int_op(transport->socks_version, OP_EQ, PROXY_SOCKS5);
|
2013-07-16 13:07:03 +02:00
|
|
|
/* test registered name of transport */
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(transport->name,OP_EQ, "trebuchet");
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
reset_mp(mp);
|
|
|
|
|
|
|
|
/* incomplete smethod */
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"SMETHOD trebuchet",sizeof(line));
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_int_op(parse_smethod_line(line, mp), OP_LT, 0);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
reset_mp(mp);
|
|
|
|
|
|
|
|
/* wrong addr type */
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"SMETHOD trebuchet abcd",sizeof(line));
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_int_op(parse_smethod_line(line, mp), OP_LT, 0);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
reset_mp(mp);
|
|
|
|
|
|
|
|
/* cowwect */
|
2013-07-16 13:07:03 +02:00
|
|
|
strlcpy(line,"SMETHOD trebuchy 127.0.0.2:2999",sizeof(line));
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_int_op(parse_smethod_line(line, mp), OP_EQ, 0);
|
|
|
|
tt_int_op(smartlist_len(mp->transports), OP_EQ, 1);
|
2013-07-16 13:07:03 +02:00
|
|
|
transport = smartlist_get(mp->transports, 0);
|
|
|
|
/* test registered address of transport */
|
|
|
|
tor_addr_parse(&test_addr, "127.0.0.2");
|
Use coccinelle scripts to clean up our unit tests
This should get rid of most of the users of the old test_*
functions. Some are in macros and will need manual cleanup, though.
This patch is for 13119, and was automatically generated with these
scripts. The perl scripts are there because coccinelle hates
operators as macro arguments.
------------------------------
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
------------------------------
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_fail_msg
+TT_DIE
(
+(
a
+)
)
...>
}
@@
identifier func;
@@
func (...) {
<...
-test_fail()
+TT_DIE(("Assertion failed."))
...>
}
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_assert
+tt_assert
(a)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq
+tt_int_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_neq
+tt_int_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_streq
+tt_str_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_strneq
+tt_str_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq_ptr
+tt_ptr_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func() {
<...
-test_neq_ptr
+tt_ptr_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memeq
+tt_mem_op
(a,
+_X_EQ_,
b, len)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memneq
+tt_mem_op
(a,
+_X_NEQ_,
b, len)
...>
}
------------------------------
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
------------------------------
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
s/test_mem_op\(/tt_mem_op\(/g;
2014-09-16 03:18:21 +02:00
|
|
|
tt_assert(tor_addr_eq(&test_addr, &transport->addr));
|
2013-07-16 13:07:03 +02:00
|
|
|
/* test registered port of transport */
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_uint_op(transport->port, OP_EQ, 2999);
|
2013-07-16 13:07:03 +02:00
|
|
|
/* test registered name of transport */
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(transport->name,OP_EQ, "trebuchy");
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
reset_mp(mp);
|
|
|
|
|
2013-07-16 17:53:25 +02:00
|
|
|
/* Include some arguments. Good ones. */
|
2013-07-18 14:49:52 +02:00
|
|
|
strlcpy(line,"SMETHOD trebuchet 127.0.0.1:9999 "
|
|
|
|
"ARGS:counterweight=3,sling=snappy",
|
2013-07-16 17:53:25 +02:00
|
|
|
sizeof(line));
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_int_op(parse_smethod_line(line, mp), OP_EQ, 0);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_int_op(1, OP_EQ, smartlist_len(mp->transports));
|
2013-07-16 17:53:25 +02:00
|
|
|
{
|
2016-07-05 20:19:31 +02:00
|
|
|
const transport_t *transport_ = smartlist_get(mp->transports, 0);
|
|
|
|
tt_assert(transport_);
|
|
|
|
tt_str_op(transport_->name, OP_EQ, "trebuchet");
|
|
|
|
tt_int_op(transport_->port, OP_EQ, 9999);
|
|
|
|
tt_str_op(fmt_addr(&transport_->addr), OP_EQ, "127.0.0.1");
|
|
|
|
tt_str_op(transport_->extra_info_args, OP_EQ,
|
2013-07-16 17:53:25 +02:00
|
|
|
"counterweight=3,sling=snappy");
|
|
|
|
}
|
|
|
|
reset_mp(mp);
|
|
|
|
|
2011-07-13 19:06:14 +02:00
|
|
|
/* unsupported version */
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"VERSION 666",sizeof(line));
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_int_op(parse_version(line, mp), OP_LT, 0);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
/* incomplete VERSION */
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"VERSION ",sizeof(line));
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_int_op(parse_version(line, mp), OP_LT, 0);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
/* correct VERSION */
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"VERSION 1",sizeof(line));
|
2017-08-24 21:49:59 +02:00
|
|
|
tt_int_op(parse_version(line, mp), OP_EQ, 0);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
done:
|
2014-04-26 17:28:39 +02:00
|
|
|
reset_mp(mp);
|
|
|
|
smartlist_free(mp->transports);
|
2011-07-13 19:06:14 +02:00
|
|
|
tor_free(mp);
|
|
|
|
}
|
|
|
|
|
2013-07-15 23:32:08 +02:00
|
|
|
static void
|
|
|
|
test_pt_get_transport_options(void *arg)
|
|
|
|
{
|
|
|
|
char **execve_args;
|
|
|
|
smartlist_t *transport_list = smartlist_new();
|
|
|
|
managed_proxy_t *mp;
|
|
|
|
or_options_t *options = get_options_mutable();
|
|
|
|
char *opt_str = NULL;
|
|
|
|
config_line_t *cl = NULL;
|
|
|
|
(void)arg;
|
|
|
|
|
|
|
|
execve_args = tor_malloc(sizeof(char*)*2);
|
|
|
|
execve_args[0] = tor_strdup("cheeseshop");
|
|
|
|
execve_args[1] = NULL;
|
|
|
|
|
|
|
|
mp = managed_proxy_create(transport_list, execve_args, 1);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_ptr_op(mp, OP_NE, NULL);
|
2013-07-15 23:32:08 +02:00
|
|
|
opt_str = get_transport_options_for_server_proxy(mp);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_ptr_op(opt_str, OP_EQ, NULL);
|
2013-07-15 23:32:08 +02:00
|
|
|
|
2016-10-27 11:26:06 +02:00
|
|
|
smartlist_add_strdup(mp->transports_to_launch, "gruyere");
|
|
|
|
smartlist_add_strdup(mp->transports_to_launch, "roquefort");
|
|
|
|
smartlist_add_strdup(mp->transports_to_launch, "stnectaire");
|
2013-07-15 23:32:08 +02:00
|
|
|
|
|
|
|
tt_assert(options);
|
|
|
|
|
|
|
|
cl = tor_malloc_zero(sizeof(config_line_t));
|
|
|
|
cl->value = tor_strdup("gruyere melty=10 hardness=se;ven");
|
|
|
|
options->ServerTransportOptions = cl;
|
|
|
|
|
|
|
|
cl = tor_malloc_zero(sizeof(config_line_t));
|
|
|
|
cl->value = tor_strdup("stnectaire melty=4 hardness=three");
|
|
|
|
cl->next = options->ServerTransportOptions;
|
|
|
|
options->ServerTransportOptions = cl;
|
|
|
|
|
|
|
|
cl = tor_malloc_zero(sizeof(config_line_t));
|
|
|
|
cl->value = tor_strdup("pepperjack melty=12 hardness=five");
|
|
|
|
cl->next = options->ServerTransportOptions;
|
|
|
|
options->ServerTransportOptions = cl;
|
|
|
|
|
|
|
|
opt_str = get_transport_options_for_server_proxy(mp);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(opt_str, OP_EQ,
|
2013-07-15 23:32:08 +02:00
|
|
|
"gruyere:melty=10;gruyere:hardness=se\\;ven;"
|
|
|
|
"stnectaire:melty=4;stnectaire:hardness=three");
|
|
|
|
|
|
|
|
done:
|
|
|
|
tor_free(opt_str);
|
|
|
|
config_free_lines(cl);
|
|
|
|
managed_proxy_destroy(mp, 0);
|
|
|
|
smartlist_free(transport_list);
|
|
|
|
}
|
|
|
|
|
2011-07-13 19:06:14 +02:00
|
|
|
static void
|
Remove the legacy_test_helper and legacy_setup wrappers
These wrappers went into place when the default type for our unit
test functions changed from "void fn(void)" to "void fn(void *arg)".
To generate this patch, I did the same hokey-pokey as before with
replacing all operators used as macro arguments, then I ran a
coccinelle script, then I ran perl script to fix up everything that
used legacy_test_helper, then I manually removed the
legacy_test_helper functions, then I ran a final perl script to put
the operators back how they were.
==============================
#!/usr/bin/perl -w -i -p
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
--------------------
@@
identifier func =~ "test_.*$";
statement S, S2;
@@
static void func (
-void
+void *arg
)
{
... when != S2
+(void) arg;
S
...
}
--------------------
#!/usr/bin/perl -w -i -p
s/, *legacy_test_helper, *([^,]+), *\&legacy_setup, *([^\}]+) *}/, $2, $1, NULL, NULL }/g;
--------------------
#!/usr/bin/perl -w -i -p
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
--------------------
2014-09-16 15:30:22 +02:00
|
|
|
test_pt_protocol(void *arg)
|
2011-07-13 19:06:14 +02:00
|
|
|
{
|
|
|
|
char line[200];
|
|
|
|
|
2011-11-25 22:54:06 +01:00
|
|
|
managed_proxy_t *mp = tor_malloc_zero(sizeof(managed_proxy_t));
|
Remove the legacy_test_helper and legacy_setup wrappers
These wrappers went into place when the default type for our unit
test functions changed from "void fn(void)" to "void fn(void *arg)".
To generate this patch, I did the same hokey-pokey as before with
replacing all operators used as macro arguments, then I ran a
coccinelle script, then I ran perl script to fix up everything that
used legacy_test_helper, then I manually removed the
legacy_test_helper functions, then I ran a final perl script to put
the operators back how they were.
==============================
#!/usr/bin/perl -w -i -p
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
--------------------
@@
identifier func =~ "test_.*$";
statement S, S2;
@@
static void func (
-void
+void *arg
)
{
... when != S2
+(void) arg;
S
...
}
--------------------
#!/usr/bin/perl -w -i -p
s/, *legacy_test_helper, *([^,]+), *\&legacy_setup, *([^\}]+) *}/, $2, $1, NULL, NULL }/g;
--------------------
#!/usr/bin/perl -w -i -p
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
--------------------
2014-09-16 15:30:22 +02:00
|
|
|
(void)arg;
|
2011-10-07 15:44:58 +02:00
|
|
|
mp->conf_state = PT_PROTO_LAUNCHED;
|
2012-01-18 21:53:30 +01:00
|
|
|
mp->transports = smartlist_new();
|
2014-11-02 17:56:02 +01:00
|
|
|
mp->argv = tor_calloc(2, sizeof(char *));
|
2012-05-08 15:37:43 +02:00
|
|
|
mp->argv[0] = tor_strdup("<testcase>");
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
/* various wrong protocol runs: */
|
|
|
|
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"VERSION 1",sizeof(line));
|
2011-07-13 19:06:14 +02:00
|
|
|
handle_proxy_line(line, mp);
|
Use coccinelle scripts to clean up our unit tests
This should get rid of most of the users of the old test_*
functions. Some are in macros and will need manual cleanup, though.
This patch is for 13119, and was automatically generated with these
scripts. The perl scripts are there because coccinelle hates
operators as macro arguments.
------------------------------
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
------------------------------
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_fail_msg
+TT_DIE
(
+(
a
+)
)
...>
}
@@
identifier func;
@@
func (...) {
<...
-test_fail()
+TT_DIE(("Assertion failed."))
...>
}
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_assert
+tt_assert
(a)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq
+tt_int_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_neq
+tt_int_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_streq
+tt_str_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_strneq
+tt_str_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq_ptr
+tt_ptr_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func() {
<...
-test_neq_ptr
+tt_ptr_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memeq
+tt_mem_op
(a,
+_X_EQ_,
b, len)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memneq
+tt_mem_op
(a,
+_X_NEQ_,
b, len)
...>
}
------------------------------
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
------------------------------
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
s/test_mem_op\(/tt_mem_op\(/g;
2014-09-16 03:18:21 +02:00
|
|
|
tt_assert(mp->conf_state == PT_PROTO_ACCEPTING_METHODS);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"VERSION 1",sizeof(line));
|
2011-07-13 19:06:14 +02:00
|
|
|
handle_proxy_line(line, mp);
|
Use coccinelle scripts to clean up our unit tests
This should get rid of most of the users of the old test_*
functions. Some are in macros and will need manual cleanup, though.
This patch is for 13119, and was automatically generated with these
scripts. The perl scripts are there because coccinelle hates
operators as macro arguments.
------------------------------
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
------------------------------
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_fail_msg
+TT_DIE
(
+(
a
+)
)
...>
}
@@
identifier func;
@@
func (...) {
<...
-test_fail()
+TT_DIE(("Assertion failed."))
...>
}
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_assert
+tt_assert
(a)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq
+tt_int_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_neq
+tt_int_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_streq
+tt_str_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_strneq
+tt_str_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq_ptr
+tt_ptr_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func() {
<...
-test_neq_ptr
+tt_ptr_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memeq
+tt_mem_op
(a,
+_X_EQ_,
b, len)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memneq
+tt_mem_op
(a,
+_X_NEQ_,
b, len)
...>
}
------------------------------
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
------------------------------
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
s/test_mem_op\(/tt_mem_op\(/g;
2014-09-16 03:18:21 +02:00
|
|
|
tt_assert(mp->conf_state == PT_PROTO_BROKEN);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
reset_mp(mp);
|
|
|
|
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"CMETHOD trebuchet socks5 127.0.0.1:1999",sizeof(line));
|
2011-07-13 19:06:14 +02:00
|
|
|
handle_proxy_line(line, mp);
|
Use coccinelle scripts to clean up our unit tests
This should get rid of most of the users of the old test_*
functions. Some are in macros and will need manual cleanup, though.
This patch is for 13119, and was automatically generated with these
scripts. The perl scripts are there because coccinelle hates
operators as macro arguments.
------------------------------
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
------------------------------
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_fail_msg
+TT_DIE
(
+(
a
+)
)
...>
}
@@
identifier func;
@@
func (...) {
<...
-test_fail()
+TT_DIE(("Assertion failed."))
...>
}
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_assert
+tt_assert
(a)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq
+tt_int_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_neq
+tt_int_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_streq
+tt_str_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_strneq
+tt_str_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq_ptr
+tt_ptr_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func() {
<...
-test_neq_ptr
+tt_ptr_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memeq
+tt_mem_op
(a,
+_X_EQ_,
b, len)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memneq
+tt_mem_op
(a,
+_X_NEQ_,
b, len)
...>
}
------------------------------
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
------------------------------
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
s/test_mem_op\(/tt_mem_op\(/g;
2014-09-16 03:18:21 +02:00
|
|
|
tt_assert(mp->conf_state == PT_PROTO_BROKEN);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
reset_mp(mp);
|
|
|
|
|
|
|
|
/* correct protocol run: */
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"VERSION 1",sizeof(line));
|
2011-07-13 19:06:14 +02:00
|
|
|
handle_proxy_line(line, mp);
|
Use coccinelle scripts to clean up our unit tests
This should get rid of most of the users of the old test_*
functions. Some are in macros and will need manual cleanup, though.
This patch is for 13119, and was automatically generated with these
scripts. The perl scripts are there because coccinelle hates
operators as macro arguments.
------------------------------
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
------------------------------
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_fail_msg
+TT_DIE
(
+(
a
+)
)
...>
}
@@
identifier func;
@@
func (...) {
<...
-test_fail()
+TT_DIE(("Assertion failed."))
...>
}
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_assert
+tt_assert
(a)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq
+tt_int_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_neq
+tt_int_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_streq
+tt_str_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_strneq
+tt_str_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq_ptr
+tt_ptr_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func() {
<...
-test_neq_ptr
+tt_ptr_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memeq
+tt_mem_op
(a,
+_X_EQ_,
b, len)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memneq
+tt_mem_op
(a,
+_X_NEQ_,
b, len)
...>
}
------------------------------
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
------------------------------
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
s/test_mem_op\(/tt_mem_op\(/g;
2014-09-16 03:18:21 +02:00
|
|
|
tt_assert(mp->conf_state == PT_PROTO_ACCEPTING_METHODS);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"CMETHOD trebuchet socks5 127.0.0.1:1999",sizeof(line));
|
2011-07-13 19:06:14 +02:00
|
|
|
handle_proxy_line(line, mp);
|
Use coccinelle scripts to clean up our unit tests
This should get rid of most of the users of the old test_*
functions. Some are in macros and will need manual cleanup, though.
This patch is for 13119, and was automatically generated with these
scripts. The perl scripts are there because coccinelle hates
operators as macro arguments.
------------------------------
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
------------------------------
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_fail_msg
+TT_DIE
(
+(
a
+)
)
...>
}
@@
identifier func;
@@
func (...) {
<...
-test_fail()
+TT_DIE(("Assertion failed."))
...>
}
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_assert
+tt_assert
(a)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq
+tt_int_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_neq
+tt_int_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_streq
+tt_str_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_strneq
+tt_str_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq_ptr
+tt_ptr_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func() {
<...
-test_neq_ptr
+tt_ptr_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memeq
+tt_mem_op
(a,
+_X_EQ_,
b, len)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memneq
+tt_mem_op
(a,
+_X_NEQ_,
b, len)
...>
}
------------------------------
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
------------------------------
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
s/test_mem_op\(/tt_mem_op\(/g;
2014-09-16 03:18:21 +02:00
|
|
|
tt_assert(mp->conf_state == PT_PROTO_ACCEPTING_METHODS);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
2013-05-11 23:06:22 +02:00
|
|
|
strlcpy(line,"CMETHODS DONE",sizeof(line));
|
2011-07-13 19:06:14 +02:00
|
|
|
handle_proxy_line(line, mp);
|
Use coccinelle scripts to clean up our unit tests
This should get rid of most of the users of the old test_*
functions. Some are in macros and will need manual cleanup, though.
This patch is for 13119, and was automatically generated with these
scripts. The perl scripts are there because coccinelle hates
operators as macro arguments.
------------------------------
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
------------------------------
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_fail_msg
+TT_DIE
(
+(
a
+)
)
...>
}
@@
identifier func;
@@
func (...) {
<...
-test_fail()
+TT_DIE(("Assertion failed."))
...>
}
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_assert
+tt_assert
(a)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq
+tt_int_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_neq
+tt_int_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_streq
+tt_str_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_strneq
+tt_str_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq_ptr
+tt_ptr_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func() {
<...
-test_neq_ptr
+tt_ptr_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memeq
+tt_mem_op
(a,
+_X_EQ_,
b, len)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memneq
+tt_mem_op
(a,
+_X_NEQ_,
b, len)
...>
}
------------------------------
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
------------------------------
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
s/test_mem_op\(/tt_mem_op\(/g;
2014-09-16 03:18:21 +02:00
|
|
|
tt_assert(mp->conf_state == PT_PROTO_CONFIGURED);
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
done:
|
2014-04-26 17:28:39 +02:00
|
|
|
reset_mp(mp);
|
|
|
|
smartlist_free(mp->transports);
|
|
|
|
tor_free(mp->argv[0]);
|
|
|
|
tor_free(mp->argv);
|
2011-07-13 19:06:14 +02:00
|
|
|
tor_free(mp);
|
|
|
|
}
|
|
|
|
|
2013-07-16 17:53:36 +02:00
|
|
|
static void
|
|
|
|
test_pt_get_extrainfo_string(void *arg)
|
|
|
|
{
|
|
|
|
managed_proxy_t *mp1 = NULL, *mp2 = NULL;
|
|
|
|
char **argv1, **argv2;
|
|
|
|
smartlist_t *t1 = smartlist_new(), *t2 = smartlist_new();
|
|
|
|
int r;
|
|
|
|
char *s = NULL;
|
|
|
|
(void) arg;
|
|
|
|
|
|
|
|
argv1 = tor_malloc_zero(sizeof(char*)*3);
|
|
|
|
argv1[0] = tor_strdup("ewige");
|
|
|
|
argv1[1] = tor_strdup("Blumenkraft");
|
|
|
|
argv1[2] = NULL;
|
|
|
|
argv2 = tor_malloc_zero(sizeof(char*)*4);
|
|
|
|
argv2[0] = tor_strdup("und");
|
|
|
|
argv2[1] = tor_strdup("ewige");
|
|
|
|
argv2[2] = tor_strdup("Schlangenkraft");
|
|
|
|
argv2[3] = NULL;
|
|
|
|
|
|
|
|
mp1 = managed_proxy_create(t1, argv1, 1);
|
|
|
|
mp2 = managed_proxy_create(t2, argv2, 1);
|
|
|
|
|
|
|
|
r = parse_smethod_line("SMETHOD hagbard 127.0.0.1:5555", mp1);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_int_op(r, OP_EQ, 0);
|
2013-07-16 17:53:36 +02:00
|
|
|
r = parse_smethod_line("SMETHOD celine 127.0.0.1:1723 ARGS:card=no-enemy",
|
|
|
|
mp2);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_int_op(r, OP_EQ, 0);
|
2013-07-16 17:53:36 +02:00
|
|
|
|
|
|
|
/* Force these proxies to look "completed" or they won't generate output. */
|
|
|
|
mp1->conf_state = mp2->conf_state = PT_PROTO_COMPLETED;
|
|
|
|
|
|
|
|
s = pt_get_extra_info_descriptor_string();
|
|
|
|
tt_assert(s);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(s, OP_EQ,
|
2013-07-16 17:53:36 +02:00
|
|
|
"transport hagbard 127.0.0.1:5555\n"
|
|
|
|
"transport celine 127.0.0.1:1723 card=no-enemy\n");
|
|
|
|
|
|
|
|
done:
|
|
|
|
/* XXXX clean up better */
|
|
|
|
smartlist_free(t1);
|
|
|
|
smartlist_free(t2);
|
|
|
|
tor_free(s);
|
|
|
|
}
|
|
|
|
|
2018-11-23 05:56:41 +01:00
|
|
|
static int
|
|
|
|
process_read_stdout_replacement(process_t *process, buf_t *buffer)
|
2013-07-29 15:59:59 +02:00
|
|
|
{
|
2018-11-23 05:56:41 +01:00
|
|
|
(void)process;
|
2013-07-29 15:59:59 +02:00
|
|
|
static int times_called = 0;
|
2013-07-31 19:36:17 +02:00
|
|
|
|
2013-07-29 15:59:59 +02:00
|
|
|
/* Generate some dummy CMETHOD lines the first 5 times. The 6th
|
|
|
|
time, send 'CMETHODS DONE' to finish configuring the proxy. */
|
2018-11-23 22:50:55 +01:00
|
|
|
times_called++;
|
|
|
|
|
|
|
|
if (times_called <= 5) {
|
2018-11-23 05:56:41 +01:00
|
|
|
buf_add_printf(buffer, "SMETHOD mock%d 127.0.0.1:555%d\n",
|
2013-07-29 15:59:59 +02:00
|
|
|
times_called, times_called);
|
2018-11-23 22:50:55 +01:00
|
|
|
} else if (times_called <= 6) {
|
2018-11-23 05:56:41 +01:00
|
|
|
buf_add_string(buffer, "SMETHODS DONE\n");
|
2018-11-23 22:50:55 +01:00
|
|
|
} else if (times_called <= 7) {
|
2018-12-20 02:10:42 +01:00
|
|
|
buf_add_string(buffer, "LOG SEVERITY=error MESSAGE=\"Oh noes, something "
|
|
|
|
"bad happened. What do we do!?\"\n");
|
|
|
|
buf_add_string(buffer, "LOG SEVERITY=warning MESSAGE=\"warning msg\"\n");
|
|
|
|
buf_add_string(buffer, "LOG SEVERITY=notice MESSAGE=\"notice msg\"\n");
|
|
|
|
buf_add_string(buffer, "LOG SEVERITY=info MESSAGE=\"info msg\"\n");
|
|
|
|
buf_add_string(buffer, "LOG SEVERITY=debug MESSAGE=\"debug msg\"\n");
|
2018-12-20 03:55:02 +01:00
|
|
|
} else if (times_called <= 8) {
|
2019-01-14 17:59:59 +01:00
|
|
|
buf_add_string(buffer, "STATUS TRANSPORT=a K_1=a K_2=b K_3=\"foo bar\"\n");
|
|
|
|
buf_add_string(buffer, "STATUS TRANSPORT=b K_1=a K_2=b K_3=\"foo bar\"\n");
|
|
|
|
buf_add_string(buffer, "STATUS TRANSPORT=c K_1=a K_2=b K_3=\"foo bar\"\n");
|
2013-07-29 15:59:59 +02:00
|
|
|
}
|
|
|
|
|
2018-11-23 05:56:41 +01:00
|
|
|
return (int)buf_datalen(buffer);
|
2013-07-29 17:37:39 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static or_state_t *dummy_state = NULL;
|
|
|
|
|
|
|
|
static or_state_t *
|
|
|
|
get_or_state_replacement(void)
|
|
|
|
{
|
|
|
|
return dummy_state;
|
2013-07-29 15:59:59 +02:00
|
|
|
}
|
|
|
|
|
2013-08-25 17:29:03 +02:00
|
|
|
static int controlevent_n = 0;
|
|
|
|
static uint16_t controlevent_event = 0;
|
|
|
|
static smartlist_t *controlevent_msgs = NULL;
|
|
|
|
|
|
|
|
static void
|
2015-07-30 16:43:37 +02:00
|
|
|
queue_control_event_string_replacement(uint16_t event, char *msg)
|
2013-08-25 17:29:03 +02:00
|
|
|
{
|
|
|
|
++controlevent_n;
|
|
|
|
controlevent_event = event;
|
|
|
|
if (!controlevent_msgs)
|
|
|
|
controlevent_msgs = smartlist_new();
|
2015-07-30 16:43:37 +02:00
|
|
|
smartlist_add(controlevent_msgs, msg);
|
2013-08-25 17:29:03 +02:00
|
|
|
}
|
|
|
|
|
2013-07-29 15:59:59 +02:00
|
|
|
/* Test the configure_proxy() function. */
|
|
|
|
static void
|
|
|
|
test_pt_configure_proxy(void *arg)
|
|
|
|
{
|
2013-08-05 15:30:21 +02:00
|
|
|
int i, retval;
|
2013-07-29 15:59:59 +02:00
|
|
|
managed_proxy_t *mp = NULL;
|
2013-07-31 19:36:17 +02:00
|
|
|
(void) arg;
|
2013-07-29 15:59:59 +02:00
|
|
|
|
2013-07-29 17:37:39 +02:00
|
|
|
dummy_state = tor_malloc_zero(sizeof(or_state_t));
|
|
|
|
|
2018-11-23 05:56:41 +01:00
|
|
|
MOCK(process_read_stdout, process_read_stdout_replacement);
|
2013-07-29 17:37:39 +02:00
|
|
|
MOCK(get_or_state,
|
|
|
|
get_or_state_replacement);
|
2015-07-30 16:43:37 +02:00
|
|
|
MOCK(queue_control_event_string,
|
|
|
|
queue_control_event_string_replacement);
|
2013-08-25 17:29:03 +02:00
|
|
|
|
|
|
|
control_testing_set_global_event_mask(EVENT_TRANSPORT_LAUNCHED);
|
2013-07-29 15:59:59 +02:00
|
|
|
|
2014-09-11 15:17:13 +02:00
|
|
|
mp = tor_malloc_zero(sizeof(managed_proxy_t));
|
2013-07-29 15:59:59 +02:00
|
|
|
mp->conf_state = PT_PROTO_ACCEPTING_METHODS;
|
|
|
|
mp->transports = smartlist_new();
|
|
|
|
mp->transports_to_launch = smartlist_new();
|
2013-07-29 17:37:39 +02:00
|
|
|
mp->argv = tor_malloc_zero(sizeof(char*)*2);
|
|
|
|
mp->argv[0] = tor_strdup("<testcase>");
|
2013-08-05 19:54:54 +02:00
|
|
|
mp->is_server = 1;
|
2013-07-29 15:59:59 +02:00
|
|
|
|
2018-11-23 05:56:41 +01:00
|
|
|
/* Configure the process. */
|
|
|
|
mp->process = process_new("");
|
|
|
|
process_set_stdout_read_callback(mp->process, managed_proxy_stdout_callback);
|
|
|
|
process_set_data(mp->process, mp);
|
|
|
|
|
2013-07-29 15:59:59 +02:00
|
|
|
/* Test the return value of configure_proxy() by calling it some
|
|
|
|
times while it is uninitialized and then finally finalizing its
|
|
|
|
configuration. */
|
|
|
|
for (i = 0 ; i < 5 ; i++) {
|
2018-11-23 05:56:41 +01:00
|
|
|
/* force a read from our mocked stdout reader. */
|
|
|
|
process_notify_event_stdout(mp->process);
|
|
|
|
/* try to configure our proxy. */
|
2013-08-05 15:30:21 +02:00
|
|
|
retval = configure_proxy(mp);
|
|
|
|
/* retval should be zero because proxy hasn't finished configuring yet */
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_int_op(retval, OP_EQ, 0);
|
2013-08-05 15:30:21 +02:00
|
|
|
/* check the number of registered transports */
|
2018-11-23 05:56:41 +01:00
|
|
|
tt_int_op(smartlist_len(mp->transports), OP_EQ, i+1);
|
2013-08-05 15:30:21 +02:00
|
|
|
/* check that the mp is still waiting for transports */
|
Use coccinelle scripts to clean up our unit tests
This should get rid of most of the users of the old test_*
functions. Some are in macros and will need manual cleanup, though.
This patch is for 13119, and was automatically generated with these
scripts. The perl scripts are there because coccinelle hates
operators as macro arguments.
------------------------------
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
------------------------------
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_fail_msg
+TT_DIE
(
+(
a
+)
)
...>
}
@@
identifier func;
@@
func (...) {
<...
-test_fail()
+TT_DIE(("Assertion failed."))
...>
}
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_assert
+tt_assert
(a)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq
+tt_int_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_neq
+tt_int_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_streq
+tt_str_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_strneq
+tt_str_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq_ptr
+tt_ptr_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func() {
<...
-test_neq_ptr
+tt_ptr_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memeq
+tt_mem_op
(a,
+_X_EQ_,
b, len)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memneq
+tt_mem_op
(a,
+_X_NEQ_,
b, len)
...>
}
------------------------------
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
------------------------------
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
s/test_mem_op\(/tt_mem_op\(/g;
2014-09-16 03:18:21 +02:00
|
|
|
tt_assert(mp->conf_state == PT_PROTO_ACCEPTING_METHODS);
|
2013-07-29 15:59:59 +02:00
|
|
|
}
|
2013-08-05 15:30:21 +02:00
|
|
|
|
2018-11-23 05:56:41 +01:00
|
|
|
/* Get the SMETHOD DONE written to the process. */
|
|
|
|
process_notify_event_stdout(mp->process);
|
|
|
|
|
2013-08-05 15:30:21 +02:00
|
|
|
/* this last configure_proxy() should finalize the proxy configuration. */
|
|
|
|
retval = configure_proxy(mp);
|
|
|
|
/* retval should be 1 since the proxy finished configuring */
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_int_op(retval, OP_EQ, 1);
|
2013-08-05 15:30:21 +02:00
|
|
|
/* check the mp state */
|
Use coccinelle scripts to clean up our unit tests
This should get rid of most of the users of the old test_*
functions. Some are in macros and will need manual cleanup, though.
This patch is for 13119, and was automatically generated with these
scripts. The perl scripts are there because coccinelle hates
operators as macro arguments.
------------------------------
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
------------------------------
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_fail_msg
+TT_DIE
(
+(
a
+)
)
...>
}
@@
identifier func;
@@
func (...) {
<...
-test_fail()
+TT_DIE(("Assertion failed."))
...>
}
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_assert
+tt_assert
(a)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq
+tt_int_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_neq
+tt_int_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_streq
+tt_str_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_strneq
+tt_str_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq_ptr
+tt_ptr_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func() {
<...
-test_neq_ptr
+tt_ptr_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memeq
+tt_mem_op
(a,
+_X_EQ_,
b, len)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memneq
+tt_mem_op
(a,
+_X_NEQ_,
b, len)
...>
}
------------------------------
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
------------------------------
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
s/test_mem_op\(/tt_mem_op\(/g;
2014-09-16 03:18:21 +02:00
|
|
|
tt_assert(mp->conf_state == PT_PROTO_COMPLETED);
|
2013-07-29 15:59:59 +02:00
|
|
|
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_int_op(controlevent_n, OP_EQ, 5);
|
|
|
|
tt_int_op(controlevent_event, OP_EQ, EVENT_TRANSPORT_LAUNCHED);
|
|
|
|
tt_int_op(smartlist_len(controlevent_msgs), OP_EQ, 5);
|
2013-08-25 17:29:03 +02:00
|
|
|
smartlist_sort_strings(controlevent_msgs);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 0), OP_EQ,
|
2013-08-25 17:29:03 +02:00
|
|
|
"650 TRANSPORT_LAUNCHED server mock1 127.0.0.1 5551\r\n");
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 1), OP_EQ,
|
2013-08-25 17:29:03 +02:00
|
|
|
"650 TRANSPORT_LAUNCHED server mock2 127.0.0.1 5552\r\n");
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 2), OP_EQ,
|
2013-08-25 17:29:03 +02:00
|
|
|
"650 TRANSPORT_LAUNCHED server mock3 127.0.0.1 5553\r\n");
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 3), OP_EQ,
|
2013-08-25 17:29:03 +02:00
|
|
|
"650 TRANSPORT_LAUNCHED server mock4 127.0.0.1 5554\r\n");
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 4), OP_EQ,
|
2013-08-25 17:29:03 +02:00
|
|
|
"650 TRANSPORT_LAUNCHED server mock5 127.0.0.1 5555\r\n");
|
|
|
|
|
2018-11-23 22:50:55 +01:00
|
|
|
/* Get the log message out. */
|
2019-01-16 21:54:35 +01:00
|
|
|
setup_full_capture_of_logs(LOG_ERR);
|
2018-11-23 22:50:55 +01:00
|
|
|
process_notify_event_stdout(mp->process);
|
2019-01-16 21:54:35 +01:00
|
|
|
expect_single_log_msg_containing("Oh noes, something bad happened");
|
|
|
|
teardown_capture_of_logs();
|
2018-11-23 22:50:55 +01:00
|
|
|
|
2018-12-20 02:10:42 +01:00
|
|
|
tt_int_op(controlevent_n, OP_EQ, 10);
|
2018-11-29 16:42:56 +01:00
|
|
|
tt_int_op(controlevent_event, OP_EQ, EVENT_PT_LOG);
|
2018-12-20 02:10:42 +01:00
|
|
|
tt_int_op(smartlist_len(controlevent_msgs), OP_EQ, 10);
|
2018-11-23 22:50:55 +01:00
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 5), OP_EQ,
|
2018-12-20 02:10:42 +01:00
|
|
|
"650 PT_LOG PT=<testcase> SEVERITY=error "
|
|
|
|
"MESSAGE=\"Oh noes, "
|
|
|
|
"something bad happened. What do we do!?\"\r\n");
|
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 6), OP_EQ,
|
|
|
|
"650 PT_LOG PT=<testcase> SEVERITY=warning "
|
|
|
|
"MESSAGE=\"warning msg\"\r\n");
|
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 7), OP_EQ,
|
|
|
|
"650 PT_LOG PT=<testcase> SEVERITY=notice "
|
|
|
|
"MESSAGE=\"notice msg\"\r\n");
|
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 8), OP_EQ,
|
|
|
|
"650 PT_LOG PT=<testcase> SEVERITY=info "
|
|
|
|
"MESSAGE=\"info msg\"\r\n");
|
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 9), OP_EQ,
|
|
|
|
"650 PT_LOG PT=<testcase> SEVERITY=debug "
|
|
|
|
"MESSAGE=\"debug msg\"\r\n");
|
2018-11-23 22:50:55 +01:00
|
|
|
|
2018-12-20 03:55:02 +01:00
|
|
|
/* Get the STATUS messages out. */
|
|
|
|
process_notify_event_stdout(mp->process);
|
|
|
|
|
|
|
|
tt_int_op(controlevent_n, OP_EQ, 13);
|
|
|
|
tt_int_op(controlevent_event, OP_EQ, EVENT_PT_STATUS);
|
|
|
|
tt_int_op(smartlist_len(controlevent_msgs), OP_EQ, 13);
|
|
|
|
|
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 10), OP_EQ,
|
|
|
|
"650 PT_STATUS "
|
2019-01-14 17:59:59 +01:00
|
|
|
"PT=<testcase> TRANSPORT=a K_1=a K_2=b K_3=\"foo bar\"\r\n");
|
2018-12-20 03:55:02 +01:00
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 11), OP_EQ,
|
|
|
|
"650 PT_STATUS "
|
2019-01-14 17:59:59 +01:00
|
|
|
"PT=<testcase> TRANSPORT=b K_1=a K_2=b K_3=\"foo bar\"\r\n");
|
2018-12-20 03:55:02 +01:00
|
|
|
tt_str_op(smartlist_get(controlevent_msgs, 12), OP_EQ,
|
|
|
|
"650 PT_STATUS "
|
2019-01-14 17:59:59 +01:00
|
|
|
"PT=<testcase> TRANSPORT=c K_1=a K_2=b K_3=\"foo bar\"\r\n");
|
2018-12-20 03:55:02 +01:00
|
|
|
|
2013-08-05 19:54:54 +02:00
|
|
|
{ /* check that the transport info were saved properly in the tor state */
|
|
|
|
config_line_t *transport_in_state = NULL;
|
|
|
|
smartlist_t *transport_info_sl = smartlist_new();
|
|
|
|
char *name_of_transport = NULL;
|
|
|
|
char *bindaddr = NULL;
|
|
|
|
|
|
|
|
/* Get the bindaddr for "mock1" and check it against the bindaddr
|
|
|
|
that the mocked tor_get_lines_from_handle() generated. */
|
|
|
|
transport_in_state = get_transport_in_state_by_name("mock1");
|
Use coccinelle scripts to clean up our unit tests
This should get rid of most of the users of the old test_*
functions. Some are in macros and will need manual cleanup, though.
This patch is for 13119, and was automatically generated with these
scripts. The perl scripts are there because coccinelle hates
operators as macro arguments.
------------------------------
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
------------------------------
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_fail_msg
+TT_DIE
(
+(
a
+)
)
...>
}
@@
identifier func;
@@
func (...) {
<...
-test_fail()
+TT_DIE(("Assertion failed."))
...>
}
@@
expression a;
identifier func;
@@
func (...) {
<...
-test_assert
+tt_assert
(a)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq
+tt_int_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_neq
+tt_int_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_streq
+tt_str_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_strneq
+tt_str_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func (...) {
<...
-test_eq_ptr
+tt_ptr_op
(a,
+_X_EQ_,
b)
...>
}
@@
expression a, b;
identifier func;
@@
func() {
<...
-test_neq_ptr
+tt_ptr_op
(a,
+_X_NEQ_,
b)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memeq
+tt_mem_op
(a,
+_X_EQ_,
b, len)
...>
}
@@
expression a, b, len;
identifier func;
@@
func (...) {
<...
-test_memneq
+tt_mem_op
(a,
+_X_NEQ_,
b, len)
...>
}
------------------------------
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a == b
+a, _X_EQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a != b
+a, _X_NEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a >= b
+a, _X_GEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a <= b
+a, _X_LEQ_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a > b
+a, _X_GT_, b
)
...>
}
@@
char a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_int_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned int a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
@@
unsigned long a, b;
identifier func;
@@
func (...) {
<...
-tt_assert
+tt_uint_op
(
-a < b
+a, _X_LT_, b
)
...>
}
------------------------------
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
s/test_mem_op\(/tt_mem_op\(/g;
2014-09-16 03:18:21 +02:00
|
|
|
tt_assert(transport_in_state);
|
2013-08-05 19:54:54 +02:00
|
|
|
smartlist_split_string(transport_info_sl, transport_in_state->value,
|
|
|
|
NULL, 0, 0);
|
|
|
|
name_of_transport = smartlist_get(transport_info_sl, 0);
|
|
|
|
bindaddr = smartlist_get(transport_info_sl, 1);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(name_of_transport, OP_EQ, "mock1");
|
|
|
|
tt_str_op(bindaddr, OP_EQ, "127.0.0.1:5551");
|
2013-08-05 19:54:54 +02:00
|
|
|
|
|
|
|
SMARTLIST_FOREACH(transport_info_sl, char *, cp, tor_free(cp));
|
|
|
|
smartlist_free(transport_info_sl);
|
|
|
|
}
|
|
|
|
|
2013-07-29 15:59:59 +02:00
|
|
|
done:
|
2019-01-16 21:54:35 +01:00
|
|
|
teardown_capture_of_logs();
|
2014-04-26 17:28:39 +02:00
|
|
|
or_state_free(dummy_state);
|
2018-11-23 05:56:41 +01:00
|
|
|
UNMOCK(process_read_stdout);
|
2013-08-25 17:29:03 +02:00
|
|
|
UNMOCK(get_or_state);
|
2015-07-30 16:43:37 +02:00
|
|
|
UNMOCK(queue_control_event_string);
|
2013-08-25 17:29:03 +02:00
|
|
|
if (controlevent_msgs) {
|
|
|
|
SMARTLIST_FOREACH(controlevent_msgs, char *, cp, tor_free(cp));
|
|
|
|
smartlist_free(controlevent_msgs);
|
|
|
|
controlevent_msgs = NULL;
|
|
|
|
}
|
2014-04-26 17:28:39 +02:00
|
|
|
if (mp->transports) {
|
|
|
|
SMARTLIST_FOREACH(mp->transports, transport_t *, t, transport_free(t));
|
|
|
|
smartlist_free(mp->transports);
|
|
|
|
}
|
|
|
|
smartlist_free(mp->transports_to_launch);
|
2018-11-23 05:56:41 +01:00
|
|
|
process_free(mp->process);
|
2014-04-26 17:28:39 +02:00
|
|
|
tor_free(mp->argv[0]);
|
|
|
|
tor_free(mp->argv);
|
|
|
|
tor_free(mp);
|
2013-07-29 15:59:59 +02:00
|
|
|
}
|
2013-07-29 17:37:39 +02:00
|
|
|
|
2014-03-25 08:21:22 +01:00
|
|
|
/* Test the get_pt_proxy_uri() function. */
|
|
|
|
static void
|
|
|
|
test_get_pt_proxy_uri(void *arg)
|
|
|
|
{
|
|
|
|
or_options_t *options = get_options_mutable();
|
|
|
|
char *uri = NULL;
|
|
|
|
int ret;
|
|
|
|
(void) arg;
|
|
|
|
|
|
|
|
/* Test with no proxy. */
|
|
|
|
uri = get_pt_proxy_uri();
|
2017-08-24 21:55:27 +02:00
|
|
|
tt_ptr_op(uri, OP_EQ, NULL);
|
2014-03-25 08:21:22 +01:00
|
|
|
|
|
|
|
/* Test with a SOCKS4 proxy. */
|
2014-04-14 23:51:34 +02:00
|
|
|
options->Socks4Proxy = tor_strdup("192.0.2.1:1080");
|
2014-03-25 08:21:22 +01:00
|
|
|
ret = tor_addr_port_lookup(options->Socks4Proxy,
|
|
|
|
&options->Socks4ProxyAddr,
|
|
|
|
&options->Socks4ProxyPort);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_int_op(ret, OP_EQ, 0);
|
2014-03-25 08:21:22 +01:00
|
|
|
uri = get_pt_proxy_uri();
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(uri, OP_EQ, "socks4a://192.0.2.1:1080");
|
2014-03-25 08:21:22 +01:00
|
|
|
tor_free(uri);
|
2014-04-14 23:51:34 +02:00
|
|
|
tor_free(options->Socks4Proxy);
|
2014-03-25 08:21:22 +01:00
|
|
|
|
|
|
|
/* Test with a SOCKS5 proxy, no username/password. */
|
2014-04-14 23:51:34 +02:00
|
|
|
options->Socks5Proxy = tor_strdup("192.0.2.1:1080");
|
2014-03-25 08:21:22 +01:00
|
|
|
ret = tor_addr_port_lookup(options->Socks5Proxy,
|
|
|
|
&options->Socks5ProxyAddr,
|
|
|
|
&options->Socks5ProxyPort);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_int_op(ret, OP_EQ, 0);
|
2014-03-25 08:21:22 +01:00
|
|
|
uri = get_pt_proxy_uri();
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(uri, OP_EQ, "socks5://192.0.2.1:1080");
|
2014-03-25 08:21:22 +01:00
|
|
|
tor_free(uri);
|
|
|
|
|
|
|
|
/* Test with a SOCKS5 proxy, with username/password. */
|
2014-04-14 23:51:34 +02:00
|
|
|
options->Socks5ProxyUsername = tor_strdup("hwest");
|
|
|
|
options->Socks5ProxyPassword = tor_strdup("r34n1m470r");
|
2014-03-25 08:21:22 +01:00
|
|
|
uri = get_pt_proxy_uri();
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(uri, OP_EQ, "socks5://hwest:r34n1m470r@192.0.2.1:1080");
|
2014-03-25 08:21:22 +01:00
|
|
|
tor_free(uri);
|
2014-04-14 23:51:34 +02:00
|
|
|
tor_free(options->Socks5Proxy);
|
|
|
|
tor_free(options->Socks5ProxyUsername);
|
|
|
|
tor_free(options->Socks5ProxyPassword);
|
2014-03-25 08:21:22 +01:00
|
|
|
|
|
|
|
/* Test with a HTTPS proxy, no authenticator. */
|
2014-04-14 23:51:34 +02:00
|
|
|
options->HTTPSProxy = tor_strdup("192.0.2.1:80");
|
2014-03-25 08:21:22 +01:00
|
|
|
ret = tor_addr_port_lookup(options->HTTPSProxy,
|
|
|
|
&options->HTTPSProxyAddr,
|
|
|
|
&options->HTTPSProxyPort);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_int_op(ret, OP_EQ, 0);
|
2014-03-25 08:21:22 +01:00
|
|
|
uri = get_pt_proxy_uri();
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(uri, OP_EQ, "http://192.0.2.1:80");
|
2014-03-25 08:21:22 +01:00
|
|
|
tor_free(uri);
|
|
|
|
|
|
|
|
/* Test with a HTTPS proxy, with authenticator. */
|
2014-04-14 23:51:34 +02:00
|
|
|
options->HTTPSProxyAuthenticator = tor_strdup("hwest:r34n1m470r");
|
2014-03-25 08:21:22 +01:00
|
|
|
uri = get_pt_proxy_uri();
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(uri, OP_EQ, "http://hwest:r34n1m470r@192.0.2.1:80");
|
2014-03-25 08:21:22 +01:00
|
|
|
tor_free(uri);
|
2014-04-14 23:51:34 +02:00
|
|
|
tor_free(options->HTTPSProxy);
|
|
|
|
tor_free(options->HTTPSProxyAuthenticator);
|
2014-03-25 08:21:22 +01:00
|
|
|
|
|
|
|
/* Token nod to the fact that IPv6 exists. */
|
2014-04-14 23:51:34 +02:00
|
|
|
options->Socks4Proxy = tor_strdup("[2001:db8::1]:1080");
|
2014-03-25 08:21:22 +01:00
|
|
|
ret = tor_addr_port_lookup(options->Socks4Proxy,
|
|
|
|
&options->Socks4ProxyAddr,
|
|
|
|
&options->Socks4ProxyPort);
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_int_op(ret, OP_EQ, 0);
|
2014-03-25 08:21:22 +01:00
|
|
|
uri = get_pt_proxy_uri();
|
2014-11-12 19:28:07 +01:00
|
|
|
tt_str_op(uri, OP_EQ, "socks4a://[2001:db8::1]:1080");
|
2014-03-25 08:21:22 +01:00
|
|
|
tor_free(uri);
|
2014-04-14 23:51:34 +02:00
|
|
|
tor_free(options->Socks4Proxy);
|
2014-03-25 08:21:22 +01:00
|
|
|
|
|
|
|
done:
|
|
|
|
if (uri)
|
|
|
|
tor_free(uri);
|
|
|
|
}
|
|
|
|
|
2011-07-13 19:06:14 +02:00
|
|
|
#define PT_LEGACY(name) \
|
Remove the legacy_test_helper and legacy_setup wrappers
These wrappers went into place when the default type for our unit
test functions changed from "void fn(void)" to "void fn(void *arg)".
To generate this patch, I did the same hokey-pokey as before with
replacing all operators used as macro arguments, then I ran a
coccinelle script, then I ran perl script to fix up everything that
used legacy_test_helper, then I manually removed the
legacy_test_helper functions, then I ran a final perl script to put
the operators back how they were.
==============================
#!/usr/bin/perl -w -i -p
s/==,/_X_EQ_,/g;
s/!=,/_X_NE_,/g;
s/<,/_X_LT_,/g;
s/>,/_X_GT_,/g;
s/>=,/_X_GEQ_,/g;
s/<=,/_X_LEQ_,/g;
--------------------
@@
identifier func =~ "test_.*$";
statement S, S2;
@@
static void func (
-void
+void *arg
)
{
... when != S2
+(void) arg;
S
...
}
--------------------
#!/usr/bin/perl -w -i -p
s/, *legacy_test_helper, *([^,]+), *\&legacy_setup, *([^\}]+) *}/, $2, $1, NULL, NULL }/g;
--------------------
#!/usr/bin/perl -w -i -p
s/_X_NEQ_/!=/g;
s/_X_NE_/!=/g;
s/_X_EQ_/==/g;
s/_X_GT_/>/g;
s/_X_LT_/</g;
s/_X_GEQ_/>=/g;
s/_X_LEQ_/<=/g;
--------------------
2014-09-16 15:30:22 +02:00
|
|
|
{ #name, test_pt_ ## name , 0, NULL, NULL }
|
2011-07-13 19:06:14 +02:00
|
|
|
|
|
|
|
struct testcase_t pt_tests[] = {
|
|
|
|
PT_LEGACY(parsing),
|
|
|
|
PT_LEGACY(protocol),
|
2013-07-15 23:32:08 +02:00
|
|
|
{ "get_transport_options", test_pt_get_transport_options, TT_FORK,
|
|
|
|
NULL, NULL },
|
2013-07-16 17:53:36 +02:00
|
|
|
{ "get_extrainfo_string", test_pt_get_extrainfo_string, TT_FORK,
|
|
|
|
NULL, NULL },
|
2013-07-29 15:59:59 +02:00
|
|
|
{ "configure_proxy",test_pt_configure_proxy, TT_FORK,
|
|
|
|
NULL, NULL },
|
2014-03-25 08:21:22 +01:00
|
|
|
{ "get_pt_proxy_uri", test_get_pt_proxy_uri, TT_FORK,
|
|
|
|
NULL, NULL },
|
2011-07-13 19:06:14 +02:00
|
|
|
END_OF_TESTCASES
|
|
|
|
};
|