Пример #1
0
 def test_multiple_wraps(self):
     prox1 = tpool.Proxy(uuid)
     prox2 = tpool.Proxy(uuid)
     x1 = prox1.uuid4()
     x2 = prox1.uuid4()
     del x2
     x3 = prox2.uuid4()
Пример #2
0
def main():
    import optparse
    parser = optparse.OptionParser(
        usage="usage: %prog [options]",
        description="Simple saranwrap.Server wrapper")
    parser.add_option('-c',
                      '--child',
                      default=False,
                      action='store_true',
                      help='Wrap an object serialized via setattr.')
    parser.add_option('-m',
                      '--module',
                      type='string',
                      dest='module',
                      default=None,
                      help='a module to load and export.')
    parser.add_option('-l',
                      '--logfile',
                      type='string',
                      dest='logfile',
                      default=None,
                      help='file to log to.')
    options, args = parser.parse_args()
    global _g_logfile
    if options.logfile:
        _g_logfile = open(options.logfile, 'a')

    from eventlib import tpool
    if options.module:
        export = api.named(options.module)
        server = Server(tpool.Proxy(sys.stdin), tpool.Proxy(sys.stdout),
                        export)
    elif options.child:
        server = Server(tpool.Proxy(sys.stdin), tpool.Proxy(sys.stdout), {})

    # *HACK: some modules may emit on stderr, which breaks everything.
    class NullSTDOut(object):
        def noop(*args):
            pass

        write = noop
        read = noop
        flush = noop

    sys.stderr = NullSTDOut()
    sys.stdout = NullSTDOut()

    # Loop until EOF
    server.loop()
    if _g_logfile:
        _g_logfile.close()
Пример #3
0
    def test_raising_exceptions(self):
        prox = tpool.Proxy(uuid)

        def nofunc():
            prox.never_name_a_function_like_this()

        self.assertRaises(AttributeError, nofunc)
Пример #4
0
 def test_wrap_eq(self):
     prox = tpool.Proxy(uuid)
     id1 = prox.uuid4()
     id2 = prox.UUID(str(id1))
     self.assertEqual(id1, id2)
     id3 = prox.uuid4()
     self.assertTrue(id1 != id3)
Пример #5
0
 def test_wrap_dict(self):
     my_object = {'a': 1}
     prox = tpool.Proxy(my_object)
     self.assertEqual('a', list(prox.keys())[0])
     self.assertEqual(1, prox['a'])
     self.assertEqual(str(my_object), str(prox))
     self.assertEqual(repr(my_object), repr(prox))
     self.assertEqual(repr(my_object), repr(prox))
Пример #6
0
    def test_contention(self):
        from greentest import tpool_test
        prox = tpool.Proxy(tpool_test)

        pool = coros.CoroutinePool(max_size=4)
        waiters = []
        waiters.append(pool.execute(lambda: self.assertEqual(prox.one, 1)))
        waiters.append(pool.execute(lambda: self.assertEqual(prox.two, 2)))
        waiters.append(pool.execute(lambda: self.assertEqual(prox.three, 3)))
        for waiter in waiters:
            waiter.wait()
Пример #7
0
    def test_wrap_uniterable(self):
        # here we're treating the exception as just a normal class
        prox = tpool.Proxy(FloatingPointError())

        def index():
            prox[0]

        def key():
            prox['a']

        self.assertRaises(IndexError, index)
        self.assertRaises(TypeError, key)
Пример #8
0
 def connect(self, db_module, connect_timeout, *args, **kw):
     timeout = api.exc_after(connect_timeout, ConnectTimeout())
     try:
         from eventlib import tpool
         try:
             # *FIX: this is a huge hack that will probably only work for MySQLdb
             autowrap = (db_module.cursors.DictCursor, )
         except:
             autowrap = ()
         conn = tpool.execute(db_module.connect, *args, **kw)
         return tpool.Proxy(conn, autowrap=autowrap)
     finally:
         timeout.cancel()
Пример #9
0
def sender_loop(pfx):
    n = 0
    obj = tpool.Proxy(yadda())
    while n < 10:
        if not (n % 5):
            stdout.write('.')
            stdout.flush()
        api.sleep(0)
        now = time.time()
        prnt("%s: send (%s,%s)" % (pfx, now, n))
        rv = obj.foo(now, n=n)
        prnt("%s: recv %s" % (pfx, rv))
        assert (n == rv)
        api.sleep(0)
        n += 1
Пример #10
0
 def test_wrap_string(self):
     my_object = "whatever"
     prox = tpool.Proxy(my_object)
     self.assertEqual(str(my_object), str(prox))
     self.assertEqual(len(my_object), len(prox))
     self.assertEqual(my_object.join(['a', 'b']), prox.join(['a', 'b']))
Пример #11
0
 def test_wrap_tuple(self):
     my_tuple = (1, 2)
     prox = tpool.Proxy(my_tuple)
     self.assertEqual(prox[0], 1)
     self.assertEqual(prox[1], 2)
     self.assertEqual(len(my_tuple), 2)
Пример #12
0
 def test_variable_and_keyword_arguments_with_function_calls(self):
     import optparse
     parser = tpool.Proxy(optparse.OptionParser())
     z = parser.add_option('-n', action='store', type='string', dest='n')
     opts, args = parser.parse_args(["-nfoo"])
     self.assertEqual(opts.n, 'foo')
Пример #13
0
 def test_wrap_setitem(self):
     prox = tpool.Proxy([0, 1, 2])
     prox[1] = 2
     self.assertEqual(prox[1], 2)
Пример #14
0
 def test_wrap_getitem(self):
     prox = tpool.Proxy([0, 1, 2])
     self.assertEqual(prox[0], 0)
Пример #15
0
 def test_wrap_nonzero(self):
     prox = tpool.Proxy(uuid)
     id1 = prox.uuid4()
     self.assertTrue(bool(id1))
     prox2 = tpool.Proxy([1, 2, 3])
     self.assertTrue(bool(prox2))
Пример #16
0
 def test_wrap_module_class(self):
     prox = tpool.Proxy(uuid)
     self.assertEqual(tpool.Proxy, type(prox))
     id = prox.uuid4()
     self.assertEqual(id.get_version(), uuid.uuid4().get_version())
     self.assertTrue(repr(prox.uuid4))