def testUploadIntentWithExperimentUrlCallback(self):
        """Test the upload intent with a callback."""
        server_info = server_info_pb2.ServerInfoResponse()
        server_info.url_format.template = "https://tensorboard.dev/x/{}"
        server_info.url_format.id_placeholder = "{}"

        stub = dry_run_stubs.DryRunTensorBoardWriterStub()
        stub.CreateExperiment = (
            lambda req, **__: write_service_pb2.CreateExperimentResponse(
                experiment_id="test_experiment_id", url="this URL is ignored"
            )
        )

        expected_url = "https://tensorboard.dev/x/test_experiment_id"

        with mock.patch.object(
            dry_run_stubs,
            "DryRunTensorBoardWriterStub",
            wraps=lambda: stub,
        ), mock.patch.object(sys.stdout, "write"):
            mock_channel = mock.Mock()
            mock_experiment_url_callback = mock.Mock()
            intent = uploader_subcommand.UploadIntent(
                self.get_temp_dir(),
                dry_run=True,
                one_shot=True,
                experiment_url_callback=mock_experiment_url_callback,
            )
            intent.execute(server_info, mock_channel)
        mock_experiment_url_callback.assert_called_once_with(expected_url)
Beispiel #2
0
 def execute(self, server_info, channel):
     if self.dry_run:
         api_client = dry_run_stubs.DryRunTensorBoardWriterStub()
     else:
         api_client = write_service_pb2_grpc.TensorBoardWriterServiceStub(
             channel
         )
     _die_if_bad_experiment_name(self.name)
     _die_if_bad_experiment_description(self.description)
     uploader = uploader_lib.TensorBoardUploader(
         api_client,
         self.logdir,
         allowed_plugins=server_info_lib.allowed_plugins(server_info),
         upload_limits=server_info_lib.upload_limits(server_info),
         name=self.name,
         description=self.description,
         verbosity=self.verbosity,
         one_shot=self.one_shot,
     )
     if self.one_shot and not os.path.isdir(self.logdir):
         print("%s: No such directory." % self.logdir)
         print(
             "User specified `one_shot` mode with an unavailable "
             "logdir. Exiting without creating an experiment."
         )
         return
     experiment_id = uploader.create_experiment()
     url = server_info_lib.experiment_url(server_info, experiment_id)
     if self.experiment_url_callback is not None:
         self.experiment_url_callback(url)
     print(
         "Upload started and will continue reading any new data as it's "
         "added to the logdir.\n\nTo stop uploading, press Ctrl-C."
     )
     if self.dry_run:
         print(
             "\n** This is a dry run. "
             "No data will be sent to tensorboard.dev. **\n"
         )
     else:
         print("\nView your TensorBoard live at: %s\n" % url)
     interrupted = False
     try:
         uploader.start_uploading()
     except uploader_lib.ExperimentNotFoundError:
         print("Experiment was deleted; uploading has been cancelled")
         return
     except KeyboardInterrupt:
         interrupted = True
     finally:
         end_message = "\n"
         if interrupted:
             end_message += "Interrupted."
         else:
             end_message += "Done."
         if not self.dry_run:
             end_message += " View your TensorBoard at %s" % url
         sys.stdout.write(end_message + "\n")
         sys.stdout.flush()
 def execute(self, server_info, channel):
     if self.dry_run:
         api_client = dry_run_stubs.DryRunTensorBoardWriterStub()
     else:
         api_client = write_service_pb2_grpc.TensorBoardWriterServiceStub(
             channel
         )
     _die_if_bad_experiment_name(self.name)
     _die_if_bad_experiment_description(self.description)
     uploader = uploader_lib.TensorBoardUploader(
         api_client,
         self.logdir,
         allowed_plugins=server_info_lib.allowed_plugins(server_info),
         upload_limits=server_info_lib.upload_limits(server_info),
         name=self.name,
         description=self.description,
         verbosity=self.verbosity,
         one_shot=self.one_shot,
     )
     experiment_id = uploader.create_experiment()
     url = server_info_lib.experiment_url(server_info, experiment_id)
     print(
         "Upload started and will continue reading any new data as it's added"
     )
     print("to the logdir. To stop uploading, press Ctrl-C.")
     if self.dry_run:
         print(
             "\n** This is a dry run. "
             "No data will be sent to tensorboard.dev. **\n"
         )
     else:
         print("View your TensorBoard live at: %s" % url)
     try:
         uploader.start_uploading()
     except uploader_lib.ExperimentNotFoundError:
         print("Experiment was deleted; uploading has been cancelled")
         return
     except KeyboardInterrupt:
         pass
     finally:
         if not self.dry_run:
             print()
             print("Done! View your TensorBoard at %s" % url)
 def setUp(self):
     super(DryRunTensorBoardWriterServicerTest, self).setUp()
     self._stub = dry_run_stubs.DryRunTensorBoardWriterStub()