|
- import os
- import unittest
- import argparse
- import numpy as np
-
- from learnware.learnware import get_learnware_from_dirpath
- from learnware.client import LearnwareClient
- from learnware.client.container import ModelCondaContainer, LearnwaresContainer
- from learnware.tests import parametrize
-
- class TestContainer(unittest.TestCase):
- def __init__(self, method_name='runTest', mode="all"):
- super(TestContainer, self).__init__(method_name)
- self.modes = []
- if mode in {"all", "conda"}:
- self.modes.append("conda")
- if mode in {"all", "docker"}:
- self.modes.append("docker")
-
- def setUp(self):
- self.client = LearnwareClient()
-
- def _test_container_with_pip(self, mode):
- learnware_id = "00000147"
- learnware = self.client.load_learnware(learnware_id=learnware_id)
- with LearnwaresContainer(learnware, ignore_error=False, mode=mode) as env_container:
- learnware = env_container.get_learnwares_with_container()[0]
- input_array = np.random.random(size=(20, 23))
- print(learnware.predict(input_array))
-
- def _test_container_with_conda(self, mode):
- learnware_id = "00000148"
- learnware = self.client.load_learnware(learnware_id=learnware_id)
- with LearnwaresContainer(learnware, ignore_error=False, mode=mode) as env_container:
- learnware = env_container.get_learnwares_with_container()[0]
- input_array = np.random.random(size=(20, 204))
- print(learnware.predict(input_array))
-
- def test_container_with_pip(self):
- for mode in self.modes:
- self._test_container_with_pip(mode=mode)
-
- def test_container_with_conda(self):
- for mode in self.modes:
- self._test_container_with_conda(mode=mode)
-
- if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument("--mode", type=str, required=False, default="all", help="The mode to run container, must be in ['all', 'conda', 'docker']")
- args = parser.parse_args()
-
- assert args.mode in {"all", "conda", "docker"}, f"The mode must be in ['all', 'conda', 'docker'], instead of '{args.mode}'"
- runner = unittest.TextTestRunner()
- runner.run(parametrize(TestContainer, mode=args.mode))
|