Esempio n. 1
0
 def test_http_cs(self):
     proc = Process(encoding='utf-8')
     proc.spawn([sys.executable, 'httpcs.py'], stdout=PIPE)
     result = proc.stdout.read()
     self.assertEqual(result, 'result = pong\n')
     proc.wait(timeout=1)
     self.assertEqual(proc.returncode, 0)
     proc.close()
Esempio n. 2
0
 def test_netcat(self):
     proc = Process()
     proc.spawn([sys.executable, '-u', 'netcat.py', 'xkcd.com', '80'], stdin=PIPE, stdout=PIPE)
     proc.stdin.write(b'GET / HTTP/1.1\r\nHost: xkcd.com\r\nConnection: close\r\n\r\n')
     result = proc.stdout.read()
     self.assertTrue(b'<html' in result)
     proc.wait(timeout=1)
     self.assertEqual(proc.returncode, 0)
     proc.close()
Esempio n. 3
0
 def test_fortune(self):
     proc = Process(encoding='ascii')
     proc.spawn([sys.executable, '-u', 'fortune.py'], stdout=PIPE)
     line = proc.stdout.readline()
     self.assertTrue(line.startswith('Listen on '))
     addr = gruvi.paddr(line[10:])
     client = HttpClient()
     client.connect(addr)
     client.request('GET', '/')
     response = client.getresponse()
     fortune = response.read().decode('ascii')
     client.close()
     self.assertTrue('Albert Einstein' in fortune)
     proc.send_signal(signal.SIGINT)
     proc.wait(timeout=1)
     self.assertEqual(proc.returncode, 0)
     proc.close()
Esempio n. 4
0
 def test_echoserver2(self):
     proc = Process(encoding='ascii')
     proc.spawn([sys.executable, '-u', 'echoserver2.py'], stdout=PIPE)
     line = proc.stdout.readline()
     self.assertTrue(line.startswith('Listen on '))
     addr = gruvi.paddr(line[10:])
     client = StreamClient()
     client.connect(addr)
     client.write(b'foo')
     self.assertEqual(client.read(3), b'foo')
     client.write(b'foo bar baz\n')
     self.assertEqual(client.readline(), b'foo bar baz\n')
     client.close()
     proc.send_signal(signal.SIGINT)
     proc.wait(timeout=1)
     self.assertEqual(proc.returncode, 0)
     proc.close()
Esempio n. 5
0
 def test_curl_ssl(self):
     proc = Process(encoding='utf-8')
     proc.spawn([sys.executable, 'curl.py', 'https://xkcd.org'], stdout=PIPE)
     stdout, stderr = proc.communicate(timeout=30)
     self.assertEqual(proc.returncode, 0)
     self.assertTrue('<html' in stdout)
     proc.close()
Esempio n. 6
0
 def test_curl(self):
     proc = Process(encoding='utf-8')
     proc.spawn([sys.executable, 'curl.py', 'http://www.python.org'],
                stdout=PIPE)
     stdout, stderr = proc.communicate(timeout=30)
     self.assertEqual(proc.returncode, 0)
     self.assertEqual(stdout, '')
     proc.close()
Esempio n. 7
0
    def test_object_types(self):
        def sleeper():
            gruvi.sleep(0.1)

        objects = []
        for i in range(2):
            fib = Fiber(sleeper)
            fib.start()
            objects.append(fib)
        for i in range(2):
            objects.append(Event())
        for i in range(2):
            objects.append(Future())
        for i in range(2):
            proc = Process()
            proc.spawn('true')
            objects.append(proc)
        result = []

        def waiter():
            result.append(gruvi.wait(objects))

        fib = Fiber(waiter)
        fib.start()
        gruvi.sleep(0)
        self.assertTrue(fib.alive)
        objects[2].set()
        objects[3].set()
        objects[4].set_result(True)
        objects[5].set_exception(RuntimeError)
        fib.join()
        self.assertFalse(fib.alive)
        self.assertEqual(set(result[0][0]), set(objects))
        self.assertFalse(objects[0].alive)
        self.assertFalse(objects[1].alive)
        self.assertEqual(objects[6].returncode, 0)
        self.assertEqual(objects[7].returncode, 0)
        for obj in objects:
            self.assertIsNone(obj._callbacks)
        objects[6].close()
        objects[7].close()
Esempio n. 8
0
 def test_object_types(self):
     def sleeper():
         gruvi.sleep(0.1)
     objects = []
     for i in range(2):
         fib = Fiber(sleeper)
         fib.start()
         objects.append(fib)
     for i in range(2):
         objects.append(Event())
     for i in range(2):
         objects.append(Future())
     for i in range(2):
         proc = Process()
         proc.spawn('true')
         objects.append(proc)
     result = []
     def waiter():
         result.append(gruvi.wait(objects))
     fib = Fiber(waiter)
     fib.start()
     gruvi.sleep(0)
     self.assertTrue(fib.alive)
     objects[2].set()
     objects[3].set()
     objects[4].set_result(True)
     objects[5].set_exception(RuntimeError)
     fib.join()
     self.assertFalse(fib.alive)
     self.assertEqual(set(result[0][0]), set(objects))
     self.assertFalse(objects[0].alive)
     self.assertFalse(objects[1].alive)
     self.assertEqual(objects[6].returncode, 0)
     self.assertEqual(objects[7].returncode, 0)
     for obj in objects:
         self.assertFalse(obj._callbacks)
     objects[6].close()
     objects[7].close()