def execute(self, server_info, channel): api_client = export_service_pb2_grpc.TensorBoardExporterServiceStub( channel) fieldmask = experiment_pb2.ExperimentMask( name=True, description=True, create_time=True, update_time=True, num_runs=True, num_tags=True, num_scalars=True, total_tensor_bytes=True, total_blob_bytes=True, ) gen = exporter_lib.list_experiments(api_client, fieldmask=fieldmask) count = 0 if self.json: formatter = formatters.JsonFormatter() else: formatter = formatters.ReadableFormatter() for experiment in gen: count += 1 experiment_id = experiment.experiment_id url = server_info_lib.experiment_url(server_info, experiment_id) print(formatter.format_experiment(experiment, url)) sys.stdout.flush() if not count: sys.stderr.write( "No experiments. Use `tensorboard dev upload` to get started.\n" ) else: sys.stderr.write("Total: %d experiment(s)\n" % count) sys.stderr.flush()
def testJsonFormatterWithEmptyNameAndDescription(self): experiment = experiment_pb2.Experiment( experiment_id="deadbeef", # NOTE(cais): `name` and `description` are missing here. num_runs=2, num_tags=4, num_scalars=60, total_blob_bytes=1234, ) util.set_timestamp(experiment.create_time, 981173106) util.set_timestamp(experiment.update_time, 1015218367) experiment_url = "http://tensorboard.dev/deadbeef" formatter = formatters.JsonFormatter() output = self._format(formatter, experiment, experiment_url) expected_lines = [ "{", ' "url": "http://tensorboard.dev/deadbeef",', ' "name": "",', ' "description": "",', ' "id": "deadbeef",', ' "created": "2001-02-03T04:05:06Z",', ' "updated": "2002-03-04T05:06:07Z",', ' "runs": 2,', ' "tags": 4,', ' "scalars": 60,', ' "binary_object_bytes": 1234', "}", ] self.assertEqual(output.split("\n"), expected_lines)