@@ -324,80 +324,22 @@ mod tests {
324324 use super :: * ;
325325 use tonic:: Code ;
326326
327- use crate :: commit:: { ScalarValue , TimeSeries } ;
328- use crate :: data_compat;
329- use crate :: proto:: tensorboard as pb;
330- use crate :: reservoir:: StageReservoir ;
331- use crate :: types:: { Run , Step , Tag , WallTime } ;
332-
333- /// Creates a commit with some test data.
334- fn sample_commit ( ) -> Commit {
335- let commit = Commit :: new ( ) ;
336-
337- let mut runs = commit. runs . write ( ) . unwrap ( ) ;
338-
339- fn scalar_series ( points : Vec < ( Step , WallTime , f32 ) > ) -> TimeSeries < ScalarValue > {
340- use pb:: summary:: value:: Value :: SimpleValue ;
341- let mut ts = commit:: TimeSeries :: new (
342- data_compat:: SummaryValue ( Box :: new ( SimpleValue ( 0.0 ) ) ) . initial_metadata ( None ) ,
343- ) ;
344- let mut rsv = StageReservoir :: new ( points. len ( ) ) ;
345- for ( step, wall_time, value) in points {
346- rsv. offer ( step, ( wall_time, Ok ( commit:: ScalarValue ( value) ) ) ) ;
347- }
348- rsv. commit ( & mut ts. basin ) ;
349- ts
350- }
351-
352- let mut train = runs
353- . entry ( Run ( "train" . to_string ( ) ) )
354- . or_default ( )
355- . write ( )
356- . unwrap ( ) ;
357- train. start_time = Some ( WallTime :: new ( 1234.0 ) . unwrap ( ) ) ;
358- train. scalars . insert (
359- Tag ( "xent" . to_string ( ) ) ,
360- scalar_series ( vec ! [
361- ( Step ( 0 ) , WallTime :: new( 1235.0 ) . unwrap( ) , 0.5 ) ,
362- ( Step ( 1 ) , WallTime :: new( 1236.0 ) . unwrap( ) , 0.25 ) ,
363- ( Step ( 2 ) , WallTime :: new( 1237.0 ) . unwrap( ) , 0.125 ) ,
364- ] ) ,
365- ) ;
366- drop ( train) ;
367-
368- let mut test = runs
369- . entry ( Run ( "test" . to_string ( ) ) )
370- . or_default ( )
371- . write ( )
372- . unwrap ( ) ;
373- test. start_time = Some ( WallTime :: new ( 6234.0 ) . unwrap ( ) ) ;
374- test. scalars . insert (
375- Tag ( "accuracy" . to_string ( ) ) ,
376- scalar_series ( vec ! [
377- ( Step ( 0 ) , WallTime :: new( 6235.0 ) . unwrap( ) , 0.125 ) ,
378- ( Step ( 1 ) , WallTime :: new( 6236.0 ) . unwrap( ) , 0.25 ) ,
379- ( Step ( 2 ) , WallTime :: new( 6237.0 ) . unwrap( ) , 0.5 ) ,
380- ] ) ,
381- ) ;
382- drop ( test) ;
383-
384- // An run with no start time or data: should not show up in results.
385- runs. entry ( Run ( "empty" . to_string ( ) ) ) . or_default ( ) ;
386-
387- drop ( runs) ;
388- commit
389- }
327+ use crate :: commit:: test_data:: CommitBuilder ;
328+ use crate :: types:: { Run , Step , Tag } ;
390329
391- fn sample_handler ( ) -> DataProviderHandler {
330+ fn sample_handler ( commit : Commit ) -> DataProviderHandler {
392331 DataProviderHandler {
393332 // Leak the commit object, since the Tonic server must have only 'static references.
394- commit : Box :: leak ( Box :: new ( sample_commit ( ) ) ) ,
333+ commit : Box :: leak ( Box :: new ( commit ) ) ,
395334 }
396335 }
397336
398337 #[ tokio:: test]
399338 async fn test_list_plugins ( ) {
400- let handler = sample_handler ( ) ;
339+ let commit = CommitBuilder :: new ( )
340+ . scalars ( "train" , "xent" , |b| b. build ( ) )
341+ . build ( ) ;
342+ let handler = sample_handler ( commit) ;
401343 let req = Request :: new ( data:: ListPluginsRequest {
402344 experiment_id : "123" . to_string ( ) ,
403345 } ) ;
@@ -410,7 +352,14 @@ mod tests {
410352
411353 #[ tokio:: test]
412354 async fn test_list_runs ( ) {
413- let handler = sample_handler ( ) ;
355+ let commit = CommitBuilder :: new ( )
356+ . run ( "train" , Some ( 1234.0 ) )
357+ . run ( "test" , Some ( 6234.0 ) )
358+ . run ( "run_with_no_data" , None )
359+ . scalars ( "train" , "xent" , |mut b| b. wall_time_start ( 1235.0 ) . build ( ) )
360+ . scalars ( "test" , "acc" , |mut b| b. wall_time_start ( 6235.0 ) . build ( ) )
361+ . build ( ) ;
362+ let handler = sample_handler ( commit) ;
414363 let req = Request :: new ( data:: ListRunsRequest {
415364 experiment_id : "123" . to_string ( ) ,
416365 } ) ;
@@ -457,7 +406,18 @@ mod tests {
457406
458407 #[ tokio:: test]
459408 async fn test_list_scalars ( ) {
460- let handler = sample_handler ( ) ;
409+ let commit = CommitBuilder :: new ( )
410+ . run ( "train" , Some ( 1234.0 ) )
411+ . run ( "test" , Some ( 6234.0 ) )
412+ . run ( "run_with_no_data" , None )
413+ . scalars ( "train" , "xent" , |mut b| {
414+ b. wall_time_start ( 1235.0 ) . step_start ( 0 ) . len ( 3 ) . build ( )
415+ } )
416+ . scalars ( "test" , "accuracy" , |mut b| {
417+ b. wall_time_start ( 6235.0 ) . step_start ( 0 ) . len ( 3 ) . build ( )
418+ } )
419+ . build ( ) ;
420+ let handler = sample_handler ( commit) ;
461421 let req = Request :: new ( data:: ListScalarsRequest {
462422 experiment_id : "123" . to_string ( ) ,
463423 plugin_filter : Some ( data:: PluginFilter {
@@ -501,7 +461,17 @@ mod tests {
501461
502462 #[ tokio:: test]
503463 async fn test_read_scalars ( ) {
504- let handler = sample_handler ( ) ;
464+ let commit = CommitBuilder :: new ( )
465+ . scalars ( "train" , "xent" , |mut b| {
466+ b. len ( 3 )
467+ . wall_time_start ( 1235.0 )
468+ . step_start ( 0 )
469+ . eval ( |Step ( i) | 0.5f32 . powi ( i as i32 ) )
470+ . build ( )
471+ } )
472+ . scalars ( "test" , "xent" , |b| b. build ( ) )
473+ . build ( ) ;
474+ let handler = sample_handler ( commit) ;
505475 let req = Request :: new ( data:: ReadScalarsRequest {
506476 experiment_id : "123" . to_string ( ) ,
507477 plugin_filter : Some ( data:: PluginFilter {
@@ -527,12 +497,12 @@ mod tests {
527497 let xent_data = & train_run[ & Tag ( "xent" . to_string ( ) ) ] . data . as_ref ( ) . unwrap ( ) ;
528498 assert_eq ! ( xent_data. step, vec![ 0 , 1 , 2 ] ) ;
529499 assert_eq ! ( xent_data. wall_time, vec![ 1235.0 , 1236.0 , 1237.0 ] ) ;
530- assert_eq ! ( xent_data. value, vec![ 0.5 , 0.25 , 0.125 ] ) ;
500+ assert_eq ! ( xent_data. value, vec![ 1.0 , 0.5 , 0.25 ] ) ;
531501 }
532502
533503 #[ tokio:: test]
534504 async fn test_read_scalars_needs_downsample ( ) {
535- let handler = sample_handler ( ) ;
505+ let handler = sample_handler ( Commit :: default ( ) ) ;
536506 let req = Request :: new ( data:: ReadScalarsRequest {
537507 experiment_id : "123" . to_string ( ) ,
538508 plugin_filter : Some ( data:: PluginFilter {
@@ -550,7 +520,11 @@ mod tests {
550520
551521 #[ tokio:: test]
552522 async fn test_read_scalars_downsample_zero_okay ( ) {
553- let handler = sample_handler ( ) ;
523+ let commit = CommitBuilder :: new ( )
524+ . scalars ( "train" , "xent" , |b| b. build ( ) )
525+ . scalars ( "test" , "xent" , |b| b. build ( ) )
526+ . build ( ) ;
527+ let handler = sample_handler ( commit) ;
554528 let req = Request :: new ( data:: ReadScalarsRequest {
555529 experiment_id : "123" . to_string ( ) ,
556530 plugin_filter : Some ( data:: PluginFilter {
0 commit comments