#include "core/or/or_circuit_st.h"
#include "core/or/origin_circuit_st.h"
+#include "test/rng_test_helpers.h"
+
/* Start our monotime mocking at 1 second past whatever monotime_init()
* thought the actual wall clock time was, for platforms with bad resolution
* and weird timevalues during monotime_init() before mocking. */
MOCK(circuitmux_attach_circuit, circuitmux_attach_circuit_mock);
MOCK(circpad_send_command_to_hop, circpad_send_command_to_hop_mock);
+ testing_enable_reproducible_rng();
dummy_channel.cmux = circuitmux_alloc();
relay_side = TO_CIRCUIT(new_fake_orcirc(&dummy_channel, &dummy_channel));
UNMOCK(circuit_package_relay_cell);
UNMOCK(circuitmux_attach_circuit);
tor_free(circ_client_machine.states);
+ testing_disable_reproducible_rng();
return;
}
/* Mock it up */
MOCK(monotime_absolute_usec, mock_monotime_absolute_usec);
MOCK(circpad_machine_schedule_padding,circpad_machine_schedule_padding_mock);
+ testing_enable_reproducible_rng();
/* Setup test environment (time etc.) */
client_side = (circuit_t *)origin_circuit_new();
free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
monotime_disable_test_mocking();
tor_free(circ_client_machine.states);
+ testing_disable_reproducible_rng();
}
/** Test lower token removal strategy by bin */
/* Mock it up */
MOCK(monotime_absolute_usec, mock_monotime_absolute_usec);
MOCK(circpad_machine_schedule_padding,circpad_machine_schedule_padding_mock);
+ testing_enable_reproducible_rng();
/* Setup test environment (time etc.) */
client_side = (circuit_t *)origin_circuit_new();
free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
monotime_disable_test_mocking();
tor_free(circ_client_machine.states);
+ testing_disable_reproducible_rng();
}
/** Test closest token removal strategy by bin */
/* Mock it up */
MOCK(monotime_absolute_usec, mock_monotime_absolute_usec);
MOCK(circpad_machine_schedule_padding,circpad_machine_schedule_padding_mock);
+ testing_enable_reproducible_rng();
/* Setup test environment (time etc.) */
client_side = (circuit_t *)origin_circuit_new();
free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
monotime_disable_test_mocking();
tor_free(circ_client_machine.states);
+ testing_disable_reproducible_rng();
}
/** Test closest token removal strategy with usec */
/* Mock it up */
MOCK(monotime_absolute_usec, mock_monotime_absolute_usec);
MOCK(circpad_machine_schedule_padding,circpad_machine_schedule_padding_mock);
+ testing_enable_reproducible_rng();
/* Setup test environment (time etc.) */
client_side = (circuit_t *)origin_circuit_new();
free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
monotime_disable_test_mocking();
tor_free(circ_client_machine.states);
+ testing_disable_reproducible_rng();
}
/** Test closest token removal strategy with usec */
/* Mock it up */
MOCK(monotime_absolute_usec, mock_monotime_absolute_usec);
MOCK(circpad_machine_schedule_padding,circpad_machine_schedule_padding_mock);
+ testing_enable_reproducible_rng();
/* Setup test environment (time etc.) */
client_side = (circuit_t *)origin_circuit_new();
free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
monotime_disable_test_mocking();
tor_free(circ_client_machine.states);
+ testing_disable_reproducible_rng();
}
#undef BIG_HISTOGRAM_LEN
int64_t actual_mocked_monotime_start;
(void)arg;
+ testing_enable_reproducible_rng();
+
/** Test plan:
*
* 1. Test symmetry between bin_to_usec and usec_to_bin
free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
monotime_disable_test_mocking();
tor_free(circ_client_machine.states);
+ testing_disable_reproducible_rng();
}
void
/* Mock this function so that our cell counting tests don't get confused by
* padding that gets sent by scheduled timers. */
MOCK(circpad_machine_schedule_padding,circpad_machine_schedule_padding_mock);
+ testing_enable_reproducible_rng();
client_side = (circuit_t *)origin_circuit_new();
dummy_channel.cmux = circuitmux_alloc();
UNMOCK(circuit_package_relay_cell);
UNMOCK(circuitmux_attach_circuit);
nodes_free();
+ testing_disable_reproducible_rng();
}
void
int64_t actual_mocked_monotime_start;
(void)arg;
MOCK(circuitmux_attach_circuit, circuitmux_attach_circuit_mock);
+ testing_enable_reproducible_rng();
nodes_init();
dummy_channel.cmux = circuitmux_alloc();
done:
/* XXX: Free everything */
+ testing_disable_reproducible_rng();
return;
}
/* mock this function so that we dont actually schedule any padding */
MOCK(circpad_machine_schedule_padding,
circpad_machine_schedule_padding_mock);
+ testing_enable_reproducible_rng();
/* Initialize a machine with multiple probability distributions */
circpad_machines_init();
done:
free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
UNMOCK(circpad_machine_schedule_padding);
+ testing_disable_reproducible_rng();
}
static circpad_decision_t
* really care about padding counts */
MOCK(circpad_machine_spec_transition, circpad_machine_spec_transition_mock);
MOCK(circpad_send_command_to_hop, circpad_send_command_to_hop_mock);
+ testing_enable_reproducible_rng();
/* Setup machine and circuits */
client_side = TO_CIRCUIT(origin_circuit_new());
done:
free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ testing_disable_reproducible_rng();
}
/* Test global padding rate limits */
MOCK(circuit_package_relay_cell,
circuit_package_relay_cell_mock);
MOCK(monotime_absolute_usec, mock_monotime_absolute_usec);
+ testing_enable_reproducible_rng();
monotime_init();
monotime_enable_test_mocking();
circuitmux_free(dummy_channel.cmux);
SMARTLIST_FOREACH(vote1.net_params, char *, cp, tor_free(cp));
smartlist_free(vote1.net_params);
+ testing_disable_reproducible_rng();
}
/* Test reduced and disabled padding */
int64_t actual_mocked_monotime_start;
MOCK(circuitmux_attach_circuit, circuitmux_attach_circuit_mock);
+ testing_enable_reproducible_rng();
nodes_init();
dummy_channel.cmux = circuitmux_alloc();
free_fake_orcirc(relay_side);
circuitmux_detach_all_circuits(dummy_channel.cmux, NULL);
circuitmux_free(dummy_channel.cmux);
+ testing_disable_reproducible_rng();
}
#define TEST_CIRCUITPADDING(name, flags) \