commit 387d9448de4c5044800706b4ed21b48b4426cb7e Author: teor teor@torproject.org Date: Tue Apr 2 19:56:38 2019 +1000
test/circuitpadding: Delete circuitpadding_circuitsetup_machine()
This test was disabled in 0.4.0 and later, but the fix in #29298 was only merged to 0.4.1. So this test will never be re-enabled in 0.4.0.
Part of 29500. --- src/test/test_circuitpadding.c | 253 ----------------------------------------- 1 file changed, 253 deletions(-)
diff --git a/src/test/test_circuitpadding.c b/src/test/test_circuitpadding.c index 6272c0c2a..ed048ab96 100644 --- a/src/test/test_circuitpadding.c +++ b/src/test/test_circuitpadding.c @@ -1824,257 +1824,6 @@ test_circuitpadding_conditions(void *arg) return; }
-/** Disabled unstable test until #29298 is implemented (see #29122) */ -#if 0 -void -test_circuitpadding_circuitsetup_machine(void *arg) -{ - int64_t actual_mocked_monotime_start; - /** - * Test case plan: - * - * 1. Simulate a normal circuit setup pattern - * a. Application traffic - * - * FIXME: This should focus more on exercising the machine - * features rather than actual traffic patterns. For example, - * test cancellation and bins empty/refill - */ - (void)arg; - - MOCK(circuitmux_attach_circuit, circuitmux_attach_circuit_mock); - - dummy_channel.cmux = circuitmux_alloc(); - client_side = TO_CIRCUIT(origin_circuit_new()); - relay_side = TO_CIRCUIT(new_fake_orcirc(&dummy_channel, &dummy_channel)); - - relay_side->purpose = CIRCUIT_PURPOSE_OR; - client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL; - - nodes_init(); - - monotime_init(); - monotime_enable_test_mocking(); - actual_mocked_monotime_start = MONOTIME_MOCK_START; - monotime_set_mock_time_nsec(actual_mocked_monotime_start); - monotime_coarse_set_mock_time_nsec(actual_mocked_monotime_start); - curr_mocked_time = actual_mocked_monotime_start; - - timers_initialize(); - circpad_machines_init(); - - MOCK(circuit_package_relay_cell, - circuit_package_relay_cell_mock); - MOCK(node_get_by_id, - node_get_by_id_mock); - - /* Test case #1: Build a 3 hop circuit, then wait and let pad */ - simulate_single_hop_extend(client_side, relay_side, 1); - simulate_single_hop_extend(client_side, relay_side, 1); - simulate_single_hop_extend(client_side, relay_side, 1); - - tt_int_op(n_client_cells, OP_EQ, 1); - tt_int_op(n_relay_cells, OP_EQ, 1); - tt_int_op(client_side->padding_info[0]->current_state, OP_EQ, - CIRCPAD_STATE_BURST); - tt_int_op(relay_side->padding_info[0]->current_state, OP_EQ, - CIRCPAD_STATE_BURST); - - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - tt_int_op(relay_side->padding_info[0]->is_padding_timer_scheduled, - OP_EQ, 0); - timers_advance_and_run(2000); - tt_int_op(n_client_cells, OP_EQ, 2); - tt_int_op(n_relay_cells, OP_EQ, 1); - - tt_int_op(relay_side->padding_info[0]->current_state, OP_EQ, - CIRCPAD_STATE_GAP); - - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_EQ, 0); - tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - timers_advance_and_run(5000); - tt_int_op(n_client_cells, OP_EQ, 2); - tt_int_op(n_relay_cells, OP_EQ, 2); - - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec, - OP_EQ, 0); - timers_advance_and_run(2000); - tt_int_op(n_client_cells, OP_EQ, 3); - tt_int_op(n_relay_cells, OP_EQ, 2); - - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_EQ, 0); - tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - timers_advance_and_run(5000); - tt_int_op(n_client_cells, OP_EQ, 3); - tt_int_op(n_relay_cells, OP_EQ, 3); - - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec, - OP_EQ, 0); - timers_advance_and_run(2000); - tt_int_op(n_client_cells, OP_EQ, 4); - tt_int_op(n_relay_cells, OP_EQ, 3); - - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_EQ, 0); - tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - timers_advance_and_run(5000); - tt_int_op(n_client_cells, OP_EQ, 4); - tt_int_op(n_relay_cells, OP_EQ, 4); - - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec, - OP_EQ, 0); - timers_advance_and_run(2000); - tt_int_op(n_client_cells, OP_EQ, 5); - tt_int_op(n_relay_cells, OP_EQ, 4); - - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_EQ, 0); - tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - timers_advance_and_run(5000); - tt_int_op(n_client_cells, OP_EQ, 5); - tt_int_op(n_relay_cells, OP_EQ, 5); - - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec, - OP_EQ, 0); - timers_advance_and_run(2000); - tt_int_op(n_client_cells, OP_EQ, 6); - tt_int_op(n_relay_cells, OP_EQ, 5); - - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_EQ, 0); - tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - timers_advance_and_run(5000); - tt_int_op(n_client_cells, OP_EQ, 6); - tt_int_op(n_relay_cells, OP_EQ, 6); - - tt_int_op(client_side->padding_info[0]->current_state, - OP_EQ, CIRCPAD_STATE_END); - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_EQ, 0); - tt_int_op(relay_side->padding_info[0]->current_state, - OP_EQ, CIRCPAD_STATE_GAP); - tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec, - OP_EQ, 0); - - /* Verify we can't schedule padding in END state */ - circpad_decision_t ret = - circpad_machine_schedule_padding(client_side->padding_info[0]); - tt_int_op(ret, OP_EQ, CIRCPAD_STATE_UNCHANGED); - - /* Simulate application traffic */ - circpad_cell_event_nonpadding_sent(client_side); - circpad_deliver_unrecognized_cell_events(relay_side, CELL_DIRECTION_OUT); - circpad_deliver_unrecognized_cell_events(relay_side, CELL_DIRECTION_IN); - circpad_deliver_recognized_relay_cell_events(client_side, RELAY_COMMAND_DATA, - TO_ORIGIN_CIRCUIT(client_side)->cpath->next); - - tt_ptr_op(client_side->padding_info[0], OP_EQ, NULL); - tt_ptr_op(client_side->padding_machine[0], OP_EQ, NULL); - - tt_ptr_op(relay_side->padding_info[0], OP_EQ, NULL); - tt_ptr_op(relay_side->padding_machine[0], OP_EQ, NULL); - tt_int_op(n_client_cells, OP_EQ, 6); - tt_int_op(n_relay_cells, OP_EQ, 7); - - // Test timer cancellation - simulate_single_hop_extend(client_side, relay_side, 1); - simulate_single_hop_extend(client_side, relay_side, 1); - timers_advance_and_run(5000); - circpad_cell_event_padding_received(client_side); - - tt_int_op(client_side->padding_info[0]->current_state, OP_EQ, - CIRCPAD_STATE_BURST); - tt_int_op(relay_side->padding_info[0]->current_state, OP_EQ, - CIRCPAD_STATE_GAP); - - tt_int_op(n_client_cells, OP_EQ, 8); - tt_int_op(n_relay_cells, OP_EQ, 8); - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - - /* Test timer cancel due to state rules */ - circpad_cell_event_nonpadding_sent(client_side); - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_EQ, 0); - circpad_cell_event_padding_received(client_side); - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - - /* Simulate application traffic to cancel timer */ - circpad_cell_event_nonpadding_sent(client_side); - circpad_deliver_unrecognized_cell_events(relay_side, CELL_DIRECTION_OUT); - circpad_deliver_unrecognized_cell_events(relay_side, CELL_DIRECTION_IN); - circpad_deliver_recognized_relay_cell_events(client_side, RELAY_COMMAND_DATA, - TO_ORIGIN_CIRCUIT(client_side)->cpath->next); - - tt_ptr_op(client_side->padding_info[0], OP_EQ, NULL); - tt_ptr_op(client_side->padding_machine[0], OP_EQ, NULL); - - tt_ptr_op(relay_side->padding_info[0], OP_EQ, NULL); - tt_ptr_op(relay_side->padding_machine[0], OP_EQ, NULL); - - /* No cells sent, except negotiate end from relay */ - tt_int_op(n_client_cells, OP_EQ, 8); - tt_int_op(n_relay_cells, OP_EQ, 9); - - /* Test mark for close and free */ - simulate_single_hop_extend(client_side, relay_side, 1); - simulate_single_hop_extend(client_side, relay_side, 1); - timers_advance_and_run(5000); - circpad_cell_event_padding_received(client_side); - - tt_int_op(n_client_cells, OP_EQ, 10); - tt_int_op(n_relay_cells, OP_EQ, 10); - - tt_int_op(client_side->padding_info[0]->current_state, OP_EQ, - CIRCPAD_STATE_BURST); - tt_int_op(relay_side->padding_info[0]->current_state, OP_EQ, - CIRCPAD_STATE_GAP); - - tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec, - OP_NE, 0); - circuit_mark_for_close(client_side, END_CIRC_REASON_FLAG_REMOTE); - free_fake_orcirc(relay_side); - timers_advance_and_run(5000); - - /* No cells sent */ - tt_int_op(n_client_cells, OP_EQ, 10); - tt_int_op(n_relay_cells, OP_EQ, 10); - - done: - free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side)); - - circuitmux_detach_all_circuits(dummy_channel.cmux, NULL); - circuitmux_free(dummy_channel.cmux); - timers_shutdown(); - monotime_disable_test_mocking(); - UNMOCK(circuit_package_relay_cell); - UNMOCK(circuitmux_attach_circuit); - - return; -} -#endif - /** Helper function: Initializes a padding machine where every state uses the * uniform probability distribution. */ static void @@ -2365,8 +2114,6 @@ struct testcase_t circuitpadding_tests[] = { TEST_CIRCUITPADDING(circuitpadding_tokens, TT_FORK), TEST_CIRCUITPADDING(circuitpadding_negotiation, TT_FORK), TEST_CIRCUITPADDING(circuitpadding_wronghop, TT_FORK), - /** Disabled unstable test until #29298 is implemented (see #29122) */ - // TEST_CIRCUITPADDING(circuitpadding_circuitsetup_machine, TT_FORK), TEST_CIRCUITPADDING(circuitpadding_conditions, TT_FORK), TEST_CIRCUITPADDING(circuitpadding_rtt, TT_FORK), TEST_CIRCUITPADDING(circuitpadding_sample_distribution, TT_FORK),