Blob Blame History Raw
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