@@ -2777,34 +2777,48 @@ mod tests {
2777
2777
. unwrap_or ( 5 )
2778
2778
} ) ;
2779
2779
2780
- static CONCURRENT_TEST_SEMAPHORE : Lazy < Arc < Semaphore > > =
2781
- Lazy :: new ( || Arc :: new ( Semaphore :: new ( * MAX_CONCURRENT_TESTS ) ) ) ;
2782
-
2783
- struct LimitedCoordinator < T > {
2784
- _permit : OwnedSemaphorePermit ,
2785
- coordinator : Coordinator < T > ,
2780
+ struct CoordinatorFactory {
2781
+ semaphore : Arc < Semaphore > ,
2786
2782
}
2787
2783
2788
- impl < T > LimitedCoordinator < T >
2789
- where
2790
- T : Backend ,
2791
- {
2792
- async fn with < F > ( f : F ) -> Self
2784
+ impl CoordinatorFactory {
2785
+ pub fn new ( maximum : usize ) -> Self {
2786
+ Self {
2787
+ semaphore : Arc :: new ( Semaphore :: new ( maximum) ) ,
2788
+ }
2789
+ }
2790
+
2791
+ pub async fn build < B > ( & self , backend : B ) -> LimitedCoordinator < B >
2793
2792
where
2794
- F : FnOnce ( ) -> Coordinator < T > ,
2793
+ B : Backend ,
2795
2794
{
2796
- let semaphore = CONCURRENT_TEST_SEMAPHORE . clone ( ) ;
2795
+ let semaphore = self . semaphore . clone ( ) ;
2797
2796
let permit = semaphore
2798
2797
. acquire_owned ( )
2799
2798
. await
2800
2799
. expect ( "Unable to acquire permit" ) ;
2801
- let coordinator = f ( ) ;
2802
- Self {
2800
+
2801
+ let coordinator = Coordinator :: new ( backend) ;
2802
+
2803
+ LimitedCoordinator {
2803
2804
_permit : permit,
2804
2805
coordinator,
2805
2806
}
2806
2807
}
2808
+ }
2809
+
2810
+ static TEST_COORDINATOR_FACTORY : Lazy < CoordinatorFactory > =
2811
+ Lazy :: new ( || CoordinatorFactory :: new ( * MAX_CONCURRENT_TESTS ) ) ;
2807
2812
2813
+ struct LimitedCoordinator < T > {
2814
+ _permit : OwnedSemaphorePermit ,
2815
+ coordinator : Coordinator < T > ,
2816
+ }
2817
+
2818
+ impl < T > LimitedCoordinator < T >
2819
+ where
2820
+ T : Backend ,
2821
+ {
2808
2822
async fn shutdown ( self ) -> super :: Result < T , super :: Error > {
2809
2823
self . coordinator . shutdown ( ) . await
2810
2824
}
@@ -2825,11 +2839,11 @@ mod tests {
2825
2839
}
2826
2840
2827
2841
async fn new_coordinator_test ( ) -> LimitedCoordinator < impl Backend > {
2828
- LimitedCoordinator :: with ( || Coordinator :: new ( TestBackend :: new ( ) ) ) . await
2842
+ TEST_COORDINATOR_FACTORY . build ( TestBackend :: new ( ) ) . await
2829
2843
}
2830
2844
2831
2845
async fn new_coordinator_docker ( ) -> LimitedCoordinator < impl Backend > {
2832
- LimitedCoordinator :: with ( || Coordinator :: new_docker ( ) ) . await
2846
+ TEST_COORDINATOR_FACTORY . build ( DockerBackend ( ( ) ) ) . await
2833
2847
}
2834
2848
2835
2849
async fn new_coordinator ( ) -> LimitedCoordinator < impl Backend > {
0 commit comments