def testReadableFormatterWithNonUtcTimezone(self): experiment = experiment_pb2.Experiment( experiment_id="deadbeef", name="A name for the experiment", description="A description for the experiment", 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.ReadableFormatter() output = self._format( formatter, experiment, experiment_url, timezone="America/Los_Angeles", ) expected_lines = [ "http://tensorboard.dev/deadbeef", "\tName A name for the experiment", "\tDescription A description for the experiment", "\tId deadbeef", "\tCreated 2001-02-02 20:05:06", "\tUpdated 2002-03-03 21:06:07", "\tRuns 2", "\tTags 4", "\tScalars 60", "\tBinary object bytes 1234", ] self.assertEqual(output.split("\n"), expected_lines)
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)
def testReadableFormatterWithEmptyNameAndDescription(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.ReadableFormatter() output = self._format(formatter, experiment, experiment_url) expected_lines = [ "http://tensorboard.dev/deadbeef", "\tName [No Name]", "\tDescription [No Description]", "\tId deadbeef", "\tCreated 2001-02-03 04:05:06", "\tUpdated 2002-03-04 05:06:07", "\tRuns 2", "\tTags 4", "\tScalars 60", "\tBinary object bytes 1234", ] self.assertEqual(output.split("\n"), expected_lines)
def test_experiments_only(self): mock_api_client = _create_mock_api_client() def stream_experiments(request, **kwargs): del request # unused response = export_service_pb2.StreamExperimentsResponse() response.experiments.add(experiment_id="789", name="one") response.experiments.add(experiment_id="012", description="two") yield response mock_api_client.StreamExperiments = mock.Mock(wraps=stream_experiments) gen = exporter_lib.list_experiments(mock_api_client) mock_api_client.StreamExperiments.assert_not_called() expected = [ experiment_pb2.Experiment(experiment_id="789", name="one"), experiment_pb2.Experiment(experiment_id="012", description="two"), ] self.assertEqual(list(gen), expected)
def test_mixed_experiments_and_ids(self): mock_api_client = _create_mock_api_client() def stream_experiments(request, **kwargs): del request # unused # Should ignore `experiment_ids` in the presence of `experiments`. response = export_service_pb2.StreamExperimentsResponse() response.experiment_ids.append("999") # will be omitted response.experiments.add(experiment_id="789") response.experiments.add(experiment_id="012") yield response mock_api_client.StreamExperiments = mock.Mock(wraps=stream_experiments) gen = exporter_lib.list_experiments(mock_api_client) mock_api_client.StreamExperiments.assert_not_called() expected = [ experiment_pb2.Experiment(experiment_id="789"), experiment_pb2.Experiment(experiment_id="012"), ] self.assertEqual(list(gen), expected)
def test_success(self): mock_client = _create_mock_client() new_name = "a new name" response = write_service_pb2.UpdateExperimentResponse() mock_client.UpdateExperiment.return_value = response uploader_lib.update_experiment_metadata(mock_client, "123", name=new_name) expected_request = write_service_pb2.UpdateExperimentRequest( experiment=experiment_pb2.Experiment(experiment_id="123", name=new_name), experiment_mask=experiment_pb2.ExperimentMask(name=True), ) mock_client.UpdateExperiment.assert_called_once() (args, _) = mock_client.UpdateExperiment.call_args self.assertEqual(args[0], expected_request)