Skip to content

Commit 4ff90f2

Browse files
committed
testhelper/smbclient: catch timeout and not connected errors
Timeout errors for operations are raised as smb.smb_structs.OperationFailure Not connected errors are raised as base.NotConnectedError We catch them and raise them as more generic errors instead. Signed-off-by: Sachin Prabhu <[email protected]>
1 parent 34f624e commit 4ff90f2

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

testhelper/smbclient.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,39 +33,63 @@ def connect(self) -> None:
3333

3434
def disconnect(self) -> None:
3535
self.connected = False
36-
self.ctx.close()
36+
try:
37+
self.ctx.close()
38+
except base.SMBTimeout as error:
39+
raise TimeoutError(f"disconnect: {error}")
3740

3841
def listdir(self, path: str = "/") -> typing.List[str]:
3942
try:
4043
dentries = self.ctx.listPath(self.share, path)
4144
except smb_structs.OperationFailure as error:
4245
raise IOError(f"failed to readdir: {error}")
46+
except base.SMBTimeout as error:
47+
raise TimeoutError(f"listdir: {error}")
48+
except base.NotConnectedError as error:
49+
raise ConnectionError(f"listdir: {error}")
50+
4351
return [dent.filename for dent in dentries]
4452

4553
def mkdir(self, dpath: str) -> None:
4654
try:
4755
self.ctx.createDirectory(self.share, dpath)
4856
except smb_structs.OperationFailure as error:
4957
raise IOError(f"failed to mkdir: {error}")
58+
except base.SMBTimeout as error:
59+
raise TimeoutError(f"mkdir: {error}")
60+
except base.NotConnectedError as error:
61+
raise ConnectionError(f"mkdir: {error}")
5062

5163
def rmdir(self, dpath: str) -> None:
5264
try:
5365
self.ctx.deleteDirectory(self.share, dpath)
5466
except smb_structs.OperationFailure as error:
5567
raise IOError(f"failed to rmdir: {error}")
68+
except base.SMBTimeout as error:
69+
raise TimeoutError(f"rmdir: {error}")
70+
except base.NotConnectedError as error:
71+
raise ConnectionError(f"rmdir: {error}")
5672

5773
def unlink(self, fpath: str) -> None:
5874
try:
5975
self.ctx.deleteFiles(self.share, fpath)
6076
except smb_structs.OperationFailure as error:
6177
raise IOError(f"failed to unlink: {error}")
78+
except base.SMBTimeout as error:
79+
raise TimeoutError(f"unlink: {error}")
80+
except base.NotConnectedError as error:
81+
raise ConnectionError(f"unlink: {error}")
6282

6383
def write_text(self, fpath: str, teststr: str) -> None:
6484
try:
6585
with io.BytesIO(teststr.encode()) as writeobj:
6686
self.ctx.storeFile(self.share, fpath, writeobj)
6787
except smb_structs.OperationFailure as error:
6888
raise IOError(f"failed in write_text: {error}")
89+
except base.SMBTimeout as error:
90+
raise TimeoutError(f"write_text: {error}")
91+
except base.NotConnectedError as error:
92+
raise ConnectionError(f"write: {error}")
6993

7094
def read_text(self, fpath: str) -> str:
7195
try:
@@ -74,4 +98,8 @@ def read_text(self, fpath: str) -> str:
7498
ret = readobj.getvalue().decode("utf8")
7599
except smb_structs.OperationFailure as error:
76100
raise IOError(f"failed in read_text: {error}")
101+
except base.SMBTimeout as error:
102+
raise TimeoutError(f"read_text: {error}")
103+
except base.NotConnectedError as error:
104+
raise ConnectionError(f"read: {error}")
77105
return ret

0 commit comments

Comments
 (0)