qLeaderboard-aBase4Community / test_community_tab.py
Quazim0t0's picture
Upload 2 files
b3e25ad verified
raw
history blame
9.33 kB
import unittest
import os
import sys
import json
from unittest.mock import patch, MagicMock
# Add parent directory to path for imports
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# Import modules to test
from model_config import ModelConfigManager
class MockDB:
"""Mock database for testing."""
def __init__(self):
self.configs = {}
def get_config(self, config_id):
return self.configs.get(config_id)
def add_config(self, config_id, config):
self.configs[config_id] = config
return config_id
class TestModelConfigManager(unittest.TestCase):
"""Test the ModelConfigManager class."""
def setUp(self):
"""Set up test environment."""
self.db = MockDB()
self.config_dir = "test_model_configs"
# Create test directory
os.makedirs(self.config_dir, exist_ok=True)
# Create a test instance with the test directory
self.manager = ModelConfigManager(self.db)
self.manager.config_dir = self.config_dir
def tearDown(self):
"""Clean up after tests."""
# Remove test files
for filename in os.listdir(self.config_dir):
file_path = os.path.join(self.config_dir, filename)
if os.path.isfile(file_path):
os.unlink(file_path)
# Remove test directory
os.rmdir(self.config_dir)
def test_initialize_default_configs(self):
"""Test _initialize_default_configs method."""
# Check that default configs are created
self.manager._initialize_default_configs()
# Verify files exist
for model_type in self.manager.default_configs:
config_path = os.path.join(self.config_dir, f"{model_type}.json")
self.assertTrue(os.path.exists(config_path))
# Verify content
with open(config_path, "r") as f:
config = json.load(f)
self.assertEqual(config["name"], self.manager.default_configs[model_type]["name"])
self.assertEqual(config["description"], self.manager.default_configs[model_type]["description"])
self.assertEqual(config["parameters"], self.manager.default_configs[model_type]["parameters"])
def test_get_available_configs(self):
"""Test get_available_configs method."""
# Create test configs
test_configs = {
"test1": {
"name": "Test Config 1",
"description": "Test description 1",
"parameters": {"temperature": 0.7}
},
"test2": {
"name": "Test Config 2",
"description": "Test description 2",
"parameters": {"temperature": 0.8}
}
}
for config_id, config in test_configs.items():
config_path = os.path.join(self.config_dir, f"{config_id}.json")
with open(config_path, "w") as f:
json.dump(config, f)
# Get configs
configs = self.manager.get_available_configs()
# Verify results
self.assertEqual(len(configs), 2)
# Check that IDs are added
config_ids = [config["id"] for config in configs]
self.assertIn("test1", config_ids)
self.assertIn("test2", config_ids)
# Check content
for config in configs:
test_config = test_configs[config["id"]]
self.assertEqual(config["name"], test_config["name"])
self.assertEqual(config["description"], test_config["description"])
self.assertEqual(config["parameters"], test_config["parameters"])
def test_get_config(self):
"""Test get_config method."""
# Create test config
config = {
"name": "Test Config",
"description": "Test description",
"parameters": {"temperature": 0.7}
}
config_path = os.path.join(self.config_dir, "test.json")
with open(config_path, "w") as f:
json.dump(config, f)
# Get config
result = self.manager.get_config("test")
# Verify result
self.assertIsNotNone(result)
self.assertEqual(result["id"], "test")
self.assertEqual(result["name"], config["name"])
self.assertEqual(result["description"], config["description"])
self.assertEqual(result["parameters"], config["parameters"])
# Test non-existent config
result = self.manager.get_config("nonexistent")
self.assertIsNone(result)
def test_add_config(self):
"""Test add_config method."""
# Add config
name = "Test Config"
description = "Test description"
parameters = {"temperature": 0.7, "top_k": 50}
config_id = self.manager.add_config(name, description, parameters)
# Verify result
self.assertIsNotNone(config_id)
self.assertEqual(config_id, "test_config")
# Verify file exists
config_path = os.path.join(self.config_dir, f"{config_id}.json")
self.assertTrue(os.path.exists(config_path))
# Verify content
with open(config_path, "r") as f:
config = json.load(f)
self.assertEqual(config["name"], name)
self.assertEqual(config["description"], description)
self.assertEqual(config["parameters"], parameters)
def test_update_config(self):
"""Test update_config method."""
# Create test config
config = {
"name": "Test Config",
"description": "Test description",
"parameters": {"temperature": 0.7}
}
config_path = os.path.join(self.config_dir, "test.json")
with open(config_path, "w") as f:
json.dump(config, f)
# Update config
new_name = "Updated Config"
new_description = "Updated description"
new_parameters = {"temperature": 0.8, "top_k": 60}
success = self.manager.update_config("test", new_name, new_description, new_parameters)
# Verify result
self.assertTrue(success)
# Verify content
with open(config_path, "r") as f:
updated_config = json.load(f)
self.assertEqual(updated_config["name"], new_name)
self.assertEqual(updated_config["description"], new_description)
self.assertEqual(updated_config["parameters"], new_parameters)
# Test updating non-existent config
success = self.manager.update_config("nonexistent", "New Name", "New Description", {})
self.assertFalse(success)
def test_delete_config(self):
"""Test delete_config method."""
# Create test config
config = {
"name": "Test Config",
"description": "Test description",
"parameters": {"temperature": 0.7}
}
config_path = os.path.join(self.config_dir, "test.json")
with open(config_path, "w") as f:
json.dump(config, f)
# Delete config
success = self.manager.delete_config("test")
# Verify result
self.assertTrue(success)
self.assertFalse(os.path.exists(config_path))
# Test deleting non-existent config
success = self.manager.delete_config("nonexistent")
self.assertFalse(success)
# Test deleting default config
for model_type in self.manager.default_configs:
config_path = os.path.join(self.config_dir, f"{model_type}.json")
with open(config_path, "w") as f:
json.dump(self.manager.default_configs[model_type], f)
success = self.manager.delete_config(model_type)
self.assertFalse(success)
self.assertTrue(os.path.exists(config_path))
def test_apply_config_to_model_params(self):
"""Test apply_config_to_model_params method."""
# Create test config
config = {
"name": "Test Config",
"description": "Test description",
"parameters": {
"temperature": 0.7,
"top_k": 50,
"top_p": 0.9
}
}
config_path = os.path.join(self.config_dir, "test.json")
with open(config_path, "w") as f:
json.dump(config, f)
# Apply config
model_params = {
"temperature": 0.5,
"max_length": 100
}
result = self.manager.apply_config_to_model_params(model_params, "test")
# Verify result
self.assertEqual(result["temperature"], 0.7)
self.assertEqual(result["top_k"], 50)
self.assertEqual(result["top_p"], 0.9)
self.assertEqual(result["max_length"], 100)
# Test with non-existent config
result = self.manager.apply_config_to_model_params(model_params, "nonexistent")
self.assertEqual(result, model_params)
if __name__ == '__main__':
unittest.main()