Merge lp:~mandel/ubuntuone-dev-tools/darwin-cleanup into lp:ubuntuone-dev-tools

Proposed by Manuel de la Peña on 2012-06-08
Status: Merged
Approved by: Manuel de la Peña on 2012-06-08
Approved revision: 77
Merged at revision: 76
Proposed branch: lp:~mandel/ubuntuone-dev-tools/darwin-cleanup
Merge into: lp:ubuntuone-dev-tools
Diff against target: 144 lines (+42/-17)
4 files modified
bin/u1lint (+2/-2)
ubuntuone/devtools/testcases/__init__.py (+1/-1)
ubuntuone/devtools/testcases/tests/test_txsocketserver.py (+1/-1)
ubuntuone/devtools/testcases/txsocketserver.py (+38/-13)
To merge this branch: bzr merge lp:~mandel/ubuntuone-dev-tools/darwin-cleanup
Reviewer Review Type Date Requested Status
Alejandro J. Cura (community) Approve on 2012-06-08
dobey (community) 2012-06-08 Approve on 2012-06-08
Review via email: mp+109363@code.launchpad.net

Commit Message

- Ensure that we only wait for the deferred when a protocol was created server side (LP: #1009408).

Description of the Change

- Ensure that we only wait for the deferred when a protocol was created server side (LP: #1009408).

To post a comment you must log in.
dobey (dobey) wrote :

Looks ok to me.

review: Approve
Alejandro J. Cura (alecu) wrote :

"Facotry" -> "Factory"

review: Approve
77. By Manuel de la Peña on 2012-06-08

Fix typo.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bin/u1lint'
2--- bin/u1lint 2012-06-05 21:33:33 +0000
3+++ bin/u1lint 2012-06-08 14:19:19 +0000
4@@ -143,7 +143,7 @@
5 config.read([PYLINTRC])
6
7 # pylint: disable=E1103
8- return [os.path.join(SRCDIR, item) for item in \
9+ return [os.path.join(SRCDIR, item) for item in
10 config.get("MASTER", "ignore").split(",")]
11 except (TypeError, ConfigParser.NoOptionError):
12 return []
13@@ -213,7 +213,7 @@
14 failed = False
15 ignored = _read_pylintrc_ignored()
16 if options.ignored:
17- ignored.extend([os.path.join(SRCDIR, item) for item in \
18+ ignored.extend([os.path.join(SRCDIR, item) for item in
19 map(str.strip, options.ignored.split(','))])
20
21 if os.environ.get('USE_PYFLAKES'):
22
23=== modified file 'ubuntuone/devtools/testcases/__init__.py'
24--- ubuntuone/devtools/testcases/__init__.py 2012-05-14 14:29:25 +0000
25+++ ubuntuone/devtools/testcases/__init__.py 2012-06-08 14:19:19 +0000
26@@ -63,7 +63,7 @@
27
28 def decorator(test_item):
29 """Decorate the test so that it is skipped."""
30- if not (isinstance(test_item, type) and\
31+ if not (isinstance(test_item, type) and
32 issubclass(test_item, TestCase)):
33
34 @wraps(test_item)
35
36=== modified file 'ubuntuone/devtools/testcases/tests/test_txsocketserver.py'
37--- ubuntuone/devtools/testcases/tests/test_txsocketserver.py 2012-04-26 14:16:33 +0000
38+++ ubuntuone/devtools/testcases/tests/test_txsocketserver.py 2012-06-08 14:19:19 +0000
39@@ -289,7 +289,7 @@
40 def test_deferreds(self):
41 """Test that the deferreds are not broken."""
42 self.assertFalse(self.client_disconnected.called)
43- self.assertFalse(self.server_disconnected.called)
44+ self.assertEqual(None, self.server_disconnected)
45
46 @defer.inlineCallbacks
47 def test_addition(self):
48
49=== modified file 'ubuntuone/devtools/testcases/txsocketserver.py'
50--- ubuntuone/devtools/testcases/txsocketserver.py 2012-05-22 14:19:19 +0000
51+++ ubuntuone/devtools/testcases/txsocketserver.py 2012-06-08 14:19:19 +0000
52@@ -37,7 +37,7 @@
53
54 from ubuntuone.devtools.testcases import BaseTestCase
55
56-# no init method + twisted common warnings
57+# no init method + twisted common warnings
58 # pylint: disable=W0232, C0103, E1101
59
60
61@@ -64,6 +64,25 @@
62 return ServerTidyProtocol
63
64
65+def server_factory_factory(cls):
66+ """Factory that creates special types of factories for tests."""
67+
68+ if cls is None:
69+ cls = protocol.ServerFactory
70+
71+ class TidyServerFactory(cls):
72+ """A tidy factory."""
73+
74+ testserver_on_connection_lost = None
75+
76+ def buildProtocol(self, addr):
77+ prot = cls.buildProtocol(self, addr)
78+ self.testserver_on_connection_lost = defer.Deferred()
79+ return prot
80+
81+ return TidyServerFactory
82+
83+
84 def client_protocol_factory(cls):
85 """Factory to create tidy protocols."""
86
87@@ -75,13 +94,13 @@
88
89 def connectionLost(self, *a):
90 """Connection list."""
91- # pylint: disable=W0212
92- if (self.factory._disconnecting
93- and self.factory.testserver_on_connection_lost is not None
94- and not self.factory.testserver_on_connection_lost.called):
95- self.factory.testserver_on_connection_lost.callback(self)
96- # pylint: enable=W0212
97 cls.connectionLost(self, *a)
98+ # pylint: disable=W0212
99+ if (self.factory._disconnecting
100+ and self.factory.testserver_on_connection_lost is not None
101+ and not self.factory.testserver_on_connection_lost.called):
102+ self.factory.testserver_on_connection_lost.callback(self)
103+ # pylint: enable=W0212
104
105 return ClientTidyProtocol
106
107@@ -120,9 +139,9 @@
108 def listen_server(self, server_class, *args, **kwargs):
109 """Start a server in a random port."""
110 from twisted.internet import reactor
111- self.server_factory = server_class(*args, **kwargs)
112+ tidy_class = server_factory_factory(server_class)
113+ self.server_factory = tidy_class(*args, **kwargs)
114 self.server_factory._disconnecting = False
115- self.server_factory.testserver_on_connection_lost = defer.Deferred()
116 self.server_factory.protocol = server_protocol_factory(
117 self.server_factory.protocol)
118 endpoint = endpoints.serverFromString(reactor,
119@@ -161,15 +180,21 @@
120 # clean client and server
121 self.server_factory._disconnecting = True
122 self.client_factory._disconnecting = True
123+ d = defer.maybeDeferred(self.listener.stopListening)
124 self.connector.transport.loseConnection()
125- d = defer.maybeDeferred(self.listener.stopListening)
126- return defer.gatherResults([d,
127- self.client_factory.testserver_on_connection_lost,
128- self.server_factory.testserver_on_connection_lost])
129+ if self.server_factory.testserver_on_connection_lost:
130+ return defer.gatherResults([d,
131+ self.client_factory.testserver_on_connection_lost,
132+ self.server_factory.testserver_on_connection_lost])
133+ else:
134+ return defer.gatherResults([d,
135+ self.client_factory.testserver_on_connection_lost])
136 if self.listener:
137 # just clean the server since there is no client
138+ # pylint: disable=W0201
139 self.server_factory._disconnecting = True
140 return defer.maybeDeferred(self.listener.stopListening)
141+ # pylint: enable=W0201
142
143
144 class TidyTCPServer(TidySocketServer):

Subscribers

People subscribed via source and target branches

to all changes: