Andrea Shepard
f12f7159a5
Add channel/flushmux unit test
2014-09-30 23:14:22 -07:00
Andrea Shepard
9eea42f844
Make channel_flush_from_first_active_circuit() mockable
2014-09-30 23:14:02 -07:00
Andrea Shepard
5b7a58f7c4
Make circuitmux_num_cells() mockable
2014-09-30 23:14:02 -07:00
Andrea Shepard
76fcb8cb55
Add channel/incoming unit test
2014-09-30 23:14:02 -07:00
Andrea Shepard
b5d4ef18e1
Add unknown cell queue entry type case to channel/queue_impossible unit test
2014-09-30 23:14:02 -07:00
Andrea Shepard
f7951d318a
Small channel unit test improvements
2014-09-30 23:14:01 -07:00
Andrea Shepard
ae3ed185e4
Let channel unit tests mess with global queue estimate
2014-09-30 23:14:01 -07:00
Andrea Shepard
3b78667d65
Unit test for unusual channel lifecycles
2014-09-30 23:14:01 -07:00
Andrea Shepard
b6d0aaec07
Check some can't-happen cases draining channel cell queues
2014-09-30 23:13:58 -07:00
Andrea Shepard
bbb06b73cd
Expose some channel cell queue stuff to the test suite
2014-09-30 23:09:15 -07:00
Andrea Shepard
5992a69dee
Add append_cell_to_circuit_queue() unit test
2014-09-30 23:09:15 -07:00
Andrea Shepard
46ff91b6ec
Add scheduler_channel_has_waiting_cells_mock() and some mock counter queries
2014-09-30 23:09:15 -07:00
Andrea Shepard
2ee69bd5d7
Expose get_unique_circ_id_by_chan() to test suite
2014-09-30 23:09:14 -07:00
Andrea Shepard
ade60890d0
Make scheduler_channel_doesnt_want_writes() mockable
2014-09-30 23:09:14 -07:00
Andrea Shepard
bef11b7156
Expose a useful mock from test_channel.c
2014-09-30 23:09:14 -07:00
Andrea Shepard
79b8f14c25
Expose fake channel utility functions in test suite in fakechans.h, and fix a test_channel.c bug
2014-09-30 23:09:14 -07:00
Andrea Shepard
ba294ff2dc
Implement channel flush unit test
2014-09-30 23:09:00 -07:00
Andrea Shepard
37baef0687
Add channel lifecycle test
2014-09-30 23:08:16 -07:00
Andrea Shepard
fd57840a77
Make scheduler_channel_doesnt_want_writes() mockable
2014-09-30 22:54:10 -07:00
Andrea Shepard
e00fde1797
Implement two-channel queue estimate test
2014-09-30 22:54:09 -07:00
Andrea Shepard
6e427c30af
Implement channel queue size estimate unit test
2014-09-30 22:54:09 -07:00
Andrea Shepard
6d886787e3
Unit tests for channel_get_cell_queue_entry_size() and channel_write_*() functions
2014-09-30 22:54:02 -07:00
Andrea Shepard
85ee070852
Make scheduler_release_channel() mockable
2014-09-30 22:49:58 -07:00
Andrea Shepard
8907554cf3
Make channel_note_destroy_not_pending() mockable
2014-09-30 22:49:58 -07:00
Andrea Shepard
dabf4c33e2
Refactor channel_get_cell_queue_entry_size() to avoid an unreachable line for test coverage, and fix a nasty lurking memory bug in channel_flush_some_cells_from_outgoing_queue()
2014-09-30 22:49:58 -07:00
Andrea Shepard
52cfaa84b7
Add changes file for global scheduler/cmux refactor
2014-09-30 22:49:58 -07:00
Andrea Shepard
ac1b627e85
Implement scheduler_touch_channel()
2014-09-30 22:49:58 -07:00
Andrea Shepard
ed1927d6bf
Use a non-stupid data structure in the scheduler
2014-09-30 22:49:56 -07:00
Andrea Shepard
3530825c53
Eliminate some unnecessary smartlists in scheduler.c
2014-09-30 22:49:36 -07:00
Andrea Shepard
283646fd90
Fix scheduler assertion in circuitmux/destroy_cell_queue unit test
2014-09-30 22:49:36 -07:00
Andrea Shepard
63bb9a795e
Fix compiler warning
2014-09-30 22:49:36 -07:00
Andrea Shepard
55907da28d
Sort the scheduler's channel list by cmux comparisons
2014-09-30 22:49:36 -07:00
Andrea Shepard
700d6e7525
Add inter-cmux comparison support to circuitmux_ewma.c
2014-09-30 22:49:35 -07:00
Andrea Shepard
9db596d2ef
Add cmux support for inter-cmux comparisons
2014-09-30 22:49:35 -07:00
Andrea Shepard
1275002a46
Schedule according to a queue size heuristic
2014-09-30 22:49:35 -07:00
Andrea Shepard
4f567c8cc8
Let the new scheduler handle writes
2014-09-30 22:49:03 -07:00
Andrea Shepard
f314d9509c
Fix return values from channel_flush_some_cells() to correctly count cells directly written by channel_flush_from_first_active_circuit()
2014-09-30 22:49:03 -07:00
Andrea Shepard
2fc3da3ff5
Implement global queue size query in channel.c
2014-09-30 22:49:03 -07:00
Andrea Shepard
8852a1794c
Track total queue size per channel, with overhead estimates, and global queue total
2014-09-30 22:49:03 -07:00
Andrea Shepard
7674308f62
Make 'make check-spaces' not complain about function pointers returning size_t or double
2014-09-30 22:49:02 -07:00
Andrea Shepard
5e0a6d54d0
Add global cell/byte counters and per channel byte counters to channel.c
2014-09-30 22:49:02 -07:00
Andrea Shepard
f0533d8d22
Remove no-longer-used channel_tls_t functions
2014-09-30 22:49:02 -07:00
Andrea Shepard
b09f41424c
Actually call channel_flush_some_cells() from the scheduler
2014-09-30 22:49:01 -07:00
Andrea Shepard
2efbab2aaf
Provide generic mechanism for scheduler to query writeable cells on a channel
2014-09-30 22:48:26 -07:00
Nick Mathewson
472b62bfe4
Uglify scheduler init logic to avoid crash on startup.
...
Otherwise, when we authority try to do a self-test because of
init-keys, if that self-test can't be launched for whatever reason and
so we close the channel immediately, we crash.
Yes, this a silly way for initialization to work.
2014-09-30 22:48:26 -07:00
Nick Mathewson
85ee5b3095
Use event_active, not 0-length timeouts. It's idempotent, too.
2014-09-30 22:48:26 -07:00
Nick Mathewson
fc13184e44
Fix unused-arguments warnings
2014-09-30 22:48:26 -07:00
Nick Mathewson
08bea13c35
Temporarily disable scheduler_trigger as unused
2014-09-30 22:48:26 -07:00
Andrea Shepard
d438cf1ec9
Implement scheduler mechanism to track lists of channels wanting cells or writes; doesn't actually drive the cell flow from it yet
2014-09-30 22:48:24 -07:00
Nick Mathewson
b448ec195d
Clear the cached address from resolve_my_address() when our IP changes
...
Closes 11582; patch from "ra".
2014-09-29 13:47:58 -04:00