2025-03-11 17:05:08 +08:00
|
|
|
# Copyright (c) Alibaba, Inc. and its affiliates.
|
|
|
|
|
import os
|
|
|
|
|
import unittest
|
|
|
|
|
|
|
|
|
|
from requests import HTTPError
|
|
|
|
|
|
2025-03-11 18:22:29 +08:00
|
|
|
from modelscope import MsDataset, snapshot_download
|
2025-03-11 17:05:08 +08:00
|
|
|
from modelscope.hub.constants import MODELSCOPE_PREFER_AI_SITE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HubAiSiteTest(unittest.TestCase):
|
|
|
|
|
|
|
|
|
|
def setUp(self):
|
2025-03-12 22:39:00 +08:00
|
|
|
...
|
2025-03-11 17:05:08 +08:00
|
|
|
|
|
|
|
|
# test download from an ai-site only model, it should
|
|
|
|
|
# work as expected since we shall fall back to ai-site
|
|
|
|
|
# when the model is not found on cn-site.
|
|
|
|
|
def test_default_download_from_ai_site(self):
|
|
|
|
|
model_id = 'ModelScope_Developer/ai_only'
|
|
|
|
|
model_dir = snapshot_download(model_id)
|
|
|
|
|
contents = os.listdir(model_dir)
|
|
|
|
|
assert len(contents) > 0
|
|
|
|
|
|
|
|
|
|
# test download from a cn-site only model, it should
|
|
|
|
|
# work as expected as it is found directly on cn-site.
|
|
|
|
|
def test_default_download_from_cn_site(self):
|
|
|
|
|
model_id = 'ModelScope_Developer/cn_only'
|
|
|
|
|
model_dir = snapshot_download(model_id)
|
|
|
|
|
contents = os.listdir(model_dir)
|
|
|
|
|
assert len(contents) > 0
|
|
|
|
|
|
|
|
|
|
# test download a model that exists on both cn and ai site
|
|
|
|
|
# when prefer-ai-site is set, we should found the version from
|
|
|
|
|
# on ai-site, not cn-site
|
|
|
|
|
def test_prefer_ai_site_and_download_from_ai_site(self):
|
|
|
|
|
os.environ[MODELSCOPE_PREFER_AI_SITE] = 'True'
|
|
|
|
|
model_id = 'ModelScope_Developer/same_name'
|
|
|
|
|
model_dir = snapshot_download(model_id)
|
|
|
|
|
cn_site_only_file = os.path.join(model_dir, 'on_ai_site')
|
|
|
|
|
assert os.path.exists(cn_site_only_file)
|
|
|
|
|
|
|
|
|
|
# test download a model that exists on both cn and ai site
|
|
|
|
|
# when prefer-ai-site is NOT set, we should found the version from
|
|
|
|
|
# on cn-site, not ai-site
|
|
|
|
|
def test_prefer_cn_site_and_download_from_cn_site(self):
|
|
|
|
|
os.environ[MODELSCOPE_PREFER_AI_SITE] = 'False'
|
|
|
|
|
model_id = 'ModelScope_Developer/same_name'
|
|
|
|
|
model_dir = snapshot_download(model_id)
|
|
|
|
|
cn_site_only_file = os.path.join(model_dir, 'on_cn_site')
|
|
|
|
|
assert os.path.exists(cn_site_only_file)
|
|
|
|
|
|
|
|
|
|
def test_download_non_exist_model(self):
|
|
|
|
|
with self.assertRaises(HTTPError):
|
|
|
|
|
model_id = 'ModelScope_Developer/not_exist_model'
|
|
|
|
|
snapshot_download(model_id)
|
|
|
|
|
|
2025-03-11 18:22:29 +08:00
|
|
|
# test download dataset from ai site
|
|
|
|
|
def test_download_dataset_from_ai_site(self):
|
|
|
|
|
os.environ[MODELSCOPE_PREFER_AI_SITE] = 'True'
|
|
|
|
|
dataset_id = 'ModelScope_Developer/ai_only_dataset'
|
|
|
|
|
dataset = MsDataset.load(dataset_id)
|
|
|
|
|
assert dataset
|
|
|
|
|
|
2025-03-11 17:05:08 +08:00
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
unittest.main()
|