diff --git a/netlib/tcp.py b/netlib/tcp.py index 76fb7ca04..9c5cfa642 100644 --- a/netlib/tcp.py +++ b/netlib/tcp.py @@ -44,7 +44,7 @@ class _FileLike: def __init__(self, o): self.o = o self._log = None - self.timestamp = None + self.first_byte_timestamp = None def set_descriptor(self, o): self.o = o @@ -81,8 +81,8 @@ class _FileLike: if self.is_logging(): self._log.append(v) - def reset_timestamp(self): - self.timestamp = None + def reset_timestamps(self): + self.first_byte_timestamp = None class Writer(_FileLike): def flush(self): @@ -134,7 +134,7 @@ class Reader(_FileLike): raise NetLibDisconnect except SSL.SysCallError, v: raise NetLibDisconnect - self.timestamp = self.timestamp or time.time() + self.first_byte_timestamp = self.first_byte_timestamp or time.time() if not data: break result += data diff --git a/test/test_tcp.py b/test/test_tcp.py index 5a12da91b..d27a678a0 100644 --- a/test/test_tcp.py +++ b/test/test_tcp.py @@ -313,3 +313,27 @@ class TestFileLike: s.write("x") assert s.get_log() == "xx" + def test_reset_timestamps(self): + s = cStringIO.StringIO("foobar\nfoobar") + s = tcp.Reader(s) + s.first_byte_timestamp = 500 + s.reset_timestamps() + assert not s.first_byte_timestamp + + def test_first_byte_timestamp_updated_on_read(self): + s = cStringIO.StringIO("foobar\nfoobar") + s = tcp.Reader(s) + s.read(1) + assert s.first_byte_timestamp + expected = s.first_byte_timestamp + s.read(5) + assert s.first_byte_timestamp == expected + + def test_first_byte_timestamp_updated_on_readline(self): + s = cStringIO.StringIO("foobar\nfoobar\nfoobar") + s = tcp.Reader(s) + s.readline() + assert s.first_byte_timestamp + expected = s.first_byte_timestamp + s.readline() + assert s.first_byte_timestamp == expected