From af45b5a11a8a393ed404be3ce0ecac14338155c7 Mon Sep 17 00:00:00 2001 From: Vladimir Repin <32306715+mezotaken@users.noreply.github.com> Date: Sat, 29 Oct 2022 18:26:28 +0300 Subject: Testing with API added --- run_tests.bat | 15 ++++++++++ test/__init__.py | 0 test/server_poll.py | 17 +++++++++++ test/txt2img_test.py | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 run_tests.bat create mode 100644 test/__init__.py create mode 100644 test/server_poll.py create mode 100644 test/txt2img_test.py diff --git a/run_tests.bat b/run_tests.bat new file mode 100644 index 00000000..3a63f034 --- /dev/null +++ b/run_tests.bat @@ -0,0 +1,15 @@ +@echo off +set ERROR_REPORTING=FALSE +set COMMANDLINE_ARGS= --api +echo Launching SDWebUI... +start "SDWebUITest" webui.bat + +if not defined PYTHON (set PYTHON=python) +if not defined VENV_DIR (set VENV_DIR=venv) +set PYTHON="%~dp0%VENV_DIR%\Scripts\Python.exe" +%PYTHON% test/server_poll.py +for /f "tokens=2 delims=," %%a in ('tasklist /v /fo csv ^| findstr /i "SDWebUITest"') do set "$PID=%%a" + +taskkill /PID %$PID% >nul 2>&1 + +pause diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/server_poll.py b/test/server_poll.py new file mode 100644 index 00000000..8c0436f8 --- /dev/null +++ b/test/server_poll.py @@ -0,0 +1,17 @@ +import unittest +import requests +import time + +timeout_threshold = 240 +start_time = time.time() +while time.time()-start_time < timeout_threshold: + try: + requests.head("http://localhost:7860/") + break + except requests.exceptions.ConnectionError: + pass +if time.time()-start_time < timeout_threshold: + suite = unittest.TestLoader().discover('', pattern='*_test.py') + result = unittest.TextTestRunner(verbosity=2).run(suite) +else: + print("Launch unsuccessful") diff --git a/test/txt2img_test.py b/test/txt2img_test.py new file mode 100644 index 00000000..9484fd99 --- /dev/null +++ b/test/txt2img_test.py @@ -0,0 +1,80 @@ +import unittest +import requests +import time + +url_txt2img = "http://localhost:7860/sdapi/v1/txt2img" +simple_txt2img = { + "enable_hr": False, + "denoising_strength": 0, + "firstphase_width": 0, + "firstphase_height": 0, + "prompt": "example prompt", + "styles": [ + "" + ], + "seed": -1, + "subseed": -1, + "subseed_strength": 0, + "seed_resize_from_h": -1, + "seed_resize_from_w": -1, + "batch_size": 1, + "n_iter": 1, + "steps": 5, + "cfg_scale": 7, + "width": 64, + "height": 64, + "restore_faces": False, + "tiling": False, + "negative_prompt": "", + "eta": 0, + "s_churn": 0, + "s_tmax": 0, + "s_tmin": 0, + "s_noise": 1, + "sampler_index": "Euler a" +} + +class TestTxt2ImgWorking(unittest.TestCase): + def test_txt2img_simple_performed(self): + self.assertEqual(requests.post(url_txt2img, json=simple_txt2img).status_code, 200) + + def test_txt2img_with_negative_prompt_performed(self): + params = simple_txt2img.copy() + params["negative_prompt"] = "example negative prompt" + self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + + def test_txt2img_not_square_image_performed(self): + params = simple_txt2img.copy() + params["height"] = 128 + self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + + def test_txt2img_with_hrfix_performed(self): + params = simple_txt2img.copy() + params["enable_hr"] = True + self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + + def test_txt2img_with_restore_faces_performed(self): + params = simple_txt2img.copy() + params["restore_faces"] = True + self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + + def test_txt2img_with_tiling_faces_performed(self): + params = simple_txt2img.copy() + params["tiling"] = True + self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + + def test_txt2img_with_vanilla_sampler_performed(self): + params = simple_txt2img.copy() + params["sampler_index"] = "PLMS" + self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + + def test_txt2img_multiple_batches_performed(self): + params = simple_txt2img.copy() + params["n_iter"] = 2 + self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + +class TestTxt2ImgCorrectness(unittest.TestCase): + pass + +if __name__ == "__main__": + unittest.main() -- cgit v1.2.3 From 2f3d8172c3fe80ea64ebe5c797835ca15c2e595f Mon Sep 17 00:00:00 2001 From: Vladimir Repin <32306715+mezotaken@users.noreply.github.com> Date: Sat, 29 Oct 2022 21:43:32 +0300 Subject: img2img test template and setUp added --- test/extras_test.py | 0 test/img2img_test.py | 59 ++++++++++++++++++++++ test/test_files/img2img_basic.png | Bin 0 -> 9932 bytes test/test_files/mask_basic.png | Bin 0 -> 362 bytes test/txt2img_test.py | 102 ++++++++++++++++++-------------------- 5 files changed, 106 insertions(+), 55 deletions(-) create mode 100644 test/extras_test.py create mode 100644 test/img2img_test.py create mode 100644 test/test_files/img2img_basic.png create mode 100644 test/test_files/mask_basic.png diff --git a/test/extras_test.py b/test/extras_test.py new file mode 100644 index 00000000..e69de29b diff --git a/test/img2img_test.py b/test/img2img_test.py new file mode 100644 index 00000000..d8ed309d --- /dev/null +++ b/test/img2img_test.py @@ -0,0 +1,59 @@ +import unittest +import requests +from gradio.processing_utils import encode_pil_to_base64 +from PIL import Image + +class Img2ImgWorking(unittest.TestCase): + def setUp(self): + self.url_img2img = "http://localhost:7860/sdapi/v1/img2img" + self.simple_img2img = { + "init_images": [ + encode_pil_to_base64(Image.open(r"test/test_files/img2img_basic.png")) + ], + "resize_mode": 0, + "denoising_strength": 0.75, + "mask": None, + "mask_blur": 4, + "inpainting_fill": 0, + "inpaint_full_res": False, + "inpaint_full_res_padding": 0, + "inpainting_mask_invert": 0, + "prompt": "example prompt", + "styles": [ + "" + ], + "seed": -1, + "subseed": -1, + "subseed_strength": 0, + "seed_resize_from_h": -1, + "seed_resize_from_w": -1, + "batch_size": 1, + "n_iter": 1, + "steps": 3, + "cfg_scale": 7, + "width": 64, + "height": 64, + "restore_faces": False, + "tiling": False, + "negative_prompt": "", + "eta": 0, + "s_churn": 0, + "s_tmax": 0, + "s_tmin": 0, + "s_noise": 1, + "override_settings": {}, + "sampler_index": "Euler a", + "include_init_images": False + } + def test_img2img_simple_performed(self): + self.assertEqual(requests.post(self.url_img2img, json=self.simple_img2img).status_code, 200) + + def test_inpainting_masked_performed(self): + self.simple_img2img["mask"] = encode_pil_to_base64(Image.open(r"test/test_files/mask_basic.png")) + self.assertEqual(requests.post(self.url_img2img, json=self.simple_img2img).status_code, 200) + +class TestImg2ImgCorrectness(unittest.TestCase): + pass + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/test/test_files/img2img_basic.png b/test/test_files/img2img_basic.png new file mode 100644 index 00000000..49a42048 Binary files /dev/null and b/test/test_files/img2img_basic.png differ diff --git a/test/test_files/mask_basic.png b/test/test_files/mask_basic.png new file mode 100644 index 00000000..0c2e9a68 Binary files /dev/null and b/test/test_files/mask_basic.png differ diff --git a/test/txt2img_test.py b/test/txt2img_test.py index 9484fd99..ad27686a 100644 --- a/test/txt2img_test.py +++ b/test/txt2img_test.py @@ -1,77 +1,69 @@ import unittest import requests -import time - -url_txt2img = "http://localhost:7860/sdapi/v1/txt2img" -simple_txt2img = { - "enable_hr": False, - "denoising_strength": 0, - "firstphase_width": 0, - "firstphase_height": 0, - "prompt": "example prompt", - "styles": [ - "" - ], - "seed": -1, - "subseed": -1, - "subseed_strength": 0, - "seed_resize_from_h": -1, - "seed_resize_from_w": -1, - "batch_size": 1, - "n_iter": 1, - "steps": 5, - "cfg_scale": 7, - "width": 64, - "height": 64, - "restore_faces": False, - "tiling": False, - "negative_prompt": "", - "eta": 0, - "s_churn": 0, - "s_tmax": 0, - "s_tmin": 0, - "s_noise": 1, - "sampler_index": "Euler a" -} class TestTxt2ImgWorking(unittest.TestCase): + def setUp(self): + self.url_txt2img = "http://localhost:7860/sdapi/v1/txt2img" + self.simple_txt2img = { + "enable_hr": False, + "denoising_strength": 0, + "firstphase_width": 0, + "firstphase_height": 0, + "prompt": "example prompt", + "styles": [ + "" + ], + "seed": -1, + "subseed": -1, + "subseed_strength": 0, + "seed_resize_from_h": -1, + "seed_resize_from_w": -1, + "batch_size": 1, + "n_iter": 1, + "steps": 3, + "cfg_scale": 7, + "width": 64, + "height": 64, + "restore_faces": False, + "tiling": False, + "negative_prompt": "", + "eta": 0, + "s_churn": 0, + "s_tmax": 0, + "s_tmin": 0, + "s_noise": 1, + "sampler_index": "Euler a" + } def test_txt2img_simple_performed(self): - self.assertEqual(requests.post(url_txt2img, json=simple_txt2img).status_code, 200) + self.assertEqual(requests.post(self.url_txt2img, json=self.simple_txt2img).status_code, 200) def test_txt2img_with_negative_prompt_performed(self): - params = simple_txt2img.copy() - params["negative_prompt"] = "example negative prompt" - self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + self.simple_txt2img["negative_prompt"] = "example negative prompt" + self.assertEqual(requests.post(self.url_txt2img, json=self.simple_txt2img).status_code, 200) def test_txt2img_not_square_image_performed(self): - params = simple_txt2img.copy() - params["height"] = 128 - self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + self.simple_txt2img["height"] = 128 + self.assertEqual(requests.post(self.url_txt2img, json=self.simple_txt2img).status_code, 200) def test_txt2img_with_hrfix_performed(self): - params = simple_txt2img.copy() - params["enable_hr"] = True - self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + self.simple_txt2img["enable_hr"] = True + self.assertEqual(requests.post(self.url_txt2img, json=self.simple_txt2img).status_code, 200) def test_txt2img_with_restore_faces_performed(self): - params = simple_txt2img.copy() - params["restore_faces"] = True - self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + self.simple_txt2img["restore_faces"] = True + self.assertEqual(requests.post(self.url_txt2img, json=self.simple_txt2img).status_code, 200) def test_txt2img_with_tiling_faces_performed(self): - params = simple_txt2img.copy() - params["tiling"] = True - self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + self.simple_txt2img["tiling"] = True + self.assertEqual(requests.post(self.url_txt2img, json=self.simple_txt2img).status_code, 200) def test_txt2img_with_vanilla_sampler_performed(self): - params = simple_txt2img.copy() - params["sampler_index"] = "PLMS" - self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + self.simple_txt2img["sampler_index"] = "PLMS" + self.assertEqual(requests.post(self.url_txt2img, json=self.simple_txt2img).status_code, 200) def test_txt2img_multiple_batches_performed(self): - params = simple_txt2img.copy() - params["n_iter"] = 2 - self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200) + self.simple_txt2img["n_iter"] = 2 + self.assertEqual(requests.post(self.url_txt2img, json=self.simple_txt2img).status_code, 200) class TestTxt2ImgCorrectness(unittest.TestCase): pass -- cgit v1.2.3 From ffc5b700c417924a77797fc5e02c219f10d801be Mon Sep 17 00:00:00 2001 From: Vladimir Repin <32306715+mezotaken@users.noreply.github.com> Date: Sat, 29 Oct 2022 21:50:06 +0300 Subject: extras test template added --- test/extras_test.py | 29 +++++++++++++++++++++++++++++ test/img2img_test.py | 4 ++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/test/extras_test.py b/test/extras_test.py index e69de29b..2e1764d9 100644 --- a/test/extras_test.py +++ b/test/extras_test.py @@ -0,0 +1,29 @@ +import unittest +import requests +from gradio.processing_utils import encode_pil_to_base64 +from PIL import Image + +class TestExtrasWorking(unittest.TestCase): + def setUp(self): + self.url_img2img = "http://localhost:7860/sdapi/v1/extra-single-image" + self.simple_extras = { + "resize_mode": 0, + "show_extras_results": True, + "gfpgan_visibility": 0, + "codeformer_visibility": 0, + "codeformer_weight": 0, + "upscaling_resize": 2, + "upscaling_resize_w": 512, + "upscaling_resize_h": 512, + "upscaling_crop": True, + "upscaler_1": "None", + "upscaler_2": "None", + "extras_upscaler_2_visibility": 0, + "image": "" + } + +class TestExtrasCorrectness(unittest.TestCase): + pass + +if __name__ == "__main__": + unittest.main() diff --git a/test/img2img_test.py b/test/img2img_test.py index d8ed309d..61e3e285 100644 --- a/test/img2img_test.py +++ b/test/img2img_test.py @@ -3,7 +3,7 @@ import requests from gradio.processing_utils import encode_pil_to_base64 from PIL import Image -class Img2ImgWorking(unittest.TestCase): +class TestImg2ImgWorking(unittest.TestCase): def setUp(self): self.url_img2img = "http://localhost:7860/sdapi/v1/img2img" self.simple_img2img = { @@ -56,4 +56,4 @@ class TestImg2ImgCorrectness(unittest.TestCase): pass if __name__ == "__main__": - unittest.main() \ No newline at end of file + unittest.main() -- cgit v1.2.3