Example #1
0
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