示例#1
0
 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))
示例#2
0
    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="")
示例#3
0
    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="")
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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)