|
1 | 1 | # Copyright 2021 The MathWorks, Inc. |
2 | 2 |
|
3 | | -from jupyter_matlab_proxy.devel import xvfb |
4 | 3 | import pytest, asyncio, aiohttp, os, json, psutil, socket, subprocess, time, requests |
5 | 4 | from unittest.mock import patch |
6 | 5 | from aiohttp import web |
@@ -138,74 +137,32 @@ def test_marshal_error(actual_error, expected_error): |
138 | 137 |
|
139 | 138 |
|
140 | 139 | class FakeServer: |
141 | | - """Context Manager class which returns a web server wrapped by aiohttp_client |
142 | | - for sending HTTP requests during testing. |
143 | | -
|
144 | | - executes the remove_zombie_matlab_process() method before starting the server |
145 | | - and after shutting it down so as to clear out any |
| 140 | + """Context Manager class which returns a web server wrapped in aiohttp_client pytest fixture |
| 141 | + for testing. |
146 | 142 | """ |
147 | 143 |
|
148 | 144 | def __init__(self, loop, aiohttp_client): |
149 | 145 | self.loop = loop |
150 | 146 | self.aiohttp_client = aiohttp_client |
151 | | - self.pretest_dev_processes = None |
152 | | - self.posttest_dev_processes = None |
153 | | - self.zombie_dev_processes = None |
154 | 147 |
|
155 | 148 | def __enter__(self): |
156 | | - |
157 | | - self.pretest_dev_processes = set(self.gather_running_dev_processes()) |
158 | | - |
159 | | - # self.patcher = patch( |
160 | | - # "jupyter_matlab_proxy.app_state.AppState.reserve_matlab_port", |
161 | | - # new=MockServerPort.mock_reserve_port, |
162 | | - # ) |
163 | | - |
164 | | - # self.patcher.start() |
165 | | - |
166 | 149 | self.server = app.create_app() |
167 | 150 | self.runner = web.AppRunner(self.server) |
168 | | - |
169 | 151 | self.loop.run_until_complete(self.runner.setup()) |
170 | 152 |
|
171 | 153 | self.site = web.TCPSite( |
172 | 154 | self.runner, |
173 | 155 | host=self.server["settings"]["host_interface"], |
174 | 156 | port=self.server["settings"]["app_port"], |
175 | 157 | ) |
176 | | - |
177 | 158 | self.loop.run_until_complete(self.site.start()) |
| 159 | + |
178 | 160 | return self.loop.run_until_complete(self.aiohttp_client(self.server)) |
179 | 161 |
|
180 | 162 | def __exit__(self, exc_type, exc_value, exc_traceback): |
181 | | - |
182 | 163 | self.loop.run_until_complete(self.runner.shutdown()) |
183 | 164 | self.loop.run_until_complete(self.runner.cleanup()) |
184 | 165 |
|
185 | | - # self.patcher.stop() |
186 | | - |
187 | | - self.posttest_dev_processes = set(self.gather_running_dev_processes()) |
188 | | - self.zombie_dev_processes = ( |
189 | | - self.posttest_dev_processes - self.pretest_dev_processes |
190 | | - ) |
191 | | - |
192 | | - for process in self.zombie_dev_processes: |
193 | | - process.terminate() |
194 | | - |
195 | | - gone, alive = psutil.wait_procs(self.zombie_dev_processes) |
196 | | - |
197 | | - for process in alive: |
198 | | - process.kill() |
199 | | - |
200 | | - def gather_running_dev_processes(self): |
201 | | - running_dev_processes = [] |
202 | | - for process in psutil.process_iter(["pid", "name"]): |
203 | | - cmd = process.cmdline() |
204 | | - if len(cmd) > 3 and "devel.py" in cmd[2]: |
205 | | - running_dev_processes.append(process) |
206 | | - |
207 | | - return running_dev_processes |
208 | | - |
209 | 166 |
|
210 | 167 | @pytest.fixture(name="test_server") |
211 | 168 | def test_server_fixture( |
@@ -255,11 +212,6 @@ async def test_start_matlab_route(test_server): |
255 | 212 | assert resp.status == 200 |
256 | 213 |
|
257 | 214 | resp_json = json.loads(await resp.text()) |
258 | | - # print(test_server.app["state"].settings) |
259 | | - # print(resp) |
260 | | - # print(resp_json) |
261 | | - # break |
262 | | - |
263 | 215 | if resp_json["matlab"]["status"] == "up": |
264 | 216 | break |
265 | 217 | else: |
@@ -336,7 +288,8 @@ async def test_matlab_proxy_404(proxy_payload, test_server): |
336 | 288 |
|
337 | 289 | headers = {"content-type": "application/json"} |
338 | 290 |
|
339 | | - # Request a non-existing html file. Request gets proxied to app.matlab_view() which should raise HTTPNotFound() exception ie. return HTTP status code 404 |
| 291 | + # Request a non-existing html file. |
| 292 | + # Request gets proxied to app.matlab_view() which should raise HTTPNotFound() exception ie. return HTTP status code 404 |
340 | 293 | resp = await test_server.post( |
341 | 294 | "./1234.html", data=json.dumps(proxy_payload), headers=headers |
342 | 295 | ) |
|
0 commit comments