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