Beispiel #1
0
def patch_smtp():

    #FIXME: This code have some bug caused by the nonblocking I/O.
    # At this moment this patcher isn't used by the crawler. It just
    # import the regular smtplib module
    from eventlet import patcher
    from eventlet.green import socket
    from eventlet.green import ssl
    from eventlet.green import time

    smtplib = patcher.inject('smtplib', globals(), ('socket', socket),
                             ('ssl', ssl), ('time', time))

    del patcher
Beispiel #2
0
def patch_smtp():
    
    #FIXME: This code have some bug caused by the nonblocking I/O.
    # At this moment this patcher isn't used by the crawler. It just 
    # import the regular smtplib module
    from eventlet import patcher
    from eventlet.green import socket
    from eventlet.green import ssl
    from eventlet.green import time

    smtplib = patcher.inject('smtplib',
        globals(),
        ('socket', socket),
        ('ssl', ssl),
        ('time', time))

    del patcher
Beispiel #3
0
from eventlet import patcher
from eventlet.green import asyncore
from eventlet.green import select
from eventlet.green import socket
from eventlet.green import threading
from eventlet.green import time

patcher.inject("test.test_asyncore", globals(), ('asyncore', asyncore),
               ('select', select), ('socket', socket),
               ('threading', threading), ('time', time))


def new_closeall_check(self, usedefault):
    # Check that close_all() closes everything in a given map

    l = []
    testmap = {}
    for i in range(10):
        c = dummychannel()
        l.append(c)
        self.assertEqual(c.socket.closed, False)
        testmap[i] = c

    if usedefault:
        # the only change we make is to not assign to asyncore.socket_map
        # because doing so fails to assign to the real asyncore's socket_map
        # and thus the test fails
        socketmap = asyncore.socket_map.copy()
        try:
            asyncore.socket_map.clear()
            asyncore.socket_map.update(testmap)
Beispiel #4
0
from eventlet import patcher
from eventlet.green import socket
from eventlet.green import time

patcher.inject('test.test_timeout', globals(), ('socket', socket),
               ('time', time))

# to get past the silly 'requires' check
from test import test_support
test_support.use_resources = ['network']

if __name__ == "__main__":
    test_main()
Beispiel #5
0
from eventlet import patcher
from eventlet.green import ftplib
from eventlet.green import httplib
from eventlet.green import socket
from eventlet.green import time
from eventlet.green import urllib

patcher.inject('urllib2',
    globals(),
    ('httplib', httplib),
    ('socket', socket),
    ('time', time),
    ('urllib', urllib))

FTPHandler.ftp_open = patcher.patch_function(FTPHandler.ftp_open, ('ftplib', ftplib))

del patcher
Beispiel #6
0
from eventlet import patcher

from eventlet.green import BaseHTTPServer
from eventlet.green import threading
from eventlet.green import socket
from eventlet.green import urllib2

patcher.inject('test.test_urllib2_localnet',
    globals(),
    ('BaseHTTPServer', BaseHTTPServer),
    ('threading', threading),
    ('socket', socket),
    ('urllib2', urllib2))
        
if __name__ == "__main__":
    test_main()
Beispiel #7
0
from eventlet import patcher

patcher.inject("urllib.response", globals())
del patcher
Beispiel #8
0
from types import FunctionType

import eventlet
from eventlet import greenio
from eventlet import patcher
from eventlet.green import select, threading, time
from eventlet.support import six


to_patch = [('select', select), ('threading', threading), ('time', time)]

if sys.version_info > (3, 4):
    from eventlet.green import selectors
    to_patch.append(('selectors', selectors))

patcher.inject('subprocess', globals(), *to_patch)
subprocess_orig = __import__("subprocess")
mswindows = sys.platform == "win32"


if getattr(subprocess_orig, 'TimeoutExpired', None) is None:
    # Backported from Python 3.3.
    # https://bitbucket.org/eventlet/eventlet/issue/89
    class TimeoutExpired(Exception):
        """This exception is raised when the timeout expires while waiting for
        a child process.
        """

        def __init__(self, cmd, timeout, output=None):
            self.cmd = cmd
            self.timeout = timeout
Beispiel #9
0
from eventlet import patcher
from eventlet.green import thread
from eventlet.green import time

__patched__ = ['_start_new_thread', '_allocate_lock', '_get_ident', '_sleep',
               'local', 'stack_size']

patcher.inject('threading',
    globals(),
    ('thread', thread),
    ('time', time))

del patcher

def _patch_main_thread(mod):
    # this is some gnarly patching for the threading module;
    # if threading is imported before we patch (it nearly always is),
    # then the main thread will have the wrong key in therading._active,
    # so, we try and replace that key with the correct one here
    # this works best if there are no other threads besides the main one
    curthread = mod._active.pop(mod._get_ident(), None)
    if curthread:
        mod._active[thread.get_ident()] = curthread
Beispiel #10
0
from eventlet import patcher
from eventlet.green import socket
from eventlet.green import time

patcher.inject('test.test_timeout',
    globals(),
    ('socket', socket),
    ('time', time))

# to get past the silly 'requires' check
from test import test_support
test_support.use_resources = ['network']

if __name__ == "__main__":
    test_main()
from eventlet import patcher
from eventlet.green import SocketServer
from eventlet.green import socket
from eventlet.green import select
from eventlet.green import time
from eventlet.green import threading

# to get past the silly 'requires' check
from test import test_support
test_support.use_resources = ['network']

patcher.inject(
    'test.test_socketserver',
    globals(),
    ('SocketServer', SocketServer),
    ('socket', socket),
    ('select', select),
    ('time', time),
    ('threading', threading))

# only a problem with pyevent
from eventlet import tests
if tests.using_pyevent():
    try:
        SocketServerTest.test_ForkingUDPServer = lambda *a, **kw: None
        SocketServerTest.test_ForkingTCPServer = lambda *a, **kw: None
        SocketServerTest.test_ForkingUnixStreamServer = lambda *a, **kw: None
    except (NameError, AttributeError):
        pass

if __name__ == "__main__":
Beispiel #12
0
from eventlet import patcher
from eventlet.green import socket
from eventlet.green import time
from eventlet.green import asyncore
from eventlet.green import asynchat


patcher.inject(
    "smtpd",
    globals(),
    ('socket', socket),
    ('asyncore', asyncore),
    ('asynchat', asynchat),
    ('time', time))

del patcher
Beispiel #13
0
from eventlet import patcher
from eventlet.green import socket

to_patch = [('socket', socket)]

try:
    from eventlet.green import ssl
    to_patch.append(('ssl', ssl))
except ImportError:
    pass

patcher.inject('httplib', globals(), *to_patch)

if __name__ == '__main__':
    test()
Beispiel #14
0
#!/usr/bin/env python

from eventlet import patcher
from eventlet.green import SocketServer
from eventlet.green import socket
from eventlet.green import select
from eventlet.green import time
from eventlet.green import threading

# to get past the silly 'requires' check
from test import test_support

test_support.use_resources = ['network']

patcher.inject('test.test_socketserver', globals(),
               ('SocketServer', SocketServer), ('socket', socket),
               ('select', select), ('time', time), ('threading', threading))

# only a problem with pyevent
from eventlet import tests
if tests.using_pyevent():
    try:
        SocketServerTest.test_ForkingUDPServer = lambda *a, **kw: None
        SocketServerTest.test_ForkingTCPServer = lambda *a, **kw: None
        SocketServerTest.test_ForkingUnixStreamServer = lambda *a, **kw: None
    except (NameError, AttributeError):
        pass

if __name__ == "__main__":
    test_main()
Beispiel #15
0
from eventlet import patcher
from eventlet.green import httplib
from eventlet.green import socket

patcher.inject('test.test_httplib', globals(), ('httplib', httplib),
               ('socket', socket))

if __name__ == "__main__":
    test_main()
Beispiel #16
0
from eventlet import patcher
from eventlet.green import os

patcher.inject('test.test_os',
    globals(),
    ('os', os))

if __name__ == "__main__":
    test_main()
Beispiel #17
0
from eventlet import patcher
from eventlet.green import socket
from eventlet.green import SocketServer

patcher.inject('BaseHTTPServer', globals(), ('socket', socket),
               ('SocketServer', SocketServer))

del patcher

if __name__ == '__main__':
    test()
Beispiel #18
0
from eventlet import patcher
patcher.inject('urllib.parse', globals())
del patcher
Beispiel #19
0
import eventlet
from eventlet import greenio
from eventlet import patcher
from eventlet.green import select, threading, time
from eventlet.support import six


__patched__ = ["call", "check_call", "Popen"]
to_patch = [("select", select), ("threading", threading), ("time", time)]

if sys.version_info > (3, 4):
    from eventlet.green import selectors

    to_patch.append(("selectors", selectors))

patcher.inject("subprocess", globals(), *to_patch)
subprocess_orig = patcher.original("subprocess")
mswindows = sys.platform == "win32"


if getattr(subprocess_orig, "TimeoutExpired", None) is None:
    # Backported from Python 3.3.
    # https://bitbucket.org/eventlet/eventlet/issue/89
    class TimeoutExpired(Exception):
        """This exception is raised when the timeout expires while waiting for
        a child process.
        """

        def __init__(self, cmd, timeout, output=None):
            self.cmd = cmd
            self.timeout = timeout
Beispiel #20
0
from eventlet import patcher
from eventlet.green import asyncore
from eventlet.green import asynchat
from eventlet.green import socket
from eventlet.green import thread
from eventlet.green import threading
from eventlet.green import time

patcher.inject("test.test_asynchat",
    globals(),
    ('asyncore', asyncore),
    ('asynchat', asynchat),
    ('socket', socket),
    ('thread', thread),
    ('threading', threading),
    ('time', time))
    
if __name__ == "__main__":
    test_main()
Beispiel #21
0
from eventlet import patcher
from eventlet.green import asyncore
from eventlet.green import ftplib
from eventlet.green import threading
from eventlet.green import socket

patcher.inject(
    "test.test_ftplib",
    globals(),
    ("asyncore", asyncore),
    ("ftplib", ftplib),
    ("socket", socket),
    ("threading", threading),
)

if __name__ == "__main__":
    test_main()
from eventlet import patcher

from eventlet.green import socket
from eventlet.green import select
from eventlet.green import threading
import six

patcher.inject(
    'SocketServer' if six.PY2 else 'socketserver',
    globals(),
    ('socket', socket),
    ('select', select),
    ('threading', threading))

# QQQ ForkingMixIn should be fixed to use green waitpid?
Beispiel #23
0
from eventlet import patcher
from eventlet.green import os, time, select, socket, SocketServer, subprocess
from eventlet.green.http import client
from eventlet.green.urllib import parse as urllib_parse

patcher.inject('http.server', globals(), ('http.client', client), ('os', os),
               ('select', select), ('socket', socket),
               ('socketserver', SocketServer), ('time', time),
               ('urllib.parse', urllib_parse))

CGIHTTPRequestHandler.run_cgi = patcher.patch_function(
    CGIHTTPRequestHandler.run_cgi, ('subprocess', subprocess))

del urllib_parse
del client
del patcher
from eventlet import patcher

from eventlet.green import BaseHTTPServer
from eventlet.green import SimpleHTTPServer
from eventlet.green import CGIHTTPServer
from eventlet.green import urllib
from eventlet.green import httplib
from eventlet.green import threading

patcher.inject('test.test_httpservers',
    globals(),
    ('BaseHTTPServer', BaseHTTPServer),
    ('SimpleHTTPServer', SimpleHTTPServer),
    ('CGIHTTPServer', CGIHTTPServer),
    ('urllib', urllib),
    ('httplib', httplib),
    ('threading', threading))

if __name__ == "__main__":
    test_main()
Beispiel #25
0
#!/usr/bin/env python

from eventlet import patcher
from eventlet.green import socket
from eventlet.green import select
from eventlet.green import time
from eventlet.green import thread
from eventlet.green import threading

patcher.inject(
    'test.test_socket',
    globals(),
    ('socket', socket),
    ('select', select),
    ('time', time),
    ('thread', thread),
    ('threading', threading))

# TODO: fix
TCPTimeoutTest.testInterruptedTimeout = lambda *a: None

if __name__ == "__main__":
    test_main()
Beispiel #26
0
from eventlet import patcher
from eventlet.green import httplib
from eventlet.green import urllib

patcher.inject('test.test_urllib', globals(), ('httplib', httplib),
               ('urllib', urllib))

if __name__ == "__main__":
    test_main()
Beispiel #27
0
from eventlet import patcher
from eventlet.green import socket
from eventlet.green import urllib2

patcher.inject('test.test_urllib2',
    globals(),
    ('socket', socket),
    ('urllib2', urllib2))

HandlerTests.test_file = patcher.patch_function(HandlerTests.test_file, ('socket', socket))
HandlerTests.test_cookie_redirect = patcher.patch_function(HandlerTests.test_cookie_redirect, ('urllib2', urllib2))
OpenerDirectorTests.test_badly_named_methods = patcher.patch_function(OpenerDirectorTests.test_badly_named_methods, ('urllib2', urllib2))

if __name__ == "__main__":
    test_main()
Beispiel #28
0
from eventlet import patcher
from eventlet.green import thread
from eventlet.green import time

patcher.inject('test.test_thread', globals())

try:
    # this is a new test in 2.7 that we don't support yet
    TestForkInThread.test_forkinthread = lambda *a, **kw: None
except NameError:
    pass

if __name__ == "__main__":
    test_main()
Beispiel #29
0
from eventlet import patcher
from eventlet.green import socket
from eventlet.green import SocketServer
import six

patcher.inject(
    'BaseHTTPServer' if six.PY2 else 'http.server',
    globals(),
    ('socket', socket),
    ('SocketServer', SocketServer),
    ('socketserver', SocketServer))

del patcher

if __name__ == '__main__':
    test()
Beispiel #30
0
from eventlet import patcher
from eventlet.green import asyncore
from eventlet.green import socket

patcher.inject(
    'asynchat',
    globals(),
    ('asyncore', asyncore),
    ('socket', socket))

del patcher
Beispiel #31
0
from eventlet import patcher
from eventlet.green import socket
from eventlet.green import SocketServer

patcher.inject('BaseHTTPServer',
    globals(),
    ('socket', socket),
    ('SocketServer', SocketServer))

del patcher

if __name__ == '__main__':
    test()
Beispiel #32
0
from eventlet import patcher
from eventlet.green.urllib import response
patcher.inject('urllib.error', globals(), ('urllib.response', response))
del patcher
Beispiel #33
0
from eventlet import patcher

from eventlet.green import socket
from eventlet.green import select
from eventlet.green import threading
import six

patcher.inject('SocketServer' if six.PY2 else 'socketserver', globals(),
               ('socket', socket), ('select', select),
               ('threading', threading))

# QQQ ForkingMixIn should be fixed to use green waitpid?
Beispiel #34
0
from eventlet import patcher

# *NOTE: there might be some funny business with the "SOCKS" module
# if it even still exists
from eventlet.green import socket

patcher.inject("ftplib", globals(), ("socket", socket))

del patcher

# Run test program when run as a script
if __name__ == "__main__":
    test()
Beispiel #35
0
import errno
import new
import time

import eventlet
from eventlet import greenio
from eventlet import patcher
from eventlet.green import os
from eventlet.green import select

patcher.inject('subprocess', globals(), ('select', select))
subprocess_orig = __import__("subprocess")

if getattr(subprocess_orig, 'TimeoutExpired', None) is None:
    # Backported from Python 3.3.
    # https://bitbucket.org/eventlet/eventlet/issue/89
    class TimeoutExpired(Exception):
        """This exception is raised when the timeout expires while waiting for
        a child process.
        """
        def __init__(self, cmd, output=None):
            self.cmd = cmd
            self.output = output

        def __str__(self):
            return ("Command '%s' timed out after %s seconds" %
                    (self.cmd, self.timeout))


# This is the meat of this module, the green version of Popen.
class Popen(subprocess_orig.Popen):
Beispiel #36
0
from eventlet.green import threading, time
from eventlet.green.http import client
from eventlet.green.urllib import parse as urllib_parse, request as urllib_request
from eventlet import patcher

patcher.inject('http.cookiejar', globals(), ('http.client', client),
               ('threading', threading), ('urllib.parse', urllib_parse),
               ('urllib.request', urllib_request), ('time', time))

del urllib_request
del urllib_parse
del patcher
Beispiel #37
0
import errno
import new

import eventlet
from eventlet import greenio
from eventlet import patcher
from eventlet.green import os
from eventlet.green import select

patcher.inject('subprocess', globals(), ('select', select))
subprocess_orig = __import__("subprocess")

# This is the meat of this module, the green version of Popen.
class Popen(subprocess_orig.Popen):
    """eventlet-friendly version of subprocess.Popen"""
    # We do not believe that Windows pipes support non-blocking I/O. At least,
    # the Python file objects stored on our base-class object have no
    # setblocking() method, and the Python fcntl module doesn't exist on
    # Windows. (see eventlet.greenio.set_nonblocking()) As the sole purpose of
    # this __init__() override is to wrap the pipes for eventlet-friendly
    # non-blocking I/O, don't even bother overriding it on Windows.
    if not subprocess_orig.mswindows:
        def __init__(self, args, bufsize=0, *argss, **kwds):
            # Forward the call to base-class constructor
            subprocess_orig.Popen.__init__(self, args, 0, *argss, **kwds)
            # Now wrap the pipes, if any. This logic is loosely borrowed from 
            # eventlet.processes.Process.run() method.
            for attr in "stdin", "stdout", "stderr":
                pipe = getattr(self, attr)
                if pipe is not None:
                    wrapped_pipe = greenio.GreenPipe(pipe, pipe.mode, bufsize)
Beispiel #38
0
from eventlet import patcher
from eventlet.green import ftplib
from eventlet.green import httplib
from eventlet.green import socket
from eventlet.green import time
from eventlet.green import urllib

patcher.inject('urllib2', globals(), ('httplib', httplib), ('socket', socket),
               ('time', time), ('urllib', urllib))

FTPHandler.ftp_open = patcher.patch_function(FTPHandler.ftp_open,
                                             ('ftplib', ftplib))

del patcher
Beispiel #39
0
from eventlet import patcher
from eventlet.green import asyncore
from eventlet.green import ftplib
from eventlet.green import threading
from eventlet.green import socket

patcher.inject('test.test_ftplib', globals())

# this test only fails on python2.7/pyevent/--with-xunit; screw that
try:
    TestTLS_FTPClass.test_data_connection = lambda *a, **kw: None
except (AttributeError, NameError):
    pass

if __name__ == "__main__":
    test_main()
Beispiel #40
0
from eventlet import patcher
patcher.inject('urllib.response', globals())
del patcher
Beispiel #41
0
from types import FunctionType

import eventlet
from eventlet import greenio
from eventlet import patcher
from eventlet.green import select, threading, time
from eventlet.support import six

__patched__ = ['call', 'check_call', 'Popen']
to_patch = [('select', select), ('threading', threading), ('time', time)]

if sys.version_info > (3, 4):
    from eventlet.green import selectors
    to_patch.append(('selectors', selectors))

patcher.inject('subprocess', globals(), *to_patch)
subprocess_orig = patcher.original("subprocess")
mswindows = sys.platform == "win32"

if getattr(subprocess_orig, 'TimeoutExpired', None) is None:
    # Backported from Python 3.3.
    # https://bitbucket.org/eventlet/eventlet/issue/89
    class TimeoutExpired(Exception):
        """This exception is raised when the timeout expires while waiting for
        a child process.
        """
        def __init__(self, cmd, timeout, output=None):
            self.cmd = cmd
            self.timeout = timeout
            self.output = output
Beispiel #42
0
from eventlet import patcher
from eventlet.green import os, socket
from eventlet.green.urllib import parse as urllib_parse

patcher.inject('http.client', globals(), ('os', os), ('socket', socket),
               ('urllib.parse', urllib_parse))

del patcher
del urllib_parse
Beispiel #43
0
# stupid test_support messing with our mojo
import test.test_support
i_r_e = test.test_support.is_resource_enabled
def is_resource_enabled(resource):
    if resource == 'network':
        return True
    else:
        return i_r_e(resource)
test.test_support.is_resource_enabled = is_resource_enabled

patcher.inject('test.test_ssl',
    globals(),
    ('asyncore', asyncore),
    ('BaseHTTPServer', BaseHTTPServer),
    ('select', select),
    ('socket', socket),
    ('SocketServer', SocketServer),
    ('ssl', ssl),
    ('threading', threading),
    ('urllib', urllib))
    
    
# TODO svn.python.org stopped serving up the cert that these tests expect; 
# presumably they've updated svn trunk but the tests in released versions will
# probably break forever. This is why you don't write tests that connect to 
# external servers.
NetworkedTests.testConnect = lambda s: None
NetworkedTests.testFetchServerCert = lambda s: None
NetworkedTests.test_algorithms = lambda s: None

# these don't pass because nonblocking ssl sockets don't report
from eventlet import patcher
from eventlet.green import SimpleHTTPServer

patcher.inject(
    'test.test_SimpleHTTPServer',
    globals(),
    ('SimpleHTTPServer', SimpleHTTPServer))

if __name__ == "__main__":
    test_main()
Beispiel #45
0
from eventlet.green import socket
from eventlet.green import time
from eventlet.green import httplib
from eventlet.green import ftplib
import six

if six.PY2:
    to_patch = [('socket', socket), ('httplib', httplib),
                ('time', time), ('ftplib', ftplib)]
    try:
        from eventlet.green import ssl
        to_patch.append(('ssl', ssl))
    except ImportError:
        pass

    patcher.inject('urllib', globals(), *to_patch)
    try:
        URLopener
    except NameError:
        patcher.inject('urllib.request', globals(), *to_patch)


    # patch a bunch of things that have imports inside the
    # function body; this is lame and hacky but I don't feel
    # too bad because urllib is a hacky pile of junk that no
    # one should be using anyhow
    URLopener.open_http = patcher.patch_function(URLopener.open_http, ('httplib', httplib))
    if hasattr(URLopener, 'open_https'):
        URLopener.open_https = patcher.patch_function(URLopener.open_https, ('httplib', httplib))

    URLopener.open_ftp = patcher.patch_function(URLopener.open_ftp, ('ftplib', ftplib))
Beispiel #46
0
from eventlet import patcher
from eventlet.green import BaseHTTPServer
from eventlet.green import urllib

patcher.inject('SimpleHTTPServer', globals(),
               ('BaseHTTPServer', BaseHTTPServer), ('urllib', urllib))

del patcher

if __name__ == '__main__':
    test()
Beispiel #47
0
from eventlet import patcher
from eventlet.green import httplib
from eventlet.green import urllib

patcher.inject(
    'test.test_urllib',
    globals(),
    ('httplib', httplib),
    ('urllib', urllib))

if __name__ == "__main__":
    test_main()
Beispiel #48
0
from eventlet import patcher
from eventlet.green import select
from eventlet.green import socket
from eventlet.green import time

patcher.inject("asyncore",
    globals(),
    ('select', select),
    ('socket', socket),
    ('time', time))

del patcher
Beispiel #49
0
from eventlet import patcher
from eventlet.green import asyncore
from eventlet.green import select
from eventlet.green import socket
from eventlet.green import threading
from eventlet.green import time

patcher.inject("test.test_asyncore", globals())


def new_closeall_check(self, usedefault):
    # Check that close_all() closes everything in a given map

    l = []
    testmap = {}
    for i in range(10):
        c = dummychannel()
        l.append(c)
        self.assertEqual(c.socket.closed, False)
        testmap[i] = c

    if usedefault:
        # the only change we make is to not assign to asyncore.socket_map
        # because doing so fails to assign to the real asyncore's socket_map
        # and thus the test fails
        socketmap = asyncore.socket_map.copy()
        try:
            asyncore.socket_map.clear()
            asyncore.socket_map.update(testmap)
            asyncore.close_all()
        finally:
Beispiel #50
0
#!/usr/bin/env python

from eventlet import patcher
from eventlet.green import socket
from eventlet.green import select
from eventlet.green import time
from eventlet.green import thread
from eventlet.green import threading

patcher.inject('test.test_socket', globals(), ('socket', socket),
               ('select', select), ('time', time), ('thread', thread),
               ('threading', threading))

# TODO: fix
TCPTimeoutTest.testInterruptedTimeout = lambda *a: None

if __name__ == "__main__":
    test_main()