mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-01-04 04:04:10 +00:00
Fix test_non_numeric_pid (and put it in a better place too)
This commit is contained in:
parent
bb495b6dc5
commit
a363c8de67
@ -182,7 +182,7 @@ class DaemonizeTahoeNodePlugin(object):
|
|||||||
return DaemonizeTheRealService(self.nodetype, self.basedir, so)
|
return DaemonizeTheRealService(self.nodetype, self.basedir, so)
|
||||||
|
|
||||||
|
|
||||||
def run(config):
|
def run(config, runApp=twistd.runApp):
|
||||||
"""
|
"""
|
||||||
Runs a Tahoe-LAFS node in the foreground.
|
Runs a Tahoe-LAFS node in the foreground.
|
||||||
|
|
||||||
@ -202,10 +202,7 @@ def run(config):
|
|||||||
if not nodetype:
|
if not nodetype:
|
||||||
print("%s is not a recognizable node directory" % quoted_basedir, file=err)
|
print("%s is not a recognizable node directory" % quoted_basedir, file=err)
|
||||||
return 1
|
return 1
|
||||||
# Now prepare to turn into a twistd process. This os.chdir is the point
|
twistd_args = ["--nodaemon", "--rundir", basedir]
|
||||||
# of no return.
|
|
||||||
os.chdir(basedir)
|
|
||||||
twistd_args = ["--nodaemon"]
|
|
||||||
twistd_args.extend(config.twistd_args)
|
twistd_args.extend(config.twistd_args)
|
||||||
twistd_args.append("DaemonizeTahoeNode") # point at our DaemonizeTahoeNodePlugin
|
twistd_args.append("DaemonizeTahoeNode") # point at our DaemonizeTahoeNodePlugin
|
||||||
|
|
||||||
@ -229,5 +226,5 @@ def run(config):
|
|||||||
|
|
||||||
# We always pass --nodaemon so twistd.runApp does not daemonize.
|
# We always pass --nodaemon so twistd.runApp does not daemonize.
|
||||||
print("running node in %s" % (quoted_basedir,), file=out)
|
print("running node in %s" % (quoted_basedir,), file=out)
|
||||||
twistd.runApp(twistd_config)
|
runApp(twistd_config)
|
||||||
return 0
|
return 0
|
||||||
|
@ -2,10 +2,8 @@ import os.path
|
|||||||
from six.moves import cStringIO as StringIO
|
from six.moves import cStringIO as StringIO
|
||||||
import urllib
|
import urllib
|
||||||
import re
|
import re
|
||||||
from mock import patch
|
|
||||||
|
|
||||||
from twisted.trial import unittest
|
from twisted.trial import unittest
|
||||||
from twisted.python.filepath import FilePath
|
|
||||||
from twisted.internet.testing import (
|
from twisted.internet.testing import (
|
||||||
MemoryReactor,
|
MemoryReactor,
|
||||||
)
|
)
|
||||||
@ -1308,30 +1306,3 @@ class Options(ReallyEqualMixin, unittest.TestCase):
|
|||||||
["--node-directory=there", "run", some_twistd_option])
|
["--node-directory=there", "run", some_twistd_option])
|
||||||
self.failUnlessRaises(usage.UsageError, self.parse,
|
self.failUnlessRaises(usage.UsageError, self.parse,
|
||||||
["run", "--basedir=here", some_twistd_option])
|
["run", "--basedir=here", some_twistd_option])
|
||||||
|
|
||||||
|
|
||||||
class Run(unittest.TestCase):
|
|
||||||
|
|
||||||
@patch('allmydata.scripts.tahoe_run.os.chdir')
|
|
||||||
@patch('allmydata.scripts.tahoe_run.twistd')
|
|
||||||
def test_non_numeric_pid(self, mock_twistd, chdir):
|
|
||||||
"""
|
|
||||||
If the pidfile exists but does not contain a numeric value, a complaint to
|
|
||||||
this effect is written to stderr.
|
|
||||||
"""
|
|
||||||
basedir = FilePath(self.mktemp().decode("ascii"))
|
|
||||||
basedir.makedirs()
|
|
||||||
basedir.child(u"twistd.pid").setContent(b"foo")
|
|
||||||
basedir.child(u"tahoe-client.tac").setContent(b"")
|
|
||||||
|
|
||||||
config = tahoe_run.RunOptions()
|
|
||||||
config.stdout = StringIO()
|
|
||||||
config.stderr = StringIO()
|
|
||||||
config['basedir'] = basedir.path
|
|
||||||
config.twistd_args = []
|
|
||||||
|
|
||||||
result_code = tahoe_run.run(config)
|
|
||||||
self.assertIn("invalid PID file", config.stderr.getvalue())
|
|
||||||
self.assertTrue(len(mock_twistd.mock_calls), 1)
|
|
||||||
self.assertEqual(mock_twistd.mock_calls[0][0], 'runApp')
|
|
||||||
self.assertEqual(0, result_code)
|
|
||||||
|
@ -9,6 +9,7 @@ from six.moves import (
|
|||||||
from testtools.matchers import (
|
from testtools.matchers import (
|
||||||
Contains,
|
Contains,
|
||||||
Equals,
|
Equals,
|
||||||
|
HasLength,
|
||||||
)
|
)
|
||||||
|
|
||||||
from twisted.python.filepath import (
|
from twisted.python.filepath import (
|
||||||
@ -23,6 +24,8 @@ from twisted.internet.test.modulehelpers import (
|
|||||||
|
|
||||||
from ...scripts.tahoe_run import (
|
from ...scripts.tahoe_run import (
|
||||||
DaemonizeTheRealService,
|
DaemonizeTheRealService,
|
||||||
|
RunOptions,
|
||||||
|
run,
|
||||||
)
|
)
|
||||||
|
|
||||||
from ...scripts.runner import (
|
from ...scripts.runner import (
|
||||||
@ -125,3 +128,39 @@ class DaemonizeTheRealServiceTests(SyncTestCase):
|
|||||||
""",
|
""",
|
||||||
"Privacy requested",
|
"Privacy requested",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RunTests(SyncTestCase):
|
||||||
|
"""
|
||||||
|
Tests for ``run``.
|
||||||
|
"""
|
||||||
|
def test_non_numeric_pid(self):
|
||||||
|
"""
|
||||||
|
If the pidfile exists but does not contain a numeric value, a complaint to
|
||||||
|
this effect is written to stderr.
|
||||||
|
"""
|
||||||
|
basedir = FilePath(self.mktemp().decode("ascii"))
|
||||||
|
basedir.makedirs()
|
||||||
|
basedir.child(u"twistd.pid").setContent(b"foo")
|
||||||
|
basedir.child(u"tahoe-client.tac").setContent(b"")
|
||||||
|
|
||||||
|
config = RunOptions()
|
||||||
|
config.stdout = StringIO()
|
||||||
|
config.stderr = StringIO()
|
||||||
|
config['basedir'] = basedir.path
|
||||||
|
config.twistd_args = []
|
||||||
|
|
||||||
|
runs = []
|
||||||
|
result_code = run(config, runApp=runs.append)
|
||||||
|
self.assertThat(
|
||||||
|
config.stderr.getvalue(),
|
||||||
|
Contains("found invalid PID file in"),
|
||||||
|
)
|
||||||
|
self.assertThat(
|
||||||
|
runs,
|
||||||
|
HasLength(1),
|
||||||
|
)
|
||||||
|
self.assertThat(
|
||||||
|
result_code,
|
||||||
|
Equals(0),
|
||||||
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user