@@ -952,77 +952,78 @@ mod tests {
952952 }
953953
954954 #[ test]
955- fn while_housekeeping_the_stream_senders_are_received_by_stream_handler_pool ( ) {
955+ fn while_housekeeping_the_shutdown_signal_is_sent ( ) {
956956 init_test_logging ( ) ;
957957 let test_name = "stream_handler_pool_sends_shutdown_signal_when_last_data_is_true" ;
958958 let ( shutdown_tx, mut shutdown_rx) = unbounded_channel ( ) ;
959959 let ( stream_adder_tx, stream_adder_rx) = unbounded ( ) ;
960- thread:: spawn ( move || {
961- let stream_key = StreamKey :: make_meaningful_stream_key ( "I should die" ) ;
962- let client_request_payload = ClientRequestPayload_0v1 {
960+ let mut system = System :: new ( test_name) ;
961+ let stream_key = StreamKey :: make_meaningful_stream_key ( "I should die" ) ;
962+ let client_request_payload = ClientRequestPayload_0v1 {
963+ stream_key,
964+ sequenced_packet : SequencedPacket {
965+ data : b"I'm gonna kill you stream key" . to_vec ( ) ,
966+ sequence_number : 0 ,
967+ last_data : true ,
968+ } ,
969+ target_hostname : Some ( String :: from ( "3.4.5.6:80" ) ) ,
970+ target_port : HTTP_PORT ,
971+ protocol : ProxyProtocol :: HTTP ,
972+ originator_public_key : PublicKey :: new ( & b"brutal death" [ ..] ) ,
973+ } ;
974+ let package = ExpiredCoresPackage :: new (
975+ SocketAddr :: from_str ( "1.2.3.4:1234" ) . unwrap ( ) ,
976+ Some ( make_wallet ( "consuming" ) ) ,
977+ make_meaningless_route ( ) ,
978+ client_request_payload. into ( ) ,
979+ 0 ,
980+ ) ;
981+ let peer_addr = SocketAddr :: from_str ( "3.4.5.6:80" ) . unwrap ( ) ;
982+ let peer_actors = peer_actors_builder ( ) . build ( ) ;
983+ let mut subject = StreamHandlerPoolReal :: new (
984+ Box :: new ( ResolverWrapperMock :: new ( ) ) ,
985+ main_cryptde ( ) ,
986+ peer_actors. accountant . report_exit_service_provided . clone ( ) ,
987+ peer_actors. proxy_client_opt . unwrap ( ) . clone ( ) ,
988+ 100 ,
989+ 200 ,
990+ ) ;
991+ {
992+ let mut inner = subject. inner . lock ( ) . unwrap ( ) ;
993+ inner. logger = Logger :: new ( test_name) ;
994+ inner. stream_writer_channels . insert (
963995 stream_key,
964- sequenced_packet : SequencedPacket {
965- data : b"I'm gonna kill you stream key" . to_vec ( ) ,
966- sequence_number : 0 ,
967- last_data : true ,
996+ StreamSenders {
997+ writer_data : Box :: new ( SenderWrapperMock :: new ( peer_addr) ) ,
998+ reader_shutdown_tx : shutdown_tx,
968999 } ,
969- target_hostname : Some ( String :: from ( "3.4.5.6:80" ) ) ,
970- target_port : HTTP_PORT ,
971- protocol : ProxyProtocol :: HTTP ,
972- originator_public_key : PublicKey :: new ( & b"brutal death" [ ..] ) ,
973- } ;
974- let package = ExpiredCoresPackage :: new (
975- SocketAddr :: from_str ( "1.2.3.4:1234" ) . unwrap ( ) ,
976- Some ( make_wallet ( "consuming" ) ) ,
977- make_meaningless_route ( ) ,
978- client_request_payload. into ( ) ,
979- 0 ,
980- ) ;
981- let peer_addr = SocketAddr :: from_str ( "3.4.5.6:80" ) . unwrap ( ) ;
982- let peer_actors = peer_actors_builder ( ) . build ( ) ;
983- let mut subject = StreamHandlerPoolReal :: new (
984- Box :: new ( ResolverWrapperMock :: new ( ) ) ,
985- main_cryptde ( ) ,
986- peer_actors. accountant . report_exit_service_provided . clone ( ) ,
987- peer_actors. proxy_client_opt . unwrap ( ) . clone ( ) ,
988- 100 ,
989- 200 ,
9901000 ) ;
991- subject. stream_adder_rx = stream_adder_rx;
992- {
993- let mut inner = subject. inner . lock ( ) . unwrap ( ) ;
994- inner. logger = Logger :: new ( test_name) ;
995- inner. stream_writer_channels . insert (
996- stream_key,
997- StreamSenders {
998- writer_data : Box :: new ( SenderWrapperMock :: new ( peer_addr) ) ,
999- reader_shutdown_tx : shutdown_tx,
1000- } ,
1001- ) ;
1002- inner. establisher_factory = Box :: new ( StreamEstablisherFactoryReal {
1003- cryptde : main_cryptde ( ) ,
1004- stream_adder_tx,
1005- stream_killer_tx : unbounded ( ) . 0 ,
1006- proxy_client_subs : make_proxy_client_subs_from_recorder (
1007- & make_recorder ( ) . 0 . start ( ) ,
1008- ) ,
1009- logger : Logger :: new ( "test" ) ,
1010- } ) ;
1011- }
1001+ inner. establisher_factory = Box :: new ( StreamEstablisherFactoryReal {
1002+ cryptde : main_cryptde ( ) ,
1003+ stream_adder_tx,
1004+ stream_killer_tx : unbounded ( ) . 0 ,
1005+ proxy_client_subs : make_proxy_client_subs_from_recorder ( & make_recorder ( ) . 0 . start ( ) ) ,
1006+ logger : Logger :: new ( "test" ) ,
1007+ } ) ;
1008+ }
1009+ let paying_wallet = package. paying_wallet . clone ( ) ;
1010+ let payload = match package. payload {
1011+ MessageType :: ClientRequest ( vd) => vd
1012+ . extract ( & crate :: sub_lib:: migrations:: client_request_payload:: MIGRATIONS )
1013+ . unwrap ( ) ,
1014+ _ => panic ! ( "Expected MessageType::ClientRequest, got something else" ) ,
1015+ } ;
10121016
1013- // TODO: GH-800: Make sure that the stream_adder_tx sends something to the receiver
1017+ subject . process_package ( payload , paying_wallet ) ;
10141018
1015- run_process_package_in_actix ( subject, package) ;
1016- } ) ;
1017- let received = shutdown_rx. poll ( ) . unwrap ( ) ;
1018- assert_eq ! ( received, Async :: Ready ( Some ( ( ) ) ) ) ;
1019- TestLogHandler :: new ( ) . await_log_containing (
1020- & format ! (
1021- "DEBUG: {test_name}: Removing StreamWriter and Shutting down StreamReader \
1019+ let future_result = shutdown_rx. and_then ( |_| Ok ( ( ) ) ) ;
1020+ let future_with_timeout =
1021+ tokio:: timer:: Timeout :: new ( future_result, Duration :: from_secs ( 10 ) ) . into_future ( ) ;
1022+ assert ! ( system. block_on( future_with_timeout) . is_ok( ) ) ;
1023+ TestLogHandler :: new ( ) . exists_log_containing ( & format ! (
1024+ "DEBUG: {test_name}: Removing StreamWriter and Shutting down StreamReader \
10221025 for oUHoHuDKHjeWq+BJzBIqHpPFBQw to 3.4.5.6:80"
1023- ) ,
1024- 500 ,
1025- ) ;
1026+ ) ) ;
10261027 }
10271028
10281029 #[ test]
0 commit comments