@@ -24,6 +24,7 @@ fn test_query_no_tasks() {
2424 ) ;
2525 assert_eq ! ( r. single_node_workers_per_query, vec![ 0 ] ) ;
2626 assert ! ( r. multi_node_allocations. is_empty( ) ) ;
27+ assert ! ( !r. single_node_leftovers) ;
2728}
2829
2930#[ test]
@@ -53,6 +54,7 @@ fn test_query_enough_workers() {
5354 ) ;
5455 assert_eq ! ( r. single_node_workers_per_query, vec![ 0 ] ) ;
5556 assert ! ( r. multi_node_allocations. is_empty( ) ) ;
57+ assert ! ( !r. single_node_leftovers) ;
5658}
5759
5860#[ test]
@@ -91,6 +93,7 @@ fn test_query_no_enough_workers1() {
9193 ) ;
9294 assert_eq ! ( r. single_node_workers_per_query, vec![ 0 , 1 ] ) ;
9395 assert ! ( r. multi_node_allocations. is_empty( ) ) ;
96+ assert ! ( !r. single_node_leftovers) ;
9497}
9598
9699#[ test]
@@ -124,6 +127,7 @@ fn test_query_enough_workers2() {
124127 ) ;
125128 assert_eq ! ( r. single_node_workers_per_query, vec![ 0 , 0 ] ) ;
126129 assert ! ( r. multi_node_allocations. is_empty( ) ) ;
130+ assert ! ( !r. single_node_leftovers) ;
127131}
128132
129133#[ test]
@@ -158,6 +162,7 @@ fn test_query_not_enough_workers3() {
158162 ) ;
159163 assert_eq ! ( r. single_node_workers_per_query, vec![ 1 , 0 ] ) ;
160164 assert ! ( r. multi_node_allocations. is_empty( ) ) ;
165+ assert ! ( !r. single_node_leftovers) ;
161166}
162167
163168#[ test]
@@ -199,6 +204,7 @@ fn test_query_many_workers_needed() {
199204 ) ;
200205 assert_eq ! ( r. single_node_workers_per_query, vec![ 5 , 1 , 26 ] ) ;
201206 assert ! ( r. multi_node_allocations. is_empty( ) ) ;
207+ assert ! ( !r. single_node_leftovers) ;
202208}
203209
204210#[ test]
@@ -255,6 +261,7 @@ fn test_query_multi_node_tasks() {
255261 assert_eq ! ( r. multi_node_allocations[ 2 ] . worker_type, 1 ) ;
256262 assert_eq ! ( r. multi_node_allocations[ 2 ] . worker_per_allocation, 6 ) ;
257263 assert_eq ! ( r. multi_node_allocations[ 2 ] . max_allocations, 10 ) ;
264+ assert ! ( !r. single_node_leftovers) ;
258265}
259266
260267#[ test]
@@ -276,6 +283,7 @@ fn test_query_multi_node_time_limit() {
276283 } ] ,
277284 ) ;
278285 assert_eq ! ( r. multi_node_allocations. len( ) , allocs) ;
286+ assert ! ( !r. single_node_leftovers) ;
279287 }
280288}
281289
@@ -466,3 +474,28 @@ fn test_query_min_time1() {
466474 assert_eq ! ( r. single_node_workers_per_query, vec![ 1 ] ) ;
467475 assert ! ( r. multi_node_allocations. is_empty( ) ) ;
468476}
477+
478+ #[ test]
479+ fn test_query_leftovers ( ) {
480+ for ( n, leftovers) in [ ( 1 , false ) , ( 4 , false ) , ( 8 , false ) , ( 9 , true ) , ( 12 , true ) ] {
481+ let mut rt = TestEnv :: new ( ) ;
482+
483+ rt. new_workers ( & [ 4 ] ) ;
484+ for i in 1 ..=n {
485+ rt. new_task ( TaskBuilder :: new ( i) . cpus_compact ( 1 ) ) ;
486+ }
487+ rt. schedule ( ) ;
488+
489+ let r = compute_new_worker_query (
490+ rt. core ( ) ,
491+ & [ WorkerTypeQuery {
492+ descriptor : ResourceDescriptor :: simple ( 2 ) ,
493+ time_limit : None ,
494+ max_sn_workers : 2 ,
495+ max_workers_per_allocation : 1 ,
496+ min_utilization : 0.0 ,
497+ } ] ,
498+ ) ;
499+ assert_eq ! ( r. single_node_leftovers, leftovers) ;
500+ }
501+ }
0 commit comments