Newer
Older
from multiprocessing import Process
import requests
import unittest
from conf.testing import czifile, output_path
from model_server.model import DummyImageToImageModel
class TestApiFromAutomatedClient(unittest.TestCase):
def setUp(self) -> None:
import uvicorn
host = '127.0.0.1'
port = 5000
self.server_process = Process(
target=uvicorn.run,
args=('api:app', ),
kwargs={'host': host, 'port': port, 'log_level': 'info'},
daemon=True
)
self.uri = f'http://{host}:{port}/'
self.server_process.start()
def tearDown(self) -> None:
self.server_process.terminate()
def test_trivial_api_response(self):
resp = requests.get(self.uri, )
self.assertEqual(resp.status_code, 200)
def test_list_empty_loaded_models(self):
resp = requests.get(self.uri + 'models')
self.assertEqual(resp.status_code, 200)
self.assertEqual(resp.content, b'{}')
def test_load_model(self):
model_id = DummyImageToImageModel.model_id

Christopher Randolph Rhodes
committed
resp_load = requests.get(self.uri + f'models/{model_id}/load')
self.assertEqual(resp_load.status_code, 200)
resp_list = requests.get(self.uri + 'models')
self.assertEqual(resp_list.status_code, 200)
self.assertEqual(resp_list.content, b'{"model_id":"DummyImageToImageModel"}')
def test_i2i_inference_errors_model_not_sound(self):
model_id = 'not_a_real_model'
resp = requests.post(self.uri + f'i2i/infer/{model_id}')
self.assertEqual(resp.status_code, 404)
def test_i2i_dummy_inference_by_api(self):
model = DummyImageToImageModel()
model_id = model.model_id
resp = requests.post(
self.uri + f'/i2i/infer/{model_id}',
str(czifile['path']),
)
print(resp)
self.assertEqual(resp.status_code, 200)