1
1
# Copyright (c) Microsoft Corporation. All rights reserved.
2
2
# Licensed under the MIT License.
3
3
import time
4
+ from datetime import datetime
4
5
5
6
from azure_functions_worker import testutils
6
7
@@ -25,6 +26,23 @@ def test_blob_io_str(self):
25
26
self .assertEqual (r .status_code , 200 )
26
27
self .assertEqual (r .text , 'test-data' )
27
28
29
+ @testutils .retryable_test (3 , 5 )
30
+ def test_blob_io_large_str (self ):
31
+ datetime_iso = datetime .utcnow ().isoformat ()
32
+ large_string = datetime_iso * 1024 * 1024 # 26 MB
33
+
34
+ r = self .webhost .request ('POST' , 'put_blob_str' , data = large_string )
35
+ self .assertEqual (r .status_code , 200 )
36
+ self .assertEqual (r .text , 'OK' )
37
+
38
+ r = self .webhost .request ('GET' , 'get_blob_str' )
39
+ self .assertEqual (r .status_code , 200 )
40
+ self .assertEqual (r .text , large_string )
41
+
42
+ r = self .webhost .request ('GET' , 'get_blob_as_str' )
43
+ self .assertEqual (r .status_code , 200 )
44
+ self .assertEqual (r .text , large_string )
45
+
28
46
@testutils .retryable_test (3 , 5 )
29
47
def test_blob_io_bytes (self ):
30
48
r = self .webhost .request ('POST' , 'put_blob_bytes' ,
@@ -40,6 +58,24 @@ def test_blob_io_bytes(self):
40
58
self .assertEqual (r .status_code , 200 )
41
59
self .assertEqual (r .text , 'test-dată' )
42
60
61
+ @testutils .retryable_test (3 , 5 )
62
+ def test_blob_io_large_bytes (self ):
63
+ datetime_iso = datetime .utcnow ().isoformat ()
64
+ large_string = datetime_iso * 1024 * 1024 # 26 MB
65
+
66
+ r = self .webhost .request ('POST' , 'put_blob_bytes' ,
67
+ data = large_string .encode ('utf-8' ))
68
+ self .assertEqual (r .status_code , 200 )
69
+ self .assertEqual (r .text , 'OK' )
70
+
71
+ r = self .webhost .request ('POST' , 'get_blob_bytes' )
72
+ self .assertEqual (r .status_code , 200 )
73
+ self .assertEqual (r .text , large_string )
74
+
75
+ r = self .webhost .request ('POST' , 'get_blob_as_bytes' )
76
+ self .assertEqual (r .status_code , 200 )
77
+ self .assertEqual (r .text , large_string )
78
+
43
79
@testutils .retryable_test (3 , 5 )
44
80
def test_blob_io_filelike (self ):
45
81
r = self .webhost .request ('POST' , 'put_blob_filelike' )
@@ -61,17 +97,53 @@ def test_blob_io_return(self):
61
97
62
98
@testutils .retryable_test (3 , 5 )
63
99
def test_blob_trigger (self ):
64
- data = str (round (time .time ()))
100
+ datetime_iso = datetime .utcnow ().isoformat ()
101
+ data = datetime_iso
65
102
66
103
r = self .webhost .request ('POST' , 'put_blob_trigger' ,
67
104
data = data .encode ('utf-8' ))
68
105
self .assertEqual (r .status_code , 200 )
69
106
self .assertEqual (r .text , 'OK' )
70
107
108
+ # Blob trigger may be processed after some delay
109
+ # We check it every 2 seconds to allow the trigger to be fired
71
110
max_retries = 10
111
+ for try_no in range (max_retries ):
112
+ time .sleep (2 )
72
113
114
+ try :
115
+ # Check that the trigger has fired
116
+ r = self .webhost .request ('GET' , 'get_blob_triggered' )
117
+ self .assertEqual (r .status_code , 200 )
118
+ response = r .json ()
119
+
120
+ self .assertEqual (
121
+ response ,
122
+ {
123
+ 'name' : 'python-worker-tests/test-blob-trigger.txt' ,
124
+ 'length' : len (data ),
125
+ 'content' : data
126
+ }
127
+ )
128
+ break
129
+ except AssertionError :
130
+ if try_no == max_retries - 1 :
131
+ raise
132
+
133
+ @testutils .retryable_test (3 , 5 )
134
+ def test_blob_trigger_with_large_content (self ):
135
+ datetime_iso = datetime .utcnow ().isoformat ()
136
+ data = datetime_iso * 1024 * 1024 # 26 MB
137
+
138
+ r = self .webhost .request ('POST' , 'put_blob_trigger' ,
139
+ data = data .encode ('utf-8' ))
140
+ self .assertEqual (r .status_code , 200 )
141
+ self .assertEqual (r .text , 'OK' )
142
+
143
+ # Blob trigger may be processed after some delay
144
+ # We check it every 2 seconds to allow the trigger to be fired
145
+ max_retries = 10
73
146
for try_no in range (max_retries ):
74
- # Allow trigger to fire
75
147
time .sleep (2 )
76
148
77
149
try :
@@ -84,10 +156,11 @@ def test_blob_trigger(self):
84
156
response ,
85
157
{
86
158
'name' : 'python-worker-tests/test-blob-trigger.txt' ,
87
- 'length' : 10 ,
159
+ 'length' : len ( data ) ,
88
160
'content' : data
89
161
}
90
162
)
163
+ break
91
164
except AssertionError :
92
165
if try_no == max_retries - 1 :
93
166
raise
0 commit comments