예제 #1
0
    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(), [])
예제 #2
0
 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(), [])
예제 #3
0
 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(), [])
예제 #4
0
 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(), [])