Unit Test Guard, Middle, Exit, Intro, and Rend node choices
We could unit test the #19973 (moved) fix to the 0.2.8.6 path selection issue by copying the code from test_choose_random_entry_no_guards, but running it on:
- choose_good_middle_server
- choose_good_exit_server_general
- router_choose_random_node (used by rend_consider_services_intro_points)
- pick_rendezvous_node
The tests should make sure these functions return any node at random. In 0.2.8.6, these functions chose nodes using the direct connection reachability rules, which was wrong.
We could make these tests simpler and more reliable by setting up a node list with a single node that 0.2.8.6 wouldn't choose, but 0.2.8.7 would. For example:
- an IPv4-only node with ClientUseIPv4 0
- a node on 9001/9030 with FascistFirewall 1
- a node on 1.1.1.1 with ReachableAddresses 2.0.0.0/8