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)
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()