summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Shepelev <temotor@gmail.com>2017-01-17 15:10:14 +0500
committerSergey Shepelev <temotor@gmail.com>2017-01-17 22:45:57 +0500
commitdeec3375238eee924420ce198e8fec438d59b246 (patch)
tree5eca225a4fcee630802e0212fc2f495db46c81d3
parenta41a74902e4723dc5a85c860961a1429e55f0944 (diff)
downloadeventlet-green-dns-test.tar.gz
tests: more concurrency in socket_resolve_greengreen-dns-test
Hope it would fix Travis failures.
-rw-r--r--tests/isolated/socket_resolve_green.py26
1 files changed, 12 insertions, 14 deletions
diff --git a/tests/isolated/socket_resolve_green.py b/tests/isolated/socket_resolve_green.py
index 636f0ae..b09e7a3 100644
--- a/tests/isolated/socket_resolve_green.py
+++ b/tests/isolated/socket_resolve_green.py
@@ -8,18 +8,18 @@ if __name__ == '__main__':
import dns.message
import dns.query
+ n = 10
+ delay = 0.01
+ addr_map = {'test-host{0}.'.format(i): '0.0.1.{0}'.format(i) for i in range(n)}
+
def slow_udp(q, *a, **kw):
- addr = '0.0.0.1'
- if 'host2' in str(q.question):
- addr = '0.0.0.2'
- if 'host3' in str(q.question):
- addr = '0.0.0.3'
+ addr = addr_map[q.question[0].name.to_text().decode()]
r = dns.message.make_response(q)
r.index = None
r.flags = 256
r.answer.append(dns.rrset.from_text(str(q.question[0].name), 60, 'IN', 'A', addr))
r.time = 0.001
- eventlet.sleep(0.1)
+ eventlet.sleep(delay)
return r
dns.query.udp = slow_udp
@@ -31,15 +31,13 @@ if __name__ == '__main__':
except socket.error as e:
print('name: {0} error: {1}'.format(name, e))
- pool = eventlet.GreenPool()
+ pool = eventlet.GreenPool(size=n + 1)
t1 = time.time()
- pool.spawn(fun, 'eventlet-test-host1.')
- pool.spawn(fun, 'eventlet-test-host2.')
- pool.spawn(fun, 'eventlet-test-host3.')
+ for name in addr_map:
+ pool.spawn(fun, name)
pool.waitall()
td = time.time() - t1
- assert 0.1 <= td < 0.3, 'Resolve time expected: ~0.1s, real: {0:.3f}'.format(td)
- assert results.get('eventlet-test-host1.') == '0.0.0.1'
- assert results.get('eventlet-test-host2.') == '0.0.0.2'
- assert results.get('eventlet-test-host3.') == '0.0.0.3'
+ fail_msg = 'Resolve time expected: ~{0:.3f}s, real: {1:.3f}'.format(delay, td)
+ assert delay <= td < delay * n, fail_msg
+ assert addr_map == results
print('pass')