Skip to content

Commit 79af7bc

Browse files
committed
Added tests for closing handles on share snapshot
1 parent 3ee018e commit 79af7bc

File tree

4 files changed

+94
-25
lines changed

4 files changed

+94
-25
lines changed

azure-storage-file/azure/storage/file/_deserialization.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -204,21 +204,20 @@ def _convert_xml_to_handles(response):
204204
"""
205205
<?xml version="1.0" encoding="utf-8"?>
206206
<EnumerationResults>
207-
<HandleList>
208-
<Handle>
209-
<HandleId>handle-id</HandleId>
210-
<Path>file-or-directory-name-including-full-path</Path>
211-
<FileId>file-id</FileId>
212-
<ParentId>parent-file-id</ParentId>
213-
<SessionId>session-id</SessionId>
214-
<ClientIp>client-ip</ClientIp>
215-
<OpenTime>opened-time</OpenTime>
216-
<LastReconnectTime>lastreconnect-time</LastReconnectTime>
217-
</Handle>
218-
...
219-
</HandleList>
220-
<NextMarker>next-marker</NextMarker>
221-
</EnumerationResults>
207+
<Entries>
208+
<Handle>
209+
<HandleId>21123954401</HandleId>
210+
<Path />
211+
<FileId>0</FileId>
212+
<ParentId>0</ParentId>
213+
<SessionId>9385737614310506553</SessionId>
214+
<ClientIp>167.220.2.92:27553</ClientIp>
215+
<OpenTime>Fri, 03 May 2019 05:59:43 GMT</OpenTime>
216+
</Handle>
217+
...
218+
</Entries>
219+
<NextMarker />
220+
</EnumerationResults>'
222221
"""
223222
if response is None or response.body is None:
224223
return None

tests/file/test_handle.py

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,21 @@ def test_list_handles_on_share(self):
5959
# Assert
6060
self._validate_handles(handles)
6161

62+
#
63+
@record
64+
def test_list_handles_on_share_snapshot(self):
65+
# don't run live, since the test set up was highly manual
66+
# only run when recording, or playing back in CI
67+
if not TestMode.need_recording_file(self.test_mode):
68+
return
69+
70+
# Act
71+
handles = list(self.fs.list_handles(TEST_SHARE_NAME, recursive=True,
72+
snapshot="2019-05-08T23:27:24.0000000Z"))
73+
74+
# Assert
75+
self._validate_handles(handles)
76+
6277
@record
6378
def test_list_handles_with_marker(self):
6479
# don't run live, since the test set up was highly manual
@@ -78,7 +93,8 @@ def test_list_handles_with_marker(self):
7893
old_handle = handles[0]
7994

8095
# Continue listing
81-
remaining_handles = list(self.fs.list_handles(TEST_SHARE_NAME, recursive=True, marker=handle_generator.next_marker))
96+
remaining_handles = list(
97+
self.fs.list_handles(TEST_SHARE_NAME, recursive=True, marker=handle_generator.next_marker))
8298
self._validate_handles(handles)
8399

84100
# Make sure the old handle did not appear
@@ -99,6 +115,12 @@ def test_list_handles_on_directory(self):
99115
# Assert
100116
self._validate_handles(handles)
101117

118+
# Act
119+
handles = list(self.fs.list_handles(TEST_SHARE_NAME, directory_name='wut', recursive=False))
120+
121+
# Assert recursive option is functioning when disabled
122+
self.assertTrue(len(handles) == 0)
123+
102124
@record
103125
def test_list_handles_on_file(self):
104126
# don't run live, since the test set up was highly manual
@@ -142,10 +164,12 @@ def test_close_all_handle(self):
142164
self._validate_handles(handles)
143165

144166
# Act
145-
num_closed = list(self.fs.close_handles(TEST_SHARE_NAME, handle_id="*", recursive=True))
167+
total_num_handle_closed = 0
168+
for num_closed in self.fs.close_handles(TEST_SHARE_NAME, handle_id="*", recursive=True):
169+
total_num_handle_closed += num_closed
146170

147171
# Assert at least 1 handle has been closed
148-
self.assertTrue(1 < num_closed[0])
172+
self.assertTrue(total_num_handle_closed > 1)
149173

150174

151175
# ------------------------------------------------------------------------------

tests/recordings/test_handle.test_list_handles_on_directory.yaml

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,43 @@ interactions:
44
headers:
55
Connection: [keep-alive]
66
User-Agent: [Azure-Storage/1.4.0-1.4.0 (Python CPython 3.7.0; Darwin 18.5.0)]
7-
x-ms-client-request-id: [5a13996c-6d6b-11e9-8802-f218981b70f8]
8-
x-ms-date: ['Fri, 03 May 2019 06:19:05 GMT']
7+
x-ms-client-request-id: [b1e5f9ca-71e7-11e9-9256-acde48001122]
8+
x-ms-date: ['Wed, 08 May 2019 23:19:14 GMT']
99
x-ms-recursive: ['True']
1010
x-ms-version: ['2018-11-09']
1111
method: GET
1212
uri: https://storagename.file.core.windows.net/test/wut?comp=listhandles
1313
response:
14-
body: {string: "\uFEFF<?xml version=\"1.0\" encoding=\"utf-8\"?><EnumerationResults><Entries><Handle><HandleId>21123902372</HandleId><Path>wut/bla.txt</Path><FileId>13835136120607735808</FileId><ParentId>11529308504556830720</ParentId><SessionId>9385737614310506553</SessionId><ClientIp>167.220.2.92:27553</ClientIp><OpenTime>Fri,\
15-
\ 03 May 2019 04:52:31 GMT</OpenTime></Handle><Handle><HandleId>21123950645</HandleId><Path>wut/foo.txt</Path><FileId>9223450102180347904</FileId><ParentId>11529308504556830720</ParentId><SessionId>9385737614310506553</SessionId><ClientIp>167.220.2.92:27553</ClientIp><OpenTime>Fri,\
16-
\ 03 May 2019 05:57:45 GMT</OpenTime></Handle></Entries><NextMarker /></EnumerationResults>"}
14+
body: {string: "\uFEFF<?xml version=\"1.0\" encoding=\"utf-8\"?><EnumerationResults><Entries><Handle><HandleId>21515836371</HandleId><Path>wut/bla.text</Path><FileId>9223414917808259072</FileId><ParentId>11529308504556830720</ParentId><SessionId>9435289398791897169</SessionId><ClientIp>167.220.2.92:14118</ClientIp><OpenTime>Wed,\
15+
\ 08 May 2019 23:14:47 GMT</OpenTime></Handle></Entries><NextMarker /></EnumerationResults>"}
1716
headers:
1817
Content-Type: [application/xml]
19-
Date: ['Fri, 03 May 2019 06:19:05 GMT']
18+
Date: ['Wed, 08 May 2019 23:19:14 GMT']
2019
Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
2120
Transfer-Encoding: [chunked]
22-
x-ms-request-id: [85237ef2-701a-0003-4d78-01cc2c000000]
21+
x-ms-request-id: [8811ff12-e01a-0024-77f4-055665000000]
22+
x-ms-version: ['2018-11-09']
23+
status: {code: 200, message: OK}
24+
- request:
25+
body: null
26+
headers:
27+
Connection: [keep-alive]
28+
User-Agent: [Azure-Storage/1.4.0-1.4.0 (Python CPython 3.7.0; Darwin 18.5.0)]
29+
x-ms-client-request-id: [b20faa22-71e7-11e9-9256-acde48001122]
30+
x-ms-date: ['Wed, 08 May 2019 23:19:15 GMT']
31+
x-ms-recursive: ['False']
32+
x-ms-version: ['2018-11-09']
33+
method: GET
34+
uri: https://storagename.file.core.windows.net/test/wut?comp=listhandles
35+
response:
36+
body: {string: "\uFEFF<?xml version=\"1.0\" encoding=\"utf-8\"?><EnumerationResults><Entries\
37+
\ /><NextMarker /></EnumerationResults>"}
38+
headers:
39+
Content-Type: [application/xml]
40+
Date: ['Wed, 08 May 2019 23:19:14 GMT']
41+
Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
42+
Transfer-Encoding: [chunked]
43+
x-ms-request-id: [8811ff15-e01a-0024-78f4-055665000000]
2344
x-ms-version: ['2018-11-09']
2445
status: {code: 200, message: OK}
2546
version: 1
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
interactions:
2+
- request:
3+
body: null
4+
headers:
5+
Connection: [keep-alive]
6+
User-Agent: [Azure-Storage/1.4.0-1.4.0 (Python CPython 3.7.0; Darwin 18.5.0)]
7+
x-ms-client-request-id: [0166e1e2-71ea-11e9-9eaf-acde48001122]
8+
x-ms-date: ['Wed, 08 May 2019 23:35:47 GMT']
9+
x-ms-recursive: ['True']
10+
x-ms-version: ['2018-11-09']
11+
method: GET
12+
uri: https://storagename.file.core.windows.net/test?comp=listhandles&sharesnapshot=2019-05-08T23%3A27%3A24.0000000Z
13+
response:
14+
body: {string: "\uFEFF<?xml version=\"1.0\" encoding=\"utf-8\"?><EnumerationResults><Entries><Handle><HandleId>21515839124</HandleId><Path>wut</Path><FileId>11529308504556830720</FileId><ParentId>0</ParentId><SessionId>9435289398791897169</SessionId><ClientIp>167.220.2.92:14118</ClientIp><OpenTime>Wed,\
15+
\ 08 May 2019 23:32:16 GMT</OpenTime></Handle><Handle><HandleId>21515839125</HandleId><Path>wut</Path><FileId>11529308504556830720</FileId><ParentId>0</ParentId><SessionId>9435289398791897169</SessionId><ClientIp>167.220.2.92:14118</ClientIp><OpenTime>Wed,\
16+
\ 08 May 2019 23:32:17 GMT</OpenTime></Handle></Entries><NextMarker /></EnumerationResults>"}
17+
headers:
18+
Content-Type: [application/xml]
19+
Date: ['Wed, 08 May 2019 23:35:47 GMT']
20+
Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
21+
Transfer-Encoding: [chunked]
22+
x-ms-request-id: [d7453674-901a-002b-1bf6-05bb93000000]
23+
x-ms-version: ['2018-11-09']
24+
status: {code: 200, message: OK}
25+
version: 1

0 commit comments

Comments
 (0)