@@ -19,3 +19,56 @@ describe("remote eval data", () => {
1919 } ) ;
2020 } ) ;
2121} ) ;
22+
23+ describe ( "remote eval max concurrency" , ( ) => {
24+ test . each ( [
25+ { evaluator : 5 , request : 2 , expected : 2 } ,
26+ { evaluator : 5 , request : 10 , expected : 5 } ,
27+ { evaluator : undefined , request : 3 , expected : 3 } ,
28+ { evaluator : 5 , request : null , expected : 5 } ,
29+ { evaluator : 5 , request : undefined , expected : 5 } ,
30+ { evaluator : undefined , request : undefined , expected : undefined } ,
31+ ] ) (
32+ "evaluator $evaluator with request $request resolves to $expected" ,
33+ ( { evaluator, request, expected } ) => {
34+ expect (
35+ _exportsForTestingOnly . resolveMaxConcurrency ( evaluator , request ) ,
36+ ) . toBe ( expected ) ;
37+ } ,
38+ ) ;
39+
40+ test ( "parses max_concurrency from the request body" , ( ) => {
41+ expect (
42+ evalBodySchema . parse ( {
43+ name : "remote-evaluator" ,
44+ data : { experiment_name : "source-experiment" } ,
45+ max_concurrency : 2 ,
46+ } ) . max_concurrency ,
47+ ) . toBe ( 2 ) ;
48+ } ) ;
49+
50+ test ( "rounds down a fractional max_concurrency" , ( ) => {
51+ expect (
52+ evalBodySchema . parse ( {
53+ name : "remote-evaluator" ,
54+ data : { experiment_name : "source-experiment" } ,
55+ max_concurrency : 2.5 ,
56+ } ) . max_concurrency ,
57+ ) . toBe ( 2 ) ;
58+ } ) ;
59+
60+ test . each ( [ 0 , - 1 , 0.5 , "2" ] ) (
61+ "rejects invalid max_concurrency %s" ,
62+ ( maxConcurrency ) => {
63+ const result = evalBodySchema . safeParse ( {
64+ name : "remote-evaluator" ,
65+ data : { experiment_name : "source-experiment" } ,
66+ max_concurrency : maxConcurrency ,
67+ } ) ;
68+ expect ( result . success ) . toBe ( false ) ;
69+ expect ( result . error ?. issues . map ( ( issue ) => issue . path ) ) . toEqual ( [
70+ [ "max_concurrency" ] ,
71+ ] ) ;
72+ } ,
73+ ) ;
74+ } ) ;
0 commit comments