@@ -80,7 +80,7 @@ impl<I: Ipc, T: IntegrationTest> Flow for TestBase<I, T> {
8080}
8181
8282use portus:: ipc:: chan:: Socket ;
83- use portus:: ipc:: { SingleBackendBuilder , Blocking } ;
83+ use portus:: ipc:: { Blocking , MultiBackendBuilder , SingleBackendBuilder } ;
8484use std;
8585use std:: thread;
8686
@@ -100,8 +100,27 @@ fn start_ccp<T: IntegrationTest + 'static + Send>(
100100 )
101101}
102102
103+ fn start_ccp_multi < T : IntegrationTest + ' static + Send > (
104+ sks : Vec < Socket < Blocking > > ,
105+ log : slog:: Logger ,
106+ tx : mpsc:: Sender < Result < ( ) , ( ) > > ,
107+ ) -> portus:: CCPHandle {
108+ let b = MultiBackendBuilder { socks : sks } ;
109+ portus:: spawn :: < Socket < Blocking > , TestBaseConfig < T > , MultiBackendBuilder < Socket < Blocking > > > (
110+ b,
111+ portus:: Config {
112+ logger : Some ( log. clone ( ) ) ,
113+ } ,
114+ TestBaseConfig ( tx, Some ( log. clone ( ) ) , PhantomData :: < T > ) ,
115+ )
116+ }
117+
103118// Runs a specific intergration test
104- pub fn run_test < T : IntegrationTest + ' static + Send > ( log : slog:: Logger , num_flows : usize ) {
119+ pub fn run_test < T : IntegrationTest + ' static + Send > (
120+ log : slog:: Logger ,
121+ num_flows : usize ,
122+ use_multi : bool ,
123+ ) {
105124 let ( tx, rx) = std:: sync:: mpsc:: channel ( ) ;
106125
107126 // Channel for IPC
@@ -113,14 +132,17 @@ pub fn run_test<T: IntegrationTest + 'static + Send>(log: slog::Logger, num_flow
113132 let ( dp_handle, conn_handles) = mock_datapath:: start ( dp_log, num_flows, s2, r1) ;
114133
115134 let sk = Socket :: < Blocking > :: new ( s1, r2) ;
116- let ccp_handle = start_ccp :: < T > ( sk, log. clone ( ) , tx) ;
135+ let ccp_handle = match use_multi {
136+ false => start_ccp :: < T > ( sk, log. clone ( ) , tx) ,
137+ true => start_ccp_multi :: < T > ( vec ! [ sk] , log. clone ( ) , tx) ,
138+ } ;
117139
118140 // wait for program to finish
119141 let wait_for_done = thread:: spawn ( move || {
120142 rx. recv_timeout ( std:: time:: Duration :: from_secs ( 20 ) )
121143 . unwrap ( )
122144 . unwrap ( ) ;
123- ccp_handle. kill ( ) ; // causes backend to stop iterating
145+ ccp_handle. kill ( ) ;
124146 ccp_handle. wait ( ) . unwrap ( ) ;
125147
126148 for h in conn_handles {
0 commit comments