@@ -591,6 +591,11 @@ def test_start_uploading_without_create_experiment_fails(self):
591
591
with self .assertRaisesRegex (RuntimeError , "call create_experiment()" ):
592
592
uploader .start_uploading ()
593
593
594
+ @parameterized .parameters (
595
+ {"nested_run_dir" : "" },
596
+ {"nested_run_dir" : "nested-dir/" },
597
+ {"nested_run_dir" : "double/nested-dir/" },
598
+ )
594
599
@patch .object (
595
600
uploader_utils .OnePlatformResourceManager ,
596
601
"get_run_resource_name" ,
@@ -599,7 +604,11 @@ def test_start_uploading_without_create_experiment_fails(self):
599
604
@patch .object (metadata , "_experiment_tracker" , autospec = True )
600
605
@patch .object (experiment_resources , "Experiment" , autospec = True )
601
606
def test_start_uploading_scalars (
602
- self , experiment_resources_mock , experiment_tracker_mock , run_resource_mock
607
+ self ,
608
+ experiment_resources_mock ,
609
+ experiment_tracker_mock ,
610
+ run_resource_mock ,
611
+ nested_run_dir ,
603
612
):
604
613
experiment_resources_mock .get .return_value = _TEST_EXPERIMENT_NAME
605
614
experiment_tracker_mock .set_experiment .return_value = _TEST_EXPERIMENT_NAME
@@ -628,21 +637,21 @@ def test_start_uploading_scalars(
628
637
mock_logdir_loader = mock .create_autospec (logdir_loader .LogdirLoader )
629
638
mock_logdir_loader .get_run_events .side_effect = [
630
639
{
631
- " run 1" : _apply_compat (
640
+ f" { nested_run_dir } run 1" : _apply_compat (
632
641
[_scalar_event ("1.1" , 5.0 ), _scalar_event ("1.2" , 5.0 )]
633
642
),
634
- " run 2" : _apply_compat (
643
+ f" { nested_run_dir } run 2" : _apply_compat (
635
644
[_scalar_event ("2.1" , 5.0 ), _scalar_event ("2.2" , 5.0 )]
636
645
),
637
646
},
638
647
{
639
- " run 3" : _apply_compat (
648
+ f" { nested_run_dir } run 3" : _apply_compat (
640
649
[_scalar_event ("3.1" , 5.0 ), _scalar_event ("3.2" , 5.0 )]
641
650
),
642
- " run 4" : _apply_compat (
651
+ f" { nested_run_dir } run 4" : _apply_compat (
643
652
[_scalar_event ("4.1" , 5.0 ), _scalar_event ("4.2" , 5.0 )]
644
653
),
645
- " run 5" : _apply_compat (
654
+ f" { nested_run_dir } run 5" : _apply_compat (
646
655
[_scalar_event ("5.1" , 5.0 ), _scalar_event ("5.2" , 5.0 )]
647
656
),
648
657
},
@@ -666,11 +675,20 @@ def test_start_uploading_scalars(
666
675
self .assertEqual (mock_tracker .blob_tracker .call_count , 0 )
667
676
668
677
@parameterized .parameters (
669
- {"existing_experiment" : None , "one_platform_run_name" : None },
670
- {"existing_experiment" : None , "one_platform_run_name" : "." },
678
+ {
679
+ "existing_experiment" : None ,
680
+ "one_platform_run_name" : None ,
681
+ "nested_run_dir" : "" ,
682
+ },
683
+ {
684
+ "existing_experiment" : None ,
685
+ "one_platform_run_name" : "." ,
686
+ "nested_run_dir" : "nested-dir/" ,
687
+ },
671
688
{
672
689
"existing_experiment" : _TEST_EXPERIMENT_NAME ,
673
690
"one_platform_run_name" : _TEST_ONE_PLATFORM_RUN_NAME ,
691
+ "nested_run_dir" : "double/nested-dir/" ,
674
692
},
675
693
)
676
694
@patch .object (
@@ -693,6 +711,7 @@ def test_start_uploading_scalars_one_shot(
693
711
run_resource_mock ,
694
712
existing_experiment ,
695
713
one_platform_run_name ,
714
+ nested_run_dir ,
696
715
):
697
716
"""Check that one-shot uploading stops without AbortUploadError."""
698
717
@@ -760,10 +779,10 @@ def batch_create_time_series(parent, requests):
760
779
mock_logdir_loader = mock .create_autospec (logdir_loader .LogdirLoader )
761
780
mock_logdir_loader .get_run_events .side_effect = [
762
781
{
763
- " run 1" : _apply_compat (
782
+ f" { nested_run_dir } run 1" : _apply_compat (
764
783
[_scalar_event ("tag_1.1" , 5.0 ), _scalar_event ("tag_1.2" , 5.0 )]
765
784
),
766
- " run 2" : _apply_compat (
785
+ f" { nested_run_dir } run 2" : _apply_compat (
767
786
[_scalar_event ("tag_2.1" , 5.0 ), _scalar_event ("tag_2.2" , 5.0 )]
768
787
),
769
788
},
@@ -772,10 +791,10 @@ def batch_create_time_series(parent, requests):
772
791
mock_logdir_loader_pre_create = mock .create_autospec (logdir_loader .LogdirLoader )
773
792
mock_logdir_loader_pre_create .get_run_events .side_effect = [
774
793
{
775
- " run 1" : _apply_compat (
794
+ f" { nested_run_dir } run 1" : _apply_compat (
776
795
[_scalar_event ("tag_1.1" , 5.0 ), _scalar_event ("tag_1.2" , 5.0 )]
777
796
),
778
- " run 2" : _apply_compat (
797
+ f" { nested_run_dir } run 2" : _apply_compat (
779
798
[_scalar_event ("tag_2.1" , 5.0 ), _scalar_event ("tag_2.2" , 5.0 )]
780
799
),
781
800
},
@@ -804,6 +823,52 @@ def batch_create_time_series(parent, requests):
804
823
self .assertEqual (mock_tracker .blob_tracker .call_count , 0 )
805
824
experiment_tracker_mock .set_experiment .assert_called_once ()
806
825
826
+ @parameterized .parameters (
827
+ {"nested_run_dir" : "" },
828
+ {"nested_run_dir" : "nested-dir/" },
829
+ {"nested_run_dir" : "double/nested-dir/" },
830
+ )
831
+ @patch .object (metadata , "_experiment_tracker" , autospec = True )
832
+ @patch .object (experiment_resources , "Experiment" , autospec = True )
833
+ def test_upload_nested_scalars_one_shot (
834
+ self ,
835
+ experiment_resources_mock ,
836
+ experiment_tracker_mock ,
837
+ nested_run_dir ,
838
+ ):
839
+ """Check that one-shot uploading stops without AbortUploadError."""
840
+
841
+ logdir = self .get_temp_dir ()
842
+ uploader = _create_uploader (
843
+ logdir = logdir ,
844
+ )
845
+ uploader .create_experiment ()
846
+
847
+ run_1 = f"{ nested_run_dir } run 1"
848
+ run_2 = f"{ nested_run_dir } run 2"
849
+
850
+ mock_dispatcher = mock .create_autospec (uploader_lib ._Dispatcher )
851
+ uploader ._dispatcher = mock_dispatcher
852
+ mock_logdir_loader = mock .create_autospec (logdir_loader .LogdirLoader )
853
+ mock_logdir_loader .get_run_events .side_effect = [
854
+ {
855
+ run_1 : _apply_compat (
856
+ [_scalar_event ("tag_1.1" , 5.0 ), _scalar_event ("tag_1.2" , 5.0 )]
857
+ ),
858
+ run_2 : _apply_compat (
859
+ [_scalar_event ("tag_2.1" , 5.0 ), _scalar_event ("tag_2.2" , 5.0 )]
860
+ ),
861
+ },
862
+ ]
863
+ with mock .patch .object (uploader , "_logdir_loader" , mock_logdir_loader ):
864
+ uploader ._upload_once ()
865
+
866
+ self .assertEqual (1 , mock_logdir_loader .get_run_events .call_count )
867
+ self .assertEqual (1 , mock_dispatcher .dispatch_requests .call_count )
868
+ run_to_events = mock_dispatcher .dispatch_requests .call_args [0 ][0 ]
869
+ self .assertIn (run_1 , run_to_events )
870
+ self .assertIn (run_2 , run_to_events )
871
+
807
872
@patch .object (metadata , "_experiment_tracker" , autospec = True )
808
873
@patch .object (experiment_resources , "Experiment" , autospec = True )
809
874
def test_upload_empty_logdir (
0 commit comments