mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-12-24 13:28:13 +08:00
Some checks failed
CE Compile Job / ce_job_pre_check (push) Has been cancelled
CE Compile Job / print_ce_job_pre_check_outputs (push) Has been cancelled
CE Compile Job / FD-Clone-Linux (push) Has been cancelled
CE Compile Job / Show Code Archive Output (push) Has been cancelled
CE Compile Job / BUILD_SM8090 (push) Has been cancelled
CE Compile Job / BUILD_SM8689 (push) Has been cancelled
CE Compile Job / CE_UPLOAD (push) Has been cancelled
Deploy GitHub Pages / deploy (push) Has been cancelled
136 lines
5.3 KiB
Python
136 lines
5.3 KiB
Python
"""
|
|
# Copyright (c) 2025 PaddlePaddle Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
"""
|
|
|
|
import os
|
|
import unittest
|
|
|
|
from fastdeploy.utils import init_bos_client, retrive_model_from_server
|
|
|
|
|
|
class TestAistudioDownload(unittest.TestCase):
|
|
"""
|
|
Test cases for downloading models from different sources using FastDeploy utilities.
|
|
"""
|
|
|
|
def test_retrive_model_from_server_unsupported_source(self):
|
|
"""
|
|
Test case for retrieving a model from an unsupported source.
|
|
"""
|
|
os.environ["FD_MODEL_SOURCE"] = "UNSUPPORTED_SOURCE"
|
|
os.environ["FD_MODEL_CACHE"] = "./models"
|
|
|
|
model_name_or_path = "baidu/ERNIE-4.5-0.3B-PT"
|
|
with self.assertRaises(ValueError):
|
|
retrive_model_from_server(model_name_or_path)
|
|
|
|
os.environ.clear()
|
|
|
|
def test_retrive_model_from_modelscope_server_model_not_exist(self):
|
|
"""
|
|
Test case for retrieving a model from ModelScope server when it doesn't exist.
|
|
"""
|
|
os.environ["FD_MODEL_SOURCE"] = "MODELSCOPE"
|
|
os.environ["FD_MODEL_CACHE"] = "./model"
|
|
|
|
model_name_or_path = "non_existing_model_modelscope"
|
|
|
|
with self.assertRaises(Exception):
|
|
retrive_model_from_server(model_name_or_path)
|
|
|
|
os.environ.clear()
|
|
|
|
def test_retrive_model_from_huggingface_server_model_not_exist(self):
|
|
"""
|
|
Test case for retrieving a model from Hugging Face server when it doesn't exist.
|
|
"""
|
|
os.environ["FD_MODEL_SOURCE"] = "HUGGINGFACE"
|
|
os.environ["FD_MODEL_CACHE"] = "./models"
|
|
|
|
model_name_or_path = "non_existing_model_hf"
|
|
|
|
with self.assertRaises(Exception):
|
|
retrive_model_from_server(model_name_or_path)
|
|
|
|
os.environ.clear()
|
|
|
|
|
|
class TestInitBosClient(unittest.TestCase):
|
|
"""
|
|
Test cases for initializing Baidu Object Storage (BOS) client using FastDeploy utilities.
|
|
"""
|
|
|
|
def test_init_bos_client_success(self):
|
|
"""
|
|
Test case for successful initialization of BOS client with valid environment variables.
|
|
"""
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
# Mock BosClient and related dependencies to skip validation
|
|
with patch("baidubce.auth.bce_credentials.BceCredentials") as mock_credentials:
|
|
with patch("baidubce.bce_client_configuration.BceClientConfiguration") as mock_config:
|
|
with patch("baidubce.services.bos.bos_client.BosClient") as mock_bos_client:
|
|
# Additional mock to make list_buckets call succeed
|
|
mock_bos_client_instance = MagicMock()
|
|
# Mock the list_buckets call to return empty buckets list
|
|
mock_bos_client_instance.list_buckets = MagicMock(return_value=MagicMock())
|
|
mock_bos_client.return_value = mock_bos_client_instance
|
|
|
|
# Mock the credentials and config
|
|
mock_credentials_instance = MagicMock()
|
|
mock_credentials.return_value = mock_credentials_instance
|
|
|
|
mock_config_instance = MagicMock()
|
|
mock_config.return_value = mock_config_instance
|
|
|
|
# Set up valid environment variables
|
|
os.environ["ENCODE_FEATURE_BOS_AK"] = "test_access_key"
|
|
os.environ["ENCODE_FEATURE_BOS_SK"] = "test_secret_key"
|
|
os.environ["ENCODE_FEATURE_ENDPOINT"] = "http://test.endpoint.com"
|
|
|
|
try:
|
|
# Call the function
|
|
client = init_bos_client()
|
|
|
|
# Verify that BosClient was created with correct arguments
|
|
mock_credentials.assert_called_once_with("test_access_key", "test_secret_key")
|
|
mock_config.assert_called_once_with(
|
|
credentials=mock_credentials_instance, endpoint="http://test.endpoint.com"
|
|
)
|
|
mock_bos_client.assert_called_once_with(mock_config_instance)
|
|
|
|
# Verify that the returned client is the mock instance
|
|
self.assertEqual(client, mock_bos_client_instance)
|
|
finally:
|
|
os.environ.clear()
|
|
|
|
def test_init_bos_client_missing_envs(self):
|
|
"""
|
|
Test case for initializing BOS client when necessary environment variables are missing.
|
|
"""
|
|
# Test with empty environment variables
|
|
os.environ["ENCODE_FEATURE_BOS_AK"] = ""
|
|
os.environ["ENCODE_FEATURE_BOS_SK"] = ""
|
|
os.environ["ENCODE_FEATURE_ENDPOINT"] = ""
|
|
|
|
with self.assertRaises(Exception) as context:
|
|
init_bos_client()
|
|
self.assertIn("BOS client validation error", str(context.exception))
|
|
os.environ.clear()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|