From 206c15ea32e05ae98827d00626a101e33a7bec70 Mon Sep 17 00:00:00 2001
From: zanee <zanee>
Date: Wed, 28 Apr 2010 16:03:40 +0000
Subject: [PATCH 4/5] Test for reset fixes refcount bug
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
tests/test_reset.py | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 74 insertions(+), 0 deletions(-)
create mode 100644 tests/test_reset.py
diff --git a/tests/test_reset.py b/tests/test_reset.py
new file mode 100644
index 0000000..c350d17
--- /dev/null
+++ b/tests/test_reset.py
@@ -0,0 +1,74 @@
+#!/usr/bin/python
+
+import sys
+import pycurl
+
+saw_error = 1
+
+def main():
+ global saw_error
+
+ pycurl.global_init(pycurl.GLOBAL_DEFAULT)
+
+ outf = file("/dev/null", "rb+")
+ cm = pycurl.CurlMulti()
+
+ # Set multi handle's options
+ cm.setopt(pycurl.M_PIPELINING, 1)
+
+ eh = pycurl.Curl()
+
+ for x in range(1, 20):
+
+ eh.setopt(pycurl.WRITEDATA, outf)
+ eh.setopt(pycurl.URL, sys.argv[1])
+ cm.add_handle(eh)
+
+ while 1:
+ ret, active_handles = cm.perform()
+ if ret != pycurl.E_CALL_MULTI_PERFORM:
+ break
+
+ while active_handles:
+ ret = cm.select(1.0)
+ if ret == -1:
+ continue
+ while 1:
+ ret, active_handles = cm.perform()
+ if ret != pycurl.E_CALL_MULTI_PERFORM:
+ break
+
+ count, good, bad = cm.info_read()
+
+ for h, en, em in bad:
+ print "Transfer to %s failed with %d, %s\n" % \
+ (h.getinfo(pycurl.EFFECTIVE_URL), en, em)
+ raise RuntimeError
+
+ for h in good:
+ httpcode = h.getinfo(pycurl.RESPONSE_CODE)
+ if httpcode != 200:
+ print "Transfer to %s failed with code %d\n" %\
+ (h.getinfo(pycurl.EFFECTIVE_URL), httpcode)
+ raise RuntimeError
+
+ else:
+ print "Recd %d bytes from %s" % \
+ (h.getinfo(pycurl.SIZE_DOWNLOAD),
+ h.getinfo(pycurl.EFFECTIVE_URL))
+
+ cm.remove_handle(eh)
+ eh.reset()
+
+ eh.close()
+ cm.close()
+ outf.close()
+
+ pycurl.global_cleanup()
+
+
+if __name__ == '__main__':
+ if len(sys.argv) != 2:
+ print "Usage: %s <url>" % sys.argv[0]
+ sys.exit(2)
+ main()
--
1.7.1