예제 #1
0
    def test_publish_window(self):
        set_config_manager(ConfigManager(TestPropertyProvider({})))
        set_workload_monitor_manager(TestWorkloadMonitorManager())
        window_publisher = TestOpportunisticWindowPublisher(
            get_current_end_func=lambda: datetime.utcnow() - timedelta(minutes=
                                                                       1),
            add_window_func=lambda: None,
        )

        w_id = str(uuid.uuid4())
        workload = get_test_workload(w_id, 1, STATIC)

        set_cpu_usage_predictor_manager(
            TestCpuUsagePredictorManager(
                TestSimpleCpuPredictor({w_id:
                                        DEFAULT_TOTAL_THRESHOLD - 0.001})))

        oeh = OversubscribeEventHandler(TestWorkloadManager([workload]),
                                        window_publisher)
        oeh._handle(json.loads(OVERSUBSCRIBE_EVENT.decode("utf-8")))

        self.assertEqual(0, oeh.get_skip_count())
        self.assertEqual(1, oeh.get_success_count())
        self.assertEqual(1, window_publisher.get_current_end_count)
        self.assertEqual(1, window_publisher.add_window_count)
예제 #2
0
                           RESTART_PROPERTIES)

    log.info("Modeling the CPU...")
    cpu = get_cpu_from_env()

    # Start periodic scheduling
    log.info("Starting periodic event scheduling...")
    start_periodic_scheduling()

    # Start the cpu usage predictor manager
    log.info("Setting up the cpu usage predictor manager...")

    # Start performance monitoring
    log.info("Starting performance monitoring...")
    workload_monitor_manager = WorkloadMonitorManager()
    set_workload_monitor_manager(workload_monitor_manager)

    # Setup the workload manager
    log.info("Setting up the workload manager...")
    cpu_allocator = get_fallback_allocator(get_config_manager())
    log.info(
        "Created Fallback CPU allocator with primary: '{}' and secondary: '{}".
        format(cpu_allocator.get_primary_allocator().__class__.__name__,
               cpu_allocator.get_secondary_allocator().__class__.__name__))
    cgroup_manager = FileCgroupManager()
    workload_manager = WorkloadManager(cpu=cpu,
                                       cgroup_manager=cgroup_manager,
                                       cpu_allocator=cpu_allocator)
    set_workload_manager(workload_manager)

    # Setup the event handlers
예제 #3
0
from tests.utils import get_test_workload, config_logs
from titus_isolate.allocate.integer_program_cpu_allocator import IntegerProgramCpuAllocator
from titus_isolate.api import status
from titus_isolate.api.status import get_workloads, get_violations, get_wm_status, get_isolated_workload_ids, \
    isolate_workload
from titus_isolate.config.config_manager import ConfigManager
from titus_isolate.event.constants import STATIC, BURST
from titus_isolate.event.event_manager import EventManager
from titus_isolate.isolate.workload_manager import WorkloadManager
from titus_isolate.model.processor.config import get_cpu
from titus_isolate.model.processor.utils import DEFAULT_PACKAGE_COUNT, DEFAULT_CORE_COUNT, DEFAULT_THREAD_COUNT
from titus_isolate.utils import set_config_manager, set_workload_manager, set_event_manager, \
    set_workload_monitor_manager

config_logs(logging.DEBUG)
set_workload_monitor_manager(TestWorkloadMonitorManager())


class TestStatus(unittest.TestCase):
    def test_get_workloads_endpoint(self):
        set_config_manager(ConfigManager(TestPropertyProvider({})))

        thread_count = 2
        workload_id = str(uuid.uuid4())
        workload = get_test_workload(workload_id, thread_count, STATIC)

        workload_manager = self.__get_default_workload_manager()
        set_workload_manager(workload_manager)

        workloads = json.loads(get_workloads())
        self.assertEqual(0, len(workloads))