38
38
from tensorboard .uploader .proto import export_service_pb2_grpc
39
39
from tensorboard .uploader import exporter as exporter_lib
40
40
from tensorboard .uploader import test_util
41
+ from tensorboard .uploader import util
41
42
from tensorboard .util import grpc_util
42
43
from tensorboard import test as tb_test
43
44
from tensorboard .compat .proto import summary_pb2
@@ -64,8 +65,20 @@ def test_e2e_success_case(self):
64
65
def stream_experiments (request , ** kwargs ):
65
66
del request # unused
66
67
self .assertEqual (kwargs ["metadata" ], grpc_util .version_metadata ())
67
- yield _make_experiments_response (["123" , "456" ])
68
- yield _make_experiments_response (["789" ])
68
+
69
+ response = export_service_pb2 .StreamExperimentsResponse ()
70
+ response .experiments .add (experiment_id = "123" )
71
+ response .experiments .add (experiment_id = "456" )
72
+ yield response
73
+
74
+ response = export_service_pb2 .StreamExperimentsResponse ()
75
+ experiment = response .experiments .add ()
76
+ experiment .experiment_id = "789"
77
+ experiment .name = "bert"
78
+ experiment .description = "ernie"
79
+ util .set_timestamp (experiment .create_time , 981173106 )
80
+ util .set_timestamp (experiment .update_time , 1015218367 )
81
+ yield response
69
82
70
83
def stream_experiment_data (request , ** kwargs ):
71
84
self .assertEqual (kwargs ["metadata" ], grpc_util .version_metadata ())
@@ -115,12 +128,17 @@ def outdir_files():
115
128
# The first iteration should request the list of experiments and
116
129
# data for one of them.
117
130
self .assertEqual (next (generator ), "123" )
131
+ expected_files .append (os .path .join ("experiment_123" , "metadata.json" ))
118
132
expected_files .append (os .path .join ("experiment_123" , "scalars.json" ))
119
133
self .assertCountEqual (expected_files , outdir_files ())
120
134
121
135
expected_eids_request = export_service_pb2 .StreamExperimentsRequest ()
122
136
expected_eids_request .read_timestamp .CopyFrom (start_time_pb )
123
137
expected_eids_request .limit = 2 ** 63 - 1
138
+ expected_eids_request .experiments_mask .create_time = True
139
+ expected_eids_request .experiments_mask .update_time = True
140
+ expected_eids_request .experiments_mask .name = True
141
+ expected_eids_request .experiments_mask .description = True
124
142
mock_api_client .StreamExperiments .assert_called_once_with (
125
143
expected_eids_request , metadata = grpc_util .version_metadata ()
126
144
)
@@ -137,6 +155,7 @@ def outdir_files():
137
155
mock_api_client .StreamExperimentData .reset_mock ()
138
156
self .assertEqual (next (generator ), "456" )
139
157
158
+ expected_files .append (os .path .join ("experiment_456" , "metadata.json" ))
140
159
expected_files .append (os .path .join ("experiment_456" , "scalars.json" ))
141
160
self .assertCountEqual (expected_files , outdir_files ())
142
161
mock_api_client .StreamExperiments .assert_not_called ()
@@ -147,6 +166,7 @@ def outdir_files():
147
166
148
167
# Again, request data for the next experiment; this experiment ID
149
168
# was in the second response batch in the list of IDs.
169
+ expected_files .append (os .path .join ("experiment_789" , "metadata.json" ))
150
170
expected_files .append (os .path .join ("experiment_789" , "scalars.json" ))
151
171
mock_api_client .StreamExperiments .reset_mock ()
152
172
mock_api_client .StreamExperimentData .reset_mock ()
@@ -192,6 +212,21 @@ def outdir_files():
192
212
self .assertEqual (points , {})
193
213
self .assertEqual (datum , {})
194
214
215
+ # Spot-check one of the metadata files.
216
+ with open (
217
+ os .path .join (outdir , "experiment_789" , "metadata.json" )
218
+ ) as infile :
219
+ metadata = json .load (infile )
220
+ self .assertEqual (
221
+ metadata ,
222
+ {
223
+ "name" : "bert" ,
224
+ "description" : "ernie" ,
225
+ "create_time" : "2001-02-03T04:05:06Z" ,
226
+ "update_time" : "2002-03-04T05:06:07Z" ,
227
+ },
228
+ )
229
+
195
230
def test_rejects_dangerous_experiment_ids (self ):
196
231
mock_api_client = self ._create_mock_api_client ()
197
232
0 commit comments