def execute(self, server_info, channel): api_client = write_service_pb2_grpc.TensorBoardWriterServiceStub( channel) experiment_id = self.experiment_id _die_if_bad_experiment_name(self.name) _die_if_bad_experiment_description(self.description) if not experiment_id: raise base_plugin.FlagsError( "Must specify a non-empty experiment ID to modify.") try: uploader_lib.update_experiment_metadata( api_client, experiment_id, name=self.name, description=self.description, ) except uploader_lib.ExperimentNotFoundError: _die("No such experiment %s. Either it never existed or it has " "already been deleted." % experiment_id) except uploader_lib.PermissionDeniedError: _die("Cannot modify experiment %s because it is owned by a " "different user." % experiment_id) except uploader_lib.InvalidArgumentError as e: _die("Server cannot modify experiment as requested: %s" % e) except grpc.RpcError as e: _die("Internal error modifying experiment: %s" % e) logging.info("Modified experiment %s.", experiment_id) if self.name is not None: logging.info("Set name to %r", self.name) if self.description is not None: logging.info("Set description to %r", repr(self.description))
def test_unauthorized(self): mock_client = _create_mock_client() error = test_util.grpc_error(grpc.StatusCode.PERMISSION_DENIED, "nope") mock_client.UpdateExperiment.side_effect = error with self.assertRaises(uploader_lib.PermissionDeniedError): uploader_lib.update_experiment_metadata(mock_client, "123", name="")
def test_not_found(self): mock_client = _create_mock_client() error = test_util.grpc_error(grpc.StatusCode.NOT_FOUND, "nope") mock_client.UpdateExperiment.side_effect = error with self.assertRaises(uploader_lib.ExperimentNotFoundError): uploader_lib.update_experiment_metadata(mock_client, "123", name="")
def test_internal_error(self): mock_client = _create_mock_client() error = test_util.grpc_error(grpc.StatusCode.INTERNAL, "travesty") mock_client.UpdateExperiment.side_effect = error with self.assertRaises(grpc.RpcError) as cm: uploader_lib.update_experiment_metadata(mock_client, "123", name="") msg = str(cm.exception) self.assertIn("travesty", msg)
def test_invalid_argument(self): mock_client = _create_mock_client() error = test_util.grpc_error( grpc.StatusCode.INVALID_ARGUMENT, "too many" ) mock_client.UpdateExperiment.side_effect = error with self.assertRaises(uploader_lib.InvalidArgumentError) as cm: uploader_lib.update_experiment_metadata(mock_client, "123", name="") msg = str(cm.exception) self.assertIn("too many", msg)
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)