switch to pytest_twisted

This commit is contained in:
Jean-Paul Calderone 2019-02-05 11:03:35 -05:00
parent e57449e055
commit f905d80760
5 changed files with 37 additions and 36 deletions

View File

@ -16,6 +16,7 @@ from twisted.internet.error import (
) )
import pytest import pytest
import pytest_twisted
from util import _CollectOutputProtocol from util import _CollectOutputProtocol
from util import _MagicTextProtocol from util import _MagicTextProtocol
@ -91,7 +92,7 @@ def flog_gatherer(reactor, temp_dir, flog_binary, request):
gather_dir, gather_dir,
) )
) )
pytest.blockon(out_protocol.done) pytest_twisted.blockon(out_protocol.done)
twistd_protocol = _MagicTextProtocol("Gatherer waiting at") twistd_protocol = _MagicTextProtocol("Gatherer waiting at")
twistd_process = reactor.spawnProcess( twistd_process = reactor.spawnProcess(
@ -103,12 +104,12 @@ def flog_gatherer(reactor, temp_dir, flog_binary, request):
), ),
path=gather_dir, path=gather_dir,
) )
pytest.blockon(twistd_protocol.magic_seen) pytest_twisted.blockon(twistd_protocol.magic_seen)
def cleanup(): def cleanup():
try: try:
twistd_process.signalProcess('TERM') twistd_process.signalProcess('TERM')
pytest.blockon(twistd_protocol.exited) pytest_twisted.blockon(twistd_protocol.exited)
except ProcessExitedAlready: except ProcessExitedAlready:
pass pass
@ -125,7 +126,7 @@ def flog_gatherer(reactor, temp_dir, flog_binary, request):
'flogtool', 'dump', join(temp_dir, 'flog_gather', flogs[0]) 'flogtool', 'dump', join(temp_dir, 'flog_gather', flogs[0])
), ),
) )
pytest.blockon(flog_protocol.done) pytest_twisted.blockon(flog_protocol.done)
request.addfinalizer(cleanup) request.addfinalizer(cleanup)
@ -160,7 +161,7 @@ log_gatherer.furl = {log_furl}
intro_dir, intro_dir,
), ),
) )
pytest.blockon(done_proto.done) pytest_twisted.blockon(done_proto.done)
# over-write the config file with our stuff # over-write the config file with our stuff
with open(join(intro_dir, 'tahoe.cfg'), 'w') as f: with open(join(intro_dir, 'tahoe.cfg'), 'w') as f:
@ -183,12 +184,12 @@ log_gatherer.furl = {log_furl}
def cleanup(): def cleanup():
try: try:
process.signalProcess('TERM') process.signalProcess('TERM')
pytest.blockon(protocol.exited) pytest_twisted.blockon(protocol.exited)
except ProcessExitedAlready: except ProcessExitedAlready:
pass pass
request.addfinalizer(cleanup) request.addfinalizer(cleanup)
pytest.blockon(protocol.magic_seen) pytest_twisted.blockon(protocol.magic_seen)
return process return process
@ -228,7 +229,7 @@ log_gatherer.furl = {log_furl}
intro_dir, intro_dir,
), ),
) )
pytest.blockon(done_proto.done) pytest_twisted.blockon(done_proto.done)
# over-write the config file with our stuff # over-write the config file with our stuff
with open(join(intro_dir, 'tahoe.cfg'), 'w') as f: with open(join(intro_dir, 'tahoe.cfg'), 'w') as f:
@ -251,12 +252,12 @@ log_gatherer.furl = {log_furl}
def cleanup(): def cleanup():
try: try:
process.signalProcess('TERM') process.signalProcess('TERM')
pytest.blockon(protocol.exited) pytest_twisted.blockon(protocol.exited)
except ProcessExitedAlready: except ProcessExitedAlready:
pass pass
request.addfinalizer(cleanup) request.addfinalizer(cleanup)
pytest.blockon(protocol.magic_seen) pytest_twisted.blockon(protocol.magic_seen)
return process return process
@ -278,14 +279,14 @@ def storage_nodes(reactor, temp_dir, introducer, introducer_furl, flog_gatherer,
name = 'node{}'.format(x) name = 'node{}'.format(x)
# tub_port = 9900 + x # tub_port = 9900 + x
nodes.append( nodes.append(
pytest.blockon( pytest_twisted.blockon(
_create_node( _create_node(
reactor, request, temp_dir, introducer_furl, flog_gatherer, name, reactor, request, temp_dir, introducer_furl, flog_gatherer, name,
web_port=None, storage=True, web_port=None, storage=True,
) )
) )
) )
#nodes = pytest.blockon(DeferredList(nodes)) #nodes = pytest_twisted.blockon(DeferredList(nodes))
return nodes return nodes
@ -296,7 +297,7 @@ def alice(reactor, temp_dir, introducer_furl, flog_gatherer, storage_nodes, requ
except OSError: except OSError:
pass pass
process = pytest.blockon( process = pytest_twisted.blockon(
_create_node( _create_node(
reactor, request, temp_dir, introducer_furl, flog_gatherer, "alice", reactor, request, temp_dir, introducer_furl, flog_gatherer, "alice",
web_port="tcp:9980:interface=localhost", web_port="tcp:9980:interface=localhost",
@ -313,7 +314,7 @@ def bob(reactor, temp_dir, introducer_furl, flog_gatherer, storage_nodes, reques
except OSError: except OSError:
pass pass
process = pytest.blockon( process = pytest_twisted.blockon(
_create_node( _create_node(
reactor, request, temp_dir, introducer_furl, flog_gatherer, "bob", reactor, request, temp_dir, introducer_furl, flog_gatherer, "bob",
web_port="tcp:9981:interface=localhost", web_port="tcp:9981:interface=localhost",
@ -343,7 +344,7 @@ def alice_invite(reactor, alice, temp_dir, request):
join(temp_dir, 'magic-alice'), join(temp_dir, 'magic-alice'),
] ]
) )
pytest.blockon(proto.done) pytest_twisted.blockon(proto.done)
proto = _CollectOutputProtocol() proto = _CollectOutputProtocol()
reactor.spawnProcess( reactor.spawnProcess(
@ -355,7 +356,7 @@ def alice_invite(reactor, alice, temp_dir, request):
'--basedir', node_dir, 'magik:', 'bob', '--basedir', node_dir, 'magik:', 'bob',
] ]
) )
pytest.blockon(proto.done) pytest_twisted.blockon(proto.done)
invite = proto.output.getvalue() invite = proto.output.getvalue()
print("invite from alice", invite) print("invite from alice", invite)
@ -363,11 +364,11 @@ def alice_invite(reactor, alice, temp_dir, request):
# crappy for the tests -- can we fix it in magic-folder?) # crappy for the tests -- can we fix it in magic-folder?)
try: try:
alice.signalProcess('TERM') alice.signalProcess('TERM')
pytest.blockon(alice.exited) pytest_twisted.blockon(alice.exited)
except ProcessExitedAlready: except ProcessExitedAlready:
pass pass
magic_text = 'Completed initial Magic Folder scan successfully' magic_text = 'Completed initial Magic Folder scan successfully'
pytest.blockon(_run_node(reactor, node_dir, request, magic_text)) pytest_twisted.blockon(_run_node(reactor, node_dir, request, magic_text))
return invite return invite
@ -388,19 +389,19 @@ def magic_folder(reactor, alice_invite, alice, bob, temp_dir, request):
join(temp_dir, 'magic-bob'), join(temp_dir, 'magic-bob'),
] ]
) )
pytest.blockon(proto.done) pytest_twisted.blockon(proto.done)
# before magic-folder works, we have to stop and restart (this is # before magic-folder works, we have to stop and restart (this is
# crappy for the tests -- can we fix it in magic-folder?) # crappy for the tests -- can we fix it in magic-folder?)
try: try:
print("Sending TERM to Bob") print("Sending TERM to Bob")
bob.signalProcess('TERM') bob.signalProcess('TERM')
pytest.blockon(bob.exited) pytest_twisted.blockon(bob.exited)
except ProcessExitedAlready: except ProcessExitedAlready:
pass pass
magic_text = 'Completed initial Magic Folder scan successfully' magic_text = 'Completed initial Magic Folder scan successfully'
pytest.blockon(_run_node(reactor, bob_dir, request, magic_text)) pytest_twisted.blockon(_run_node(reactor, bob_dir, request, magic_text))
return (join(temp_dir, 'magic-alice'), join(temp_dir, 'magic-bob')) return (join(temp_dir, 'magic-alice'), join(temp_dir, 'magic-bob'))
@ -429,7 +430,7 @@ def chutney(reactor, temp_dir):
chutney_dir, chutney_dir,
) )
) )
pytest.blockon(proto.done) pytest_twisted.blockon(proto.done)
return chutney_dir return chutney_dir
@ -454,7 +455,7 @@ def tor_network(reactor, temp_dir, chutney, request):
path=join(chutney_dir), path=join(chutney_dir),
env={"PYTHONPATH": join(chutney_dir, "lib")}, env={"PYTHONPATH": join(chutney_dir, "lib")},
) )
pytest.blockon(proto.done) pytest_twisted.blockon(proto.done)
proto = _DumpOutputProtocol(None) proto = _DumpOutputProtocol(None)
reactor.spawnProcess( reactor.spawnProcess(
@ -467,7 +468,7 @@ def tor_network(reactor, temp_dir, chutney, request):
path=join(chutney_dir), path=join(chutney_dir),
env={"PYTHONPATH": join(chutney_dir, "lib")}, env={"PYTHONPATH": join(chutney_dir, "lib")},
) )
pytest.blockon(proto.done) pytest_twisted.blockon(proto.done)
# print some useful stuff # print some useful stuff
proto = _CollectOutputProtocol() proto = _CollectOutputProtocol()
@ -482,7 +483,7 @@ def tor_network(reactor, temp_dir, chutney, request):
env={"PYTHONPATH": join(chutney_dir, "lib")}, env={"PYTHONPATH": join(chutney_dir, "lib")},
) )
try: try:
pytest.blockon(proto.done) pytest_twisted.blockon(proto.done)
except ProcessTerminated: except ProcessTerminated:
print("Chutney.TorNet status failed (continuing):") print("Chutney.TorNet status failed (continuing):")
print(proto.output.getvalue()) print(proto.output.getvalue())
@ -500,7 +501,7 @@ def tor_network(reactor, temp_dir, chutney, request):
path=join(chutney_dir), path=join(chutney_dir),
env={"PYTHONPATH": join(chutney_dir, "lib")}, env={"PYTHONPATH": join(chutney_dir, "lib")},
) )
pytest.blockon(proto.done) pytest_twisted.blockon(proto.done)
request.addfinalizer(cleanup) request.addfinalizer(cleanup)
return chut return chut

View File

@ -1,12 +1,12 @@
import sys import sys
import time import time
import shutil import shutil
from os import mkdir, unlink, listdir, utime from os import mkdir, unlink, utime
from os.path import join, exists, getmtime from os.path import join, exists, getmtime
import util import util
import pytest import pytest_twisted
# tests converted from check_magicfolder_smoke.py # tests converted from check_magicfolder_smoke.py
@ -280,7 +280,7 @@ def _bob_conflicts_alice_await_conflicts(name, alice_dir, bob_dir):
assert open(alice_conflict, 'r').read() == "this is bob's {}\n".format(name) assert open(alice_conflict, 'r').read() == "this is bob's {}\n".format(name)
@pytest.inlineCallbacks @pytest_twisted.inlineCallbacks
def test_edmond_uploads_then_restarts(reactor, request, temp_dir, introducer_furl, flog_gatherer, storage_nodes): def test_edmond_uploads_then_restarts(reactor, request, temp_dir, introducer_furl, flog_gatherer, storage_nodes):
""" """
ticket 2880: if a magic-folder client uploads something, then ticket 2880: if a magic-folder client uploads something, then

View File

@ -6,10 +6,10 @@ from twisted.internet.error import ProcessTerminated
import util import util
import pytest import pytest_twisted
@pytest.inlineCallbacks @pytest_twisted.inlineCallbacks
def test_upload_immutable(reactor, temp_dir, introducer_furl, flog_gatherer, storage_nodes, request): def test_upload_immutable(reactor, temp_dir, introducer_furl, flog_gatherer, storage_nodes, request):
yield util._create_node( yield util._create_node(

View File

@ -10,13 +10,13 @@ from StringIO import StringIO
from twisted.internet.protocol import ProcessProtocol from twisted.internet.protocol import ProcessProtocol
from twisted.internet.error import ProcessExitedAlready, ProcessDone from twisted.internet.error import ProcessExitedAlready, ProcessDone
from twisted.internet.defer import inlineCallbacks, Deferred from twisted.internet.defer import inlineCallbacks, Deferred
import pytest import pytest_twisted
import util import util
# see "conftest.py" for the fixtures (e.g. "magic_folder") # see "conftest.py" for the fixtures (e.g. "magic_folder")
@pytest.inlineCallbacks @pytest_twisted.inlineCallbacks
def test_onion_service_storage(reactor, request, temp_dir, flog_gatherer, tor_network, tor_introducer_furl): def test_onion_service_storage(reactor, request, temp_dir, flog_gatherer, tor_network, tor_introducer_furl):
yield _create_anonymous_node(reactor, 'carol', 8008, request, temp_dir, flog_gatherer, tor_network, tor_introducer_furl) yield _create_anonymous_node(reactor, 'carol', 8008, request, temp_dir, flog_gatherer, tor_network, tor_introducer_furl)
yield _create_anonymous_node(reactor, 'dave', 8009, request, temp_dir, flog_gatherer, tor_network, tor_introducer_furl) yield _create_anonymous_node(reactor, 'dave', 8009, request, temp_dir, flog_gatherer, tor_network, tor_introducer_furl)
@ -62,7 +62,7 @@ def test_onion_service_storage(reactor, request, temp_dir, flog_gatherer, tor_ne
assert dave_got == open(gold_path, 'r').read().strip() assert dave_got == open(gold_path, 'r').read().strip()
@pytest.inlineCallbacks @pytest_twisted.inlineCallbacks
def _create_anonymous_node(reactor, name, control_port, request, temp_dir, flog_gatherer, tor_network, introducer_furl): def _create_anonymous_node(reactor, name, control_port, request, temp_dir, flog_gatherer, tor_network, introducer_furl):
node_dir = join(temp_dir, name) node_dir = join(temp_dir, name)
web_port = "tcp:{}:interface=localhost".format(control_port + 2000) web_port = "tcp:{}:interface=localhost".format(control_port + 2000)

View File

@ -14,7 +14,7 @@ from allmydata.util.configutil import (
write_config, write_config,
) )
import pytest import pytest_twisted
class _ProcessExitedProtocol(ProcessProtocol): class _ProcessExitedProtocol(ProcessProtocol):
@ -127,7 +127,7 @@ def _run_node(reactor, node_dir, request, magic_text):
def cleanup(): def cleanup():
try: try:
process.signalProcess('TERM') process.signalProcess('TERM')
pytest.blockon(protocol.exited) pytest_twisted.blockon(protocol.exited)
except ProcessExitedAlready: except ProcessExitedAlready:
pass pass
request.addfinalizer(cleanup) request.addfinalizer(cleanup)