20
20
21
21
22
22
class TestHandleEvent (testutils .AsyncTestCase ):
23
- async def test_worker_init_request (self ):
23
+ @patch ("azure_functions_worker_v2.handle_event.index_function_app" )
24
+ async def test_worker_init_request (self , mock_index_function_app ):
24
25
worker_request = WorkerRequest (name = 'worker_init_request' ,
25
26
request = Request (FunctionRequest (
26
27
'hello' ,
27
28
BASIC_FUNCTION_DIRECTORY )),
28
29
properties = {'host' : '123' ,
29
30
'protos' : test_protos })
30
31
result = await worker_init_request (worker_request )
32
+ mock_index_function_app .assert_called_once ()
31
33
self .assertEqual (result .capabilities , {'WorkerStatus' : 'true' ,
32
34
'RpcHttpBodyOnly' : 'true' ,
33
35
'SharedMemoryDataTransfer' : 'true' ,
@@ -44,16 +46,19 @@ async def test_worker_init_request(self):
44
46
return_value = True )
45
47
@patch ("azure_functions_worker_v2.handle_event.initialize_http_server" ,
46
48
return_value = "http://mock_address" )
49
+ @patch ("azure_functions_worker_v2.handle_event.index_function_app" )
47
50
async def test_worker_init_request_with_streaming (self ,
48
51
mock_http_v2_enabled ,
49
- mock_initialize_http_server ):
52
+ mock_initialize_http_server ,
53
+ mock_index_function_app ):
50
54
worker_request = WorkerRequest (name = 'worker_init_request' ,
51
55
request = Request (FunctionRequest (
52
56
'hello' ,
53
57
STREAMING_FUNCTION_DIRECTORY )),
54
58
properties = {'host' : '123' ,
55
59
'protos' : test_protos })
56
60
result = await worker_init_request (worker_request )
61
+ mock_index_function_app .assert_called_once ()
57
62
self .assertEqual (result .capabilities , {'WorkerStatus' : 'true' ,
58
63
'RpcHttpBodyOnly' : 'true' ,
59
64
'SharedMemoryDataTransfer' : 'true' ,
@@ -71,14 +76,18 @@ async def test_worker_init_request_with_streaming(self,
71
76
@patch ("azure_functions_worker_v2.handle_event"
72
77
".otel_manager.get_azure_monitor_available" ,
73
78
return_value = True )
74
- async def test_worker_init_request_with_otel (self , mock_otel_enabled ):
79
+ @patch ("azure_functions_worker_v2.handle_event.index_function_app" )
80
+ async def test_worker_init_request_with_otel (self ,
81
+ mock_otel_enabled ,
82
+ mock_index_function_app ):
75
83
worker_request = WorkerRequest (name = 'worker_init_request' ,
76
84
request = Request (FunctionRequest (
77
85
'hello' ,
78
86
BASIC_FUNCTION_DIRECTORY )),
79
87
properties = {'host' : '123' ,
80
88
'protos' : test_protos })
81
89
result = await worker_init_request (worker_request )
90
+ mock_index_function_app .assert_called_once ()
82
91
self .assertEqual (result .capabilities , {'WorkerStatus' : 'true' ,
83
92
'RpcHttpBodyOnly' : 'true' ,
84
93
'SharedMemoryDataTransfer' : 'true' ,
@@ -93,8 +102,7 @@ async def test_worker_init_request_with_otel(self, mock_otel_enabled):
93
102
self .assertEqual (result .result .status , 1 )
94
103
95
104
async def test_worker_init_request_with_exception (self ):
96
- # Even if an exception happens during indexing,
97
- # we still return the WorkerInitResponse
105
+ # If an exception happens during indexing, we return failure
98
106
worker_request = WorkerRequest (name = 'worker_init_request' ,
99
107
request = Request (FunctionRequest (
100
108
'hello' ,
@@ -112,23 +120,16 @@ async def test_worker_init_request_with_exception(self):
112
120
self .assertIsNotNone (result .worker_metadata .runtime_version )
113
121
self .assertIsNotNone (result .worker_metadata .worker_version )
114
122
self .assertIsNotNone (result .worker_metadata .worker_bitness )
115
- self .assertEqual (result .result .status , 1 )
123
+ self .assertEqual (result .result .status , 0 )
116
124
117
125
async def test_functions_metadata_request (self ):
126
+ # We always succeed in metadata request - exceptions are raised
127
+ # in init
118
128
handle_event .protos = test_protos
119
- handle_event ._metadata_exception = None
120
129
metadata_result = await functions_metadata_request (None )
121
130
self .assertEqual (metadata_result .result .status , 1 )
122
131
123
- async def test_functions_metadata_request_with_exception (self ):
124
- handle_event .protos = test_protos
125
- handle_event ._metadata_exception = Exception
126
- metadata_result = await functions_metadata_request (None )
127
- self .assertEqual (metadata_result .result .status , 0 )
128
- handle_event ._metadata_exception = None
129
-
130
- @patch ("azure_functions_worker_v2.loader.index_function_app" ,
131
- return_value = True )
132
+ @patch ("azure_functions_worker_v2.handle_event.index_function_app" )
132
133
async def test_function_environment_reload_request (self , mock_index_function_app ):
133
134
worker_request = WorkerRequest (name = 'function_environment_reload_request' ,
134
135
request = Request (FunctionRequest (
@@ -138,6 +139,7 @@ async def test_function_environment_reload_request(self, mock_index_function_app
138
139
'protos' : test_protos })
139
140
handle_event .protos = test_protos
140
141
result = await function_environment_reload_request (worker_request )
142
+ mock_index_function_app .assert_called_once ()
141
143
self .assertEqual (result .capabilities , {})
142
144
self .assertEqual (result .worker_metadata .runtime_name , "python" )
143
145
self .assertIsNotNone (result .worker_metadata .runtime_version )
@@ -149,10 +151,12 @@ async def test_function_environment_reload_request(self, mock_index_function_app
149
151
return_value = True )
150
152
@patch ("azure_functions_worker_v2.handle_event.initialize_http_server" ,
151
153
return_value = "http://mock_address" )
154
+ @patch ("azure_functions_worker_v2.handle_event.index_function_app" )
152
155
async def test_function_environment_reload_request_with_streaming (
153
156
self ,
154
157
mock_http_v2_enabled ,
155
- mock_initialize_http_server ):
158
+ mock_initialize_http_server ,
159
+ mock_index_function_app ):
156
160
handle_event .protos = test_protos
157
161
worker_request = WorkerRequest (name = 'function_environment_reload_request' ,
158
162
request = Request (FunctionRequest (
@@ -161,6 +165,7 @@ async def test_function_environment_reload_request_with_streaming(
161
165
properties = {'host' : '123' ,
162
166
'protos' : test_protos })
163
167
result = await function_environment_reload_request (worker_request )
168
+ mock_index_function_app .assert_called_once ()
164
169
self .assertEqual (result .capabilities , {'HttpUri' : 'http://mock_address' ,
165
170
'RequiresRouteParameters' : 'true' })
166
171
self .assertEqual (result .worker_metadata .runtime_name , "python" )
@@ -172,8 +177,11 @@ async def test_function_environment_reload_request_with_streaming(
172
177
@patch ("azure_functions_worker_v2.handle_event"
173
178
".otel_manager.get_azure_monitor_available" ,
174
179
return_value = True )
175
- async def test_function_environment_reload_request_with_otel (self ,
176
- mock_otel_enabled ):
180
+ @patch ("azure_functions_worker_v2.handle_event.index_function_app" )
181
+ async def test_function_environment_reload_request_with_otel (
182
+ self ,
183
+ mock_otel_enabled ,
184
+ mock_index_function_app ):
177
185
handle_event .protos = test_protos
178
186
worker_request = WorkerRequest (name = 'function_environment_reload_request' ,
179
187
request = Request (FunctionRequest (
@@ -182,6 +190,7 @@ async def test_function_environment_reload_request_with_otel(self,
182
190
properties = {'host' : '123' ,
183
191
'protos' : test_protos })
184
192
result = await function_environment_reload_request (worker_request )
193
+ mock_index_function_app .assert_called_once ()
185
194
self .assertEqual (result .capabilities , {'WorkerOpenTelemetryEnabled' : 'true' })
186
195
self .assertEqual (result .worker_metadata .runtime_name , "python" )
187
196
self .assertIsNotNone (result .worker_metadata .runtime_version )
@@ -190,8 +199,7 @@ async def test_function_environment_reload_request_with_otel(self,
190
199
self .assertEqual (result .result .status , 1 )
191
200
192
201
async def test_function_environment_reload_request_with_exception (self ):
193
- # Even if an exception happens during indexing,
194
- # we still return success
202
+ # If an exception happens during indexing, the worker reports failure
195
203
handle_event .protos = test_protos
196
204
worker_request = WorkerRequest (name = 'function_environment_reload_request' ,
197
205
request = Request (FunctionRequest (
@@ -200,9 +208,4 @@ async def test_function_environment_reload_request_with_exception(self):
200
208
properties = {'host' : '123' ,
201
209
'protos' : test_protos })
202
210
result = await function_environment_reload_request (worker_request )
203
- self .assertEqual (result .capabilities , {})
204
- self .assertEqual (result .worker_metadata .runtime_name , "python" )
205
- self .assertIsNotNone (result .worker_metadata .runtime_version )
206
- self .assertIsNotNone (result .worker_metadata .worker_version )
207
- self .assertIsNotNone (result .worker_metadata .worker_bitness )
208
- self .assertEqual (result .result .status , 1 )
211
+ self .assertEqual (result .result .status , 0 )
0 commit comments