예제 #1
0
    def test_get_cpu_endpoint(self):
        set_workload_manager(self.__get_default_workload_manager())

        cpu_dict = json.loads(status.get_cpu())
        self.assertEqual(1, len(cpu_dict))
        self.assertEqual(DEFAULT_PACKAGE_COUNT, len(cpu_dict["packages"]))
        for p in cpu_dict["packages"]:
            self.assertEqual(DEFAULT_CORE_COUNT, len(p["cores"]))
            for c in p["cores"]:
                self.assertEqual(DEFAULT_THREAD_COUNT, len(c["threads"]))
예제 #2
0
    def test_isolate_workload_endpoint(self):
        workload_manager = self.__get_default_workload_manager()
        set_workload_manager(workload_manager)

        _, code, _ = isolate_workload(str(uuid.uuid4()), timeout=0.5)
        self.assertEqual(404, code)

        workload = get_test_workload(str(uuid.uuid4()), 2, BURST)
        workload_manager.add_workload(workload)

        _, code, _ = isolate_workload(workload.get_id(), timeout=0.5)
        self.assertEqual(200, code)
예제 #3
0
    def test_get_wm_status_endpoint(self):
        set_workload_manager(self.__get_default_workload_manager())

        event_manager = EventManager(MockEventProvider([]), [], 0.01)
        set_event_manager(event_manager)
        event_manager.start_processing_events()

        s = json.loads(get_wm_status())
        self.assertEqual(1, len(s))
        self.assertEqual(3, len(s["workload_manager"]))

        event_manager.stop_processing_events()
예제 #4
0
    def test_get_isolated_workloads_endpoint(self):
        workload_manager = self.__get_default_workload_manager()
        set_workload_manager(workload_manager)

        isolated_workload_ids = json.loads(get_isolated_workload_ids())
        self.assertEqual(0, len(isolated_workload_ids))

        workload = get_test_workload(str(uuid.uuid4()), 2, BURST)
        workload_manager.add_workload(workload)

        isolated_workload_ids = json.loads(get_isolated_workload_ids())
        self.assertEqual(1, len(isolated_workload_ids))
        self.assertEqual(workload.get_id(), isolated_workload_ids[0])
예제 #5
0
    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))

        workload_manager.add_workload(workload)

        workloads = json.loads(get_workloads())
        self.assertEqual(workload_id, workloads[0]["id"])
        self.assertEqual(STATIC, workloads[0]["type"])
        self.assertEqual(thread_count, workloads[0]["thread_count"])
예제 #6
0
    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
    log.info("Setting up event handlers...")
    reconciler = Reconciler(cgroup_manager, RealExitHandler())
    create_event_handler = CreateEventHandler(workload_manager)
    free_event_handler = FreeEventHandler(workload_manager)
    rebalance_event_handler = RebalanceEventHandler(workload_manager)
    reconcile_event_handler = ReconcileEventHandler(reconciler)
    oversub_event_handler = None
    if is_kubernetes():
        oversub_event_handler = OversubscribeEventHandler(
            workload_manager, KubernetesOpportunisticWindowPublisher())

    event_handlers = [
        h for h in [
예제 #7
0
    def test_get_violations_endpoint(self):
        set_workload_manager(self.__get_default_workload_manager())

        violations = json.loads(get_violations())
        self.assertEqual(2, len(violations))