Very scary test here. Trying to see if we can boost speed on very large terminals.
This commit is contained in:
@@ -22,14 +22,49 @@ class BulkReadFailure:
|
||||
return next(self.chunks)
|
||||
|
||||
|
||||
def test_vcsa_read_fallback_stops_at_eof():
|
||||
class TransientInvalidArgumentRead:
|
||||
def __init__(self, payload):
|
||||
self.payload = payload
|
||||
self.read_calls = 0
|
||||
self.readline_calls = 0
|
||||
|
||||
def seek(self, offset):
|
||||
assert offset == 0
|
||||
|
||||
def read(self):
|
||||
self.read_calls += 1
|
||||
if self.read_calls == 1:
|
||||
raise OSError(22, "Invalid argument")
|
||||
return self.payload
|
||||
|
||||
def readline(self, size):
|
||||
self.readline_calls += 1
|
||||
return b""
|
||||
|
||||
|
||||
def build_vcsa_driver():
|
||||
vcsa_driver = VcsaDriver.__new__(VcsaDriver)
|
||||
vcsa_driver.env = {
|
||||
"runtime": {
|
||||
"DebugManager": Mock(),
|
||||
}
|
||||
}
|
||||
vcsa_driver.read_retry_delay = 0
|
||||
return vcsa_driver
|
||||
|
||||
|
||||
def test_vcsa_read_fallback_stops_at_eof():
|
||||
vcsa_driver = build_vcsa_driver()
|
||||
screen_file = BulkReadFailure([b"a", b"b", b""])
|
||||
|
||||
assert vcsa_driver.read_file(screen_file) == b"ab"
|
||||
assert screen_file.readline_calls == 3
|
||||
|
||||
|
||||
def test_vcsa_read_retries_transient_invalid_argument():
|
||||
vcsa_driver = build_vcsa_driver()
|
||||
screen_file = TransientInvalidArgumentRead(b"\x01\x02\x00\x00x")
|
||||
|
||||
assert vcsa_driver.read_file(screen_file) == b"\x01\x02\x00\x00x"
|
||||
assert screen_file.read_calls == 2
|
||||
assert screen_file.readline_calls == 0
|
||||
|
||||
Reference in New Issue
Block a user