def test_tensorboard_binary_environment_variable(self): if os.name == "nt": # TODO(@wchargin): This could in principle work on Windows. self.skipTest("Requires a POSIX shell for the stub script.") tempdir = tempfile.mkdtemp() filepath = os.path.join(tempdir, "tensorbad") program = textwrap.dedent(r""" #!/bin/sh printf >&2 'tensorbad: fatal: something bad happened\n' printf 'tensorbad: also some stdout\n' exit 77 """.lstrip()) with open(filepath, "w") as outfile: outfile.write(program) os.chmod(filepath, 0o777) environ = {"TENSORBOARD_BINARY": filepath} environ_patcher = mock.patch.dict(os.environ, environ) environ_patcher.start() self.addCleanup(environ_patcher.stop) start_result = manager.start(["--logdir=./logs", "--port=0"]) self.assertIsInstance(start_result, manager.StartFailed) self.assertEqual( start_result, manager.StartFailed( exit_code=77, stderr="tensorbad: fatal: something bad happened\n", stdout="tensorbad: also some stdout\n", ), ) self.assertEqual(manager.get_all(), [])
def test_exit_failure(self): if os.name == "nt": # TODO(@wchargin): This could in principle work on Windows. self.skipTest("Requires a POSIX shell for the stub script.") self._stub_tensorboard( name="fail-with-77", program=textwrap.dedent( r""" #!/bin/sh printf >&2 'fatal: something bad happened\n' printf 'also some stdout\n' exit 77 """.lstrip(), ), ) start_result = manager.start(["--logdir=./logs", "--port=0"]) self.assertIsInstance(start_result, manager.StartFailed) self.assertEqual( start_result, manager.StartFailed( exit_code=77, stderr="fatal: something bad happened\n", stdout="also some stdout\n", ), ) self.assertEqual(manager.get_all(), [])
def test_exit_success(self): # TensorBoard exiting with success but not writing the info file is # still a failure to launch. if os.name == "nt": # TODO(@wchargin): This could in principle work on Windows. self.skipTest("Requires a POSIX shell for the stub script.") self._stub_tensorboard( name="fail-with-0", program=textwrap.dedent( r""" #!/bin/sh printf >&2 'info: something good happened\n' printf 'also some standard output\n' exit 0 """.lstrip(), ), ) start_result = manager.start(["--logdir=./logs", "--port=0"]) self.assertIsInstance(start_result, manager.StartFailed) self.assertEqual( start_result, manager.StartFailed( exit_code=0, stderr="info: something good happened\n", stdout="also some standard output\n", ), ) self.assertEqual(manager.get_all(), [])
def test_failure_unreadable_stdio(self): if os.name == "nt": # TODO(@wchargin): This could in principle work on Windows. self.skipTest("Requires a POSIX shell for the stub script.") self._stub_tensorboard( name="fail-and-nuke-tmp", program=textwrap.dedent( r""" #!/bin/sh rm -r %s exit 22 """ % pipes.quote(self.tmproot), ).lstrip(), ) start_result = manager.start(["--logdir=./logs", "--port=0"]) self.assertIsInstance(start_result, manager.StartFailed) self.assertEqual( start_result, manager.StartFailed(exit_code=22, stderr=None, stdout=None,), ) self.assertEqual(manager.get_all(), [])