summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2011-04-16 20:05:01 +0000
committerGiampaolo Rodola <g.rodola@gmail.com>2011-04-16 20:05:01 +0000
commitbb6b7e63015f1f405806f694fd6e95b4ba084b04 (patch)
treeea28bbe7ad9e4941c78fa430227d5b4cfe9ac03b /test
parent136bc37576fe5a8e8330fdb26f003de1deb8ae48 (diff)
downloadpysendfile-bb6b7e63015f1f405806f694fd6e95b4ba084b04.tar.gz
add empty file and small file tests
Diffstat (limited to 'test')
-rw-r--r--test/test_sendfile.py82
1 files changed, 62 insertions, 20 deletions
diff --git a/test/test_sendfile.py b/test/test_sendfile.py
index b469427..40c9419 100644
--- a/test/test_sendfile.py
+++ b/test/test_sendfile.py
@@ -172,7 +172,7 @@ class TestSendfile(unittest.TestCase):
data = self.server.handler_instance.get_data()
self.assertEqual(hash(data), hash(DATA))
- def test_send_at_certain_offset(self):
+ def test_send_from_certain_offset(self):
# start sending a file at a certain offset
total_sent = 0
offset = int(len(DATA) / 2)
@@ -192,25 +192,6 @@ class TestSendfile(unittest.TestCase):
self.assertEqual(total_sent, len(expected))
self.assertEqual(hash(data), hash(expected))
- def test_offset_overflow(self):
- # specify an offset > file size
- offset = len(DATA) + 4096
- sent = sendfile.sendfile(self.sockno, self.fileno, offset, 4096)
- self.assertEqual(sent, 0)
- self.client.close()
- self.server.wait()
- data = self.server.handler_instance.get_data()
- self.assertEqual(data, _bytes(''))
-
- def test_invalid_offset(self):
- try:
- sendfile.sendfile(self.sockno, self.fileno, -1, 4096)
- except OSError:
- err = sys.exc_info()[1]
- self.assertEqual(err.errno, errno.EINVAL)
- else:
- self.fail("exception not raised")
-
def test_header(self):
total_sent = 0
header = _bytes("x") * 512
@@ -277,6 +258,67 @@ class TestSendfile(unittest.TestCase):
if err.errno not in (errno.EBUSY, errno.EAGAIN):
raise
+ # --- corner cases
+
+ def test_offset_overflow(self):
+ # specify an offset > file size
+ offset = len(DATA) + 4096
+ sent = sendfile.sendfile(self.sockno, self.fileno, offset, 4096)
+ self.assertEqual(sent, 0)
+ self.client.close()
+ self.server.wait()
+ data = self.server.handler_instance.get_data()
+ self.assertEqual(data, _bytes(''))
+
+ def test_invalid_offset(self):
+ try:
+ sendfile.sendfile(self.sockno, self.fileno, -1, 4096)
+ except OSError:
+ err = sys.exc_info()[1]
+ self.assertEqual(err.errno, errno.EINVAL)
+ else:
+ self.fail("exception not raised")
+
+ def test_small_file(self):
+ data = _bytes('foo bar')
+ f = open(TESTFN2, 'wb')
+ f.write(data)
+ f.close()
+ f = open(TESTFN2, 'rb')
+
+ sendfile_wrapper(self.sockno, f.fileno(), 0, 4096)
+ self.client.close()
+ self.server.wait()
+ data_sent = self.server.handler_instance.get_data()
+ self.assertEqual(data_sent, data)
+
+ def test_small_file_and_offset_overflow(self):
+ data = _bytes('foo bar')
+ f = open(TESTFN2, 'wb')
+ f.write(data)
+ f.close()
+ f = open(TESTFN2, 'rb')
+
+ sendfile_wrapper(self.sockno, f.fileno(), 4096, 4096)
+ self.client.close()
+ self.server.wait()
+ data_sent = self.server.handler_instance.get_data()
+ self.assertEqual(data_sent, _bytes(''))
+
+ def test_empty_file(self):
+ data = _bytes('')
+ f = open(TESTFN2, 'wb')
+ f.write(data)
+ f.close()
+ f = open(TESTFN2, 'rb')
+
+ sendfile_wrapper(self.sockno, f.fileno(), 0, 4096)
+ self.client.close()
+ self.server.wait()
+ data_sent = self.server.handler_instance.get_data()
+ self.assertEqual(data_sent, data)
+
+
def test_main():
def cleanup():