import logging import unittest from tests.config.test_property_provider import TestPropertyProvider from tests.test_exit_handler import TestExitHandler from tests.utils import config_logs from titus_isolate.config.config_manager import ConfigManager from titus_isolate.config.constants import ALLOCATOR_KEY, NOOP, IP, AB_TEST, CPU_ALLOCATOR_A, CPU_ALLOCATOR_B, \ EC2_INSTANCE_ID from titus_isolate.config.cpu_allocator_watcher import CpuAllocatorWatcher from titus_isolate.constants import ALLOCATOR_CONFIG_CHANGE_EXIT CONFIG_CHANGE_INTERVAL = 0.1 config_logs(logging.DEBUG) class TestCpuAllocatorWatcher(unittest.TestCase): def test_none_to_something_update(self): property_provider = TestPropertyProvider({}) exit_handler = TestExitHandler() config_manager = ConfigManager(property_provider, CONFIG_CHANGE_INTERVAL) self.assertEqual(None, config_manager.get(ALLOCATOR_KEY)) watcher = CpuAllocatorWatcher(config_manager, exit_handler, CONFIG_CHANGE_INTERVAL) property_provider.map[ALLOCATOR_KEY] = IP watcher.detect_allocator_change() self.assertEqual(ALLOCATOR_CONFIG_CHANGE_EXIT, exit_handler.last_code) def test_something_to_no_change_update(self):
from titus_isolate.allocate.forecast_ip_cpu_allocator import ForecastIPCpuAllocator from titus_isolate.allocate.greedy_cpu_allocator import GreedyCpuAllocator from titus_isolate.allocate.integer_program_cpu_allocator import IntegerProgramCpuAllocator from titus_isolate.allocate.naive_cpu_allocator import NaiveCpuAllocator from titus_isolate.event.constants import BURST from titus_isolate.config.config_manager import ConfigManager from titus_isolate.config.constants import BURST_CORE_COLLOC_USAGE_THRESH from titus_isolate.event.constants import STATIC from titus_isolate.model.processor.config import get_cpu from titus_isolate.model.processor.utils import DEFAULT_TOTAL_THREAD_COUNT from titus_isolate.model.workload_interface import Workload from titus_isolate.monitor.oversubscribe_free_thread_provider import OversubscribeFreeThreadProvider from titus_isolate.predict.cpu_usage_predictor import PredEnvironment from titus_isolate.utils import set_workload_monitor_manager config_logs(logging.INFO) class TestWorkloadMonitorManager: @staticmethod def get_pcp_usage() -> dict: return {} class TestPodManager: def __init__(self): self.pod = None def set_pod(self, pod: V1Pod): self.pod = pod