Browse Source

[MNT] refactor client load test

tags/v0.3.2
bxdd 2 years ago
parent
commit
fb76a9d98d
4 changed files with 101 additions and 173 deletions
  1. +0
    -82
      tests/test_learnware_client/test_load_conda.py
  2. +0
    -57
      tests/test_learnware_client/test_load_docker.py
  3. +101
    -0
      tests/test_learnware_client/test_load_learnware.py
  4. +0
    -34
      tests/test_learnware_client/test_reuse.py

+ 0
- 82
tests/test_learnware_client/test_load_conda.py View File

@@ -1,82 +0,0 @@
import os
import unittest
import zipfile
import numpy as np

import learnware
from learnware.learnware import get_learnware_from_dirpath
from learnware.client import LearnwareClient
from learnware.client.container import ModelCondaContainer, LearnwaresContainer
from learnware.reuse import AveragingReuser


class TestLearnwareLoad(unittest.TestCase):
def setUp(self):
unittest.TestCase.setUpClass()
self.client = LearnwareClient()

root = os.path.dirname(__file__)
self.learnware_ids = ["00000084", "00000154", "00000155"]
self.zip_paths = [os.path.join(root, x) for x in ["1.zip", "2.zip", "3.zip"]]

def test_load_single_learnware_by_zippath(self):
for learnware_id, zip_path in zip(self.learnware_ids, self.zip_paths):
self.client.download_learnware(learnware_id, zip_path)

learnware_list = [
self.client.load_learnware(learnware_path=zippath, runnable_option="conda") for zippath in self.zip_paths
]
reuser = AveragingReuser(learnware_list, mode="vote_by_label")
input_array = np.random.random(size=(20, 13))
print(reuser.predict(input_array))

for learnware in learnware_list:
print(learnware.id, learnware.predict(input_array))

def test_load_multi_learnware_by_zippath(self):
for learnware_id, zip_path in zip(self.learnware_ids, self.zip_paths):
self.client.download_learnware(learnware_id, zip_path)

learnware_list = self.client.load_learnware(learnware_path=self.zip_paths, runnable_option="conda")
reuser = AveragingReuser(learnware_list, mode="vote_by_label")
input_array = np.random.random(size=(20, 13))
print(reuser.predict(input_array))

for learnware in learnware_list:
print(learnware.id, learnware.predict(input_array))

def test_load_single_learnware_by_id(self):
learnware_list = [
self.client.load_learnware(learnware_id=idx, runnable_option="conda") for idx in self.learnware_ids
]
reuser = AveragingReuser(learnware_list, mode="vote_by_label")
input_array = np.random.random(size=(20, 13))
print(reuser.predict(input_array))

for learnware in learnware_list:
print(learnware.id, learnware.predict(input_array))

def test_load_multi_learnware_by_id(self):
learnware_list = self.client.load_learnware(learnware_id=self.learnware_ids, runnable_option="conda")
reuser = AveragingReuser(learnware_list, mode="vote_by_label")
input_array = np.random.random(size=(20, 13))
print(reuser.predict(input_array))

for learnware in learnware_list:
print(learnware.id, learnware.predict(input_array))

def test_load_single_learnware_by_id_pip(self):
learnware_id = "00000147"
learnware = self.client.load_learnware(learnware_id=learnware_id, runnable_option="conda")
input_array = np.random.random(size=(20, 23))
print(learnware.predict(input_array))

def test_load_single_learnware_by_id_conda(self):
learnware_id = "00000148"
learnware = self.client.load_learnware(learnware_id=learnware_id, runnable_option="conda")
input_array = np.random.random(size=(20, 204))
print(learnware.predict(input_array))


if __name__ == "__main__":
unittest.main()

+ 0
- 57
tests/test_learnware_client/test_load_docker.py View File

@@ -1,57 +0,0 @@
import os
import unittest
import zipfile
import numpy as np

import learnware
from learnware.learnware import get_learnware_from_dirpath
from learnware.client import LearnwareClient
from learnware.client.container import ModelCondaContainer, LearnwaresContainer
from learnware.reuse import AveragingReuser


class TestLearnwareLoad(unittest.TestCase):
def setUp(self):
unittest.TestCase.setUpClass()
self.client = LearnwareClient()

root = os.path.dirname(__file__)
self.learnware_ids = ["00000084", "00000154", "00000155"]
self.zip_paths = [os.path.join(root, x) for x in ["1.zip", "2.zip", "3.zip"]]

def test_load_multi_learnware_by_zippath(self):
for learnware_id, zip_path in zip(self.learnware_ids, self.zip_paths):
self.client.download_learnware(learnware_id, zip_path)

learnware_list = self.client.load_learnware(learnware_path=self.zip_paths, runnable_option="docker")
reuser = AveragingReuser(learnware_list, mode="vote_by_label")
input_array = np.random.random(size=(20, 13))
print(reuser.predict(input_array))

for learnware in learnware_list:
print(learnware.id, learnware.predict(input_array))

def test_load_multi_learnware_by_id(self):
learnware_list = self.client.load_learnware(learnware_id=self.learnware_ids, runnable_option="docker")
reuser = AveragingReuser(learnware_list, mode="vote_by_label")
input_array = np.random.random(size=(20, 13))
print(reuser.predict(input_array))

for learnware in learnware_list:
print(learnware.id, learnware.predict(input_array))

def test_load_single_learnware_by_id_pip(self):
learnware_id = "00000147"
learnware = self.client.load_learnware(learnware_id=learnware_id, runnable_option="docker")
input_array = np.random.random(size=(20, 23))
print(learnware.predict(input_array))

def test_load_single_learnware_by_id_conda(self):
learnware_id = "00000148"
learnware = self.client.load_learnware(learnware_id=learnware_id, runnable_option="docker")
input_array = np.random.random(size=(20, 204))
print(learnware.predict(input_array))


if __name__ == "__main__":
unittest.main()

+ 101
- 0
tests/test_learnware_client/test_load_learnware.py View File

@@ -0,0 +1,101 @@
import os
import unittest
import argparse
import numpy as np

import learnware
from learnware.learnware import get_learnware_from_dirpath
from learnware.client import LearnwareClient
from learnware.client.container import ModelCondaContainer, LearnwaresContainer
from learnware.reuse import AveragingReuser


class TestLearnwareLoadWithConda(unittest.TestCase):
def setUp(self):
self.client = LearnwareClient()
root = os.path.dirname(__file__)
self.learnware_ids = ["00000084", "00000154", "00000155"]
self.zip_paths = [os.path.join(root, x) for x in ["1.zip", "2.zip", "3.zip"]]
self.runnable_option = "conda"

#def test_load_single_learnware_by_zippath(self):
# for learnware_id, zip_path in zip(self.learnware_ids, self.zip_paths):
# self.client.download_learnware(learnware_id, zip_path)
#
# learnware_list = [
# self.client.load_learnware(learnware_path=zippath, runnable_option=self.runnable_option) for zippath in self.zip_paths
# ]
# reuser = AveragingReuser(learnware_list, mode="vote_by_label")
# input_array = np.random.random(size=(20, 13))
# print(reuser.predict(input_array))
#
# for learnware in learnware_list:
# print(learnware.id, learnware.predict(input_array))
#
#def test_load_multi_learnware_by_zippath(self):
# for learnware_id, zip_path in zip(self.learnware_ids, self.zip_paths):
# self.client.download_learnware(learnware_id, zip_path)
#
# learnware_list = self.client.load_learnware(learnware_path=self.zip_paths, runnable_option=self.runnable_option)
# reuser = AveragingReuser(learnware_list, mode="vote_by_label")
# input_array = np.random.random(size=(20, 13))
# print(reuser.predict(input_array))
#
# for learnware in learnware_list:
# print(learnware.id, learnware.predict(input_array))
#
#def test_load_single_learnware_by_id(self):
# learnware_list = [
# self.client.load_learnware(learnware_id=idx, runnable_option=self.runnable_option) for idx in self.learnware_ids
# ]
# reuser = AveragingReuser(learnware_list, mode="vote_by_label")
# input_array = np.random.random(size=(20, 13))
# print(reuser.predict(input_array))
#
# for learnware in learnware_list:
# print(learnware.id, learnware.predict(input_array))
#
#def test_load_multi_learnware_by_id(self):
# learnware_list = self.client.load_learnware(learnware_id=self.learnware_ids, runnable_option=self.runnable_option)
# reuser = AveragingReuser(learnware_list, mode="vote_by_label")
# input_array = np.random.random(size=(20, 13))
# print(reuser.predict(input_array))
#
# for learnware in learnware_list:
# print(learnware.id, learnware.predict(input_array))
#
def test_load_single_learnware_by_id_pip(self):
learnware_id = "00000147"
learnware = self.client.load_learnware(learnware_id=learnware_id, runnable_option=self.runnable_option)
input_array = np.random.random(size=(20, 23))
print(learnware.predict(input_array))
#
def test_load_single_learnware_by_id_conda(self):
learnware_id = "00000148"
learnware = self.client.load_learnware(learnware_id=learnware_id, runnable_option=self.runnable_option)
input_array = np.random.random(size=(20, 204))
print(learnware.predict(input_array))
#
#
class TestLearnwareLoadWithDocker(TestLearnwareLoadWithConda):
def setUp(self):
super(TestLearnwareLoadWithDocker, self).setUp()
self.runnable_option = "docker"

def suite(mode):
_suite = unittest.TestSuite()
#_suite.addTest(TestLearnwareLoadWithDocker())
if mode == "all" or mode == "conda":
_suite.addTest(unittest.makeSuite(TestLearnwareLoadWithConda))
if mode == "all" or mode == "docker":
_suite.addTest(unittest.makeSuite(TestLearnwareLoadWithDocker))
return _suite

if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--mode", type=str, required=False, default="all", help="The mode to run load learnware, 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(suite(args.mode))

+ 0
- 34
tests/test_learnware_client/test_reuse.py View File

@@ -1,34 +0,0 @@
import zipfile
import numpy as np

from learnware.learnware import get_learnware_from_dirpath
from learnware.client.container import LearnwaresContainer
from learnware.reuse import AveragingReuser
from learnware.tests.module import get_semantic_specification

if __name__ == "__main__":
semantic_specification = get_semantic_specification()
zip_paths = [
"/home/bixd/workspace/learnware/Learnware/tests/test_learnware_client/rf_tic.zip",
"/home/bixd/workspace/learnware/Learnware/tests/test_learnware_client/svc_tic.zip",
]
dir_paths = [
"/home/bixd/workspace/learnware/Learnware/tests/test_learnware_client/rf_tic",
"/home/bixd/workspace/learnware/Learnware/tests/test_learnware_client/svc_tic",
]

learnware_list = []
for id, (zip_path, dir_path) in enumerate(zip(zip_paths, dir_paths)):
with zipfile.ZipFile(zip_path, "r") as z_file:
z_file.extractall(dir_path)

learnware = get_learnware_from_dirpath(f"test_id{id}", semantic_specification, dir_path)
learnware_list.append(learnware)

with LearnwaresContainer(learnware_list) as env_container:
learnware_list = env_container.get_learnwares_with_container()
reuser = AveragingReuser(learnware_list, mode="vote")
input_array = np.random.randint(0, 3, size=(20, 9))
print(reuser.predict(input_array).argmax(axis=1))
for id, ind_learner in enumerate(learnware_list):
print(f"learner_{id}", reuser.predict(input_array).argmax(axis=1))

Loading…
Cancel
Save