Skip to content

Commit 31db7c4

Browse files
committed
GH-800: all tests in stream_handler_pool.rs are passing
1 parent 54040ae commit 31db7c4

File tree

1 file changed

+62
-61
lines changed

1 file changed

+62
-61
lines changed

node/src/proxy_client/stream_handler_pool.rs

Lines changed: 62 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)