示例#1
0
    def test_pipe_read(self):
        # ensure that 'readline' works properly on GreenPipes when data is not
        # immediately available (fd is nonblocking, was raising EAGAIN)
        # also ensures that readline() terminates on '\n' and '\r\n'
        r, w = os.pipe()

        r = GreenPipe(r)
        w = GreenPipe(w, 'w')

        def writer():
            sleep(.1)

            w.write('line\n')
            w.flush()

            w.write('line\r\n')
            w.flush()

        gt = spawn(writer)

        sleep(0)

        line = r.readline()
        self.assertEquals(line, 'line\n')

        line = r.readline()
        self.assertEquals(line, 'line\r\n')

        gt.wait()
示例#2
0
    def test_pipe(self):
        r, w = os.pipe()
        rf = GreenPipe(r, 'r')
        wf = GreenPipe(w, 'w', 0)

        def sender(f, content):
            for ch in content:
                sleep(0.0001)
                f.write(ch)
            f.close()

        one_line = "12345\n"
        spawn(sender, wf, one_line * 5)
        for i in xrange(5):
            line = rf.readline()
            sleep(0.01)
            self.assertEquals(line, one_line)
        self.assertEquals(rf.readline(), '')
示例#3
0
文件: os.py 项目: PlumpMath/evy
def fdopen(fd, *args, **kw):
    """
    fdopen(fd [, mode='r' [, bufsize]]) -> file_object
    
    Return an open file object connected to a file descriptor."""
    if not isinstance(fd, int):
        raise TypeError('fd should be int, not %r' % fd)
    try:
        return GreenPipe(fd, *args, **kw)
    except IOError, e:
        raise OSError(*e.args)
示例#4
0
    def test_pipe_writes_large_messages(self):
        r, w = os.pipe()

        r = GreenPipe(r)
        w = GreenPipe(w, 'w')

        large_message = "".join([1024 * chr(i) for i in xrange(65)])

        def writer():
            w.write(large_message)
            w.close()

        gt = spawn(writer)

        for i in xrange(65):
            buf = r.read(1024)
            expected = 1024 * chr(i)
            self.assertEquals(
                buf, expected, "expected=%r..%r, found=%r..%r iter=%d" %
                (expected[:4], expected[-4:], buf[:4], buf[-4:], i))
        gt.wait()
示例#5
0
 def test_seek_on_buffered_pipe(self):
     f = GreenPipe(self.tempdir + "/TestFile", 'w+', 1024)
     self.assertEquals(f.tell(), 0)
     f.seek(0, 2)
     self.assertEquals(f.tell(), 0)
     f.write('1234567890')
     f.seek(0, 2)
     self.assertEquals(f.tell(), 10)
     f.seek(0)
     value = f.read(1)
     self.assertEqual(value, '1')
     self.assertEquals(f.tell(), 1)
     value = f.read(1)
     self.assertEqual(value, '2')
     self.assertEquals(f.tell(), 2)
     f.seek(0, 1)
     self.assertEqual(f.readline(), '34567890')
     f.seek(0)
     self.assertEqual(f.readline(), '1234567890')
     f.seek(0, 2)
     self.assertEqual(f.readline(), '')
示例#6
0
 def test_truncate(self):
     f = GreenPipe(self.tempdir + "/TestFile", 'w+', 1024)
     f.write('1234567890')
     f.truncate(9)
     self.assertEquals(f.tell(), 9)