summaryrefslogtreecommitdiff
path: root/lib/rs/test/src/bin/kitchen_sink_server.rs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rs/test/src/bin/kitchen_sink_server.rs')
-rw-r--r--lib/rs/test/src/bin/kitchen_sink_server.rs49
1 files changed, 38 insertions, 11 deletions
diff --git a/lib/rs/test/src/bin/kitchen_sink_server.rs b/lib/rs/test/src/bin/kitchen_sink_server.rs
index 8b910b3bf..ea571c686 100644
--- a/lib/rs/test/src/bin/kitchen_sink_server.rs
+++ b/lib/rs/test/src/bin/kitchen_sink_server.rs
@@ -16,6 +16,7 @@
// under the License.
use clap::{clap_app, value_t};
+use log::*;
use thrift;
use thrift::protocol::{
@@ -28,6 +29,7 @@ use thrift::transport::{
TWriteTransportFactory,
};
+use crate::Socket::{ListenAddress, UnixDomainSocket};
use kitchen_sink::base_one::Noodle;
use kitchen_sink::base_two::{
BrothType, Napkin, NapkinServiceSyncHandler, Ramen, RamenServiceSyncHandler,
@@ -42,6 +44,11 @@ use kitchen_sink::ultimate::{
FullMealServiceSyncHandler,
};
+enum Socket {
+ ListenAddress(String),
+ UnixDomainSocket(String),
+}
+
fn main() {
match run() {
Ok(()) => println!("kitchen sink server completed successfully"),
@@ -57,18 +64,29 @@ fn run() -> thrift::Result<()> {
(version: "0.1.0")
(author: "Apache Thrift Developers <dev@thrift.apache.org>")
(about: "Thrift Rust kitchen sink test server")
- (@arg port: --port +takes_value "port on which the test server listens")
+ (@arg port: --port +takes_value "Port on which the Thrift test server listens")
+ (@arg domain_socket: --("domain-socket") + takes_value "Unix Domain Socket on which the Thrift test server listens")
(@arg protocol: --protocol +takes_value "Thrift protocol implementation to use (\"binary\", \"compact\")")
(@arg service: --service +takes_value "Service type to contact (\"part\", \"full\", \"recursive\")")
)
.get_matches();
let port = value_t!(matches, "port", u16).unwrap_or(9090);
+ let domain_socket = matches.value_of("domain_socket");
let protocol = matches.value_of("protocol").unwrap_or("compact");
let service = matches.value_of("service").unwrap_or("part");
let listen_address = format!("127.0.0.1:{}", port);
- println!("binding to {}", listen_address);
+ let socket = match domain_socket {
+ None => {
+ info!("Server is binding to {}", listen_address);
+ Socket::ListenAddress(listen_address)
+ }
+ Some(domain_socket) => {
+ info!("Server is binding to {} (UDS)", domain_socket);
+ Socket::UnixDomainSocket(domain_socket.to_string())
+ }
+ };
let r_transport_factory = TFramedReadTransportFactory::new();
let w_transport_factory = TFramedWriteTransportFactory::new();
@@ -102,21 +120,21 @@ fn run() -> thrift::Result<()> {
// Since what I'm doing is uncommon I'm just going to duplicate the code
match &*service {
"part" => run_meal_server(
- &listen_address,
+ socket,
r_transport_factory,
i_protocol_factory,
w_transport_factory,
o_protocol_factory,
),
"full" => run_full_meal_server(
- &listen_address,
+ socket,
r_transport_factory,
i_protocol_factory,
w_transport_factory,
o_protocol_factory,
),
"recursive" => run_recursive_server(
- &listen_address,
+ socket,
r_transport_factory,
i_protocol_factory,
w_transport_factory,
@@ -127,7 +145,7 @@ fn run() -> thrift::Result<()> {
}
fn run_meal_server<RTF, IPF, WTF, OPF>(
- listen_address: &str,
+ socket: Socket,
r_transport_factory: RTF,
i_protocol_factory: IPF,
w_transport_factory: WTF,
@@ -149,11 +167,14 @@ where
1,
);
- server.listen(listen_address)
+ match socket {
+ ListenAddress(listen_address) => server.listen(listen_address),
+ UnixDomainSocket(s) => server.listen_uds(s),
+ }
}
fn run_full_meal_server<RTF, IPF, WTF, OPF>(
- listen_address: &str,
+ socket: Socket,
r_transport_factory: RTF,
i_protocol_factory: IPF,
w_transport_factory: WTF,
@@ -175,7 +196,10 @@ where
1,
);
- server.listen(listen_address)
+ match socket {
+ ListenAddress(listen_address) => server.listen(listen_address),
+ UnixDomainSocket(s) => server.listen_uds(s),
+ }
}
struct PartHandler;
@@ -267,7 +291,7 @@ fn napkin() -> Napkin {
}
fn run_recursive_server<RTF, IPF, WTF, OPF>(
- listen_address: &str,
+ socket: Socket,
r_transport_factory: RTF,
i_protocol_factory: IPF,
w_transport_factory: WTF,
@@ -289,7 +313,10 @@ where
1,
);
- server.listen(listen_address)
+ match socket {
+ ListenAddress(listen_address) => server.listen(listen_address),
+ UnixDomainSocket(s) => server.listen_uds(s),
+ }
}
struct RecursiveTestServerHandler;