diff options
| author | Dante Niewenhuis <d.niewenhuis@hotmail.com> | 2024-08-27 13:48:46 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-27 13:48:46 +0200 |
| commit | 3363df4c72a064e590ca98f8e01832cfa4e15a3f (patch) | |
| tree | 9a938700fe08ce344ff5d0d475d0b64d7233d1fc /opendc-compute/opendc-compute-service | |
| parent | c21708013f2746807f5bdb3fc47c2b47ed15b7c8 (diff) | |
Renamed input files and internally server is changed to task (#246)
* Updated SimTrace to use a single ArrayDeque instead of three separate lists for deadline, cpuUsage, and coreCount
* Renamed input files to tasks.parquet and fragments.parquet. Renamed server to task. OpenDC nows exports tasks.parquet instead of server.parquet
Diffstat (limited to 'opendc-compute/opendc-compute-service')
26 files changed, 529 insertions, 389 deletions
diff --git a/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/ComputeService.java b/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/ComputeService.java index a7e9f509..a64f6a4e 100644 --- a/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/ComputeService.java +++ b/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/ComputeService.java @@ -44,8 +44,8 @@ import org.opendc.common.util.Pacer; import org.opendc.compute.api.ComputeClient; import org.opendc.compute.api.Flavor; import org.opendc.compute.api.Image; -import org.opendc.compute.api.Server; -import org.opendc.compute.api.ServerState; +import org.opendc.compute.api.Task; +import org.opendc.compute.api.TaskState; import org.opendc.compute.service.driver.Host; import org.opendc.compute.service.driver.HostListener; import org.opendc.compute.service.driver.HostModel; @@ -68,7 +68,7 @@ public final class ComputeService implements AutoCloseable { private final InstantSource clock; /** - * The {@link ComputeScheduler} responsible for placing the servers onto hosts. + * The {@link ComputeScheduler} responsible for placing the tasks onto hosts. */ private final ComputeScheduler scheduler; @@ -98,14 +98,14 @@ public final class ComputeService implements AutoCloseable { private final Set<HostView> availableHosts = new HashSet<>(); /** - * The servers that should be launched by the service. + * The tasks that should be launched by the service. */ - private final Deque<SchedulingRequest> queue = new ArrayDeque<>(); + private final Deque<SchedulingRequest> taskQueue = new ArrayDeque<>(); /** - * The active servers in the system. + * The active tasks in the system. */ - private final Map<Server, Host> activeServers = new HashMap<>(); + private final Map<Task, Host> activeTasks = new HashMap<>(); /** * The registered flavors for this compute service. @@ -122,14 +122,14 @@ public final class ComputeService implements AutoCloseable { private final List<ServiceImage> images = new ArrayList<>(); /** - * The registered servers for this compute service. + * The registered tasks for this compute service. */ - private final Map<UUID, ServiceServer> serverById = new HashMap<>(); + private final Map<UUID, ServiceTask> taskById = new HashMap<>(); - private final List<ServiceServer> servers = new ArrayList<>(); + private final List<ServiceTask> tasks = new ArrayList<>(); /** - * A [HostListener] used to track the active servers. + * A [HostListener] used to track the active tasks. */ private final HostListener hostListener = new HostListener() { @Override @@ -151,28 +151,26 @@ public final class ComputeService implements AutoCloseable { } @Override - public void onStateChanged(@NotNull Host host, @NotNull Server server, @NotNull ServerState newState) { - final ServiceServer serviceServer = (ServiceServer) server; + public void onStateChanged(@NotNull Host host, @NotNull Task task, @NotNull TaskState newState) { + final ServiceTask serviceTask = (ServiceTask) task; - if (serviceServer.getHost() != host) { - // This can happen when a server is rescheduled and started on another machine, while being deleted from + if (serviceTask.getHost() != host) { + // This can happen when a task is rescheduled and started on another machine, while being deleted from // the old machine. return; } - serviceServer.setState(newState); + serviceTask.setState(newState); - if (newState == ServerState.TERMINATED - || newState == ServerState.DELETED - || newState == ServerState.ERROR) { - LOGGER.info("Server {} {} {} finished", server.getUid(), server.getName(), server.getFlavor()); + if (newState == TaskState.TERMINATED || newState == TaskState.DELETED || newState == TaskState.ERROR) { + LOGGER.info("task {} {} {} finished", task.getUid(), task.getName(), task.getFlavor()); - if (activeServers.remove(server) != null) { - serversActive--; + if (activeTasks.remove(task) != null) { + tasksActive--; } HostView hv = hostToView.get(host); - final ServiceFlavor flavor = serviceServer.getFlavor(); + final ServiceFlavor flavor = serviceTask.getFlavor(); if (hv != null) { hv.provisionedCores -= flavor.getCoreCount(); hv.instanceCount--; @@ -192,8 +190,8 @@ public final class ComputeService implements AutoCloseable { private long attemptsSuccess = 0L; private long attemptsFailure = 0L; private long attemptsError = 0L; - private int serversPending = 0; - private int serversActive = 0; + private int tasksPending = 0; + private int tasksActive = 0; /** * Construct a {@link ComputeService} instance. @@ -222,10 +220,10 @@ public final class ComputeService implements AutoCloseable { } /** - * Return the {@link Server}s hosted by this service. + * Return the {@link Task}s hosted by this service. */ - public List<Server> getServers() { - return Collections.unmodifiableList(servers); + public List<Task> getTasks() { + return Collections.unmodifiableList(tasks); } /** @@ -265,15 +263,14 @@ public final class ComputeService implements AutoCloseable { } /** - * Lookup the {@link Host} that currently hosts the specified {@link Server}. + * Lookup the {@link Host} that currently hosts the specified {@link Task}. */ - public Host lookupHost(Server server) { - if (server instanceof ServiceServer) { - return ((ServiceServer) server).getHost(); + public Host lookupHost(Task task) { + if (task instanceof ServiceTask) { + return ((ServiceTask) task).getHost(); } - ServiceServer internal = - Objects.requireNonNull(serverById.get(server.getUid()), "Invalid server passed to lookupHost"); + ServiceTask internal = Objects.requireNonNull(taskById.get(task.getUid()), "Invalid task passed to lookupHost"); return internal.getHost(); } @@ -294,9 +291,9 @@ public final class ComputeService implements AutoCloseable { attemptsSuccess, attemptsFailure, attemptsError, - servers.size(), - serversPending, - serversActive); + tasks.size(), + tasksPending, + tasksActive); } @Override @@ -310,17 +307,17 @@ public final class ComputeService implements AutoCloseable { } /** - * Enqueue the specified [server] to be scheduled onto a host. + * Enqueue the specified [task] to be scheduled onto a host. */ - SchedulingRequest schedule(ServiceServer server) { - LOGGER.debug("Enqueueing server {} to be assigned to host", server.getUid()); + SchedulingRequest schedule(ServiceTask task) { + LOGGER.debug("Enqueueing task {} to be assigned to host", task.getUid()); long now = clock.millis(); - SchedulingRequest request = new SchedulingRequest(server, now); + SchedulingRequest request = new SchedulingRequest(task, now); - server.launchedAt = Instant.ofEpochMilli(now); - queue.add(request); - serversPending++; + task.launchedAt = Instant.ofEpochMilli(now); + taskQueue.add(request); + tasksPending++; requestSchedulingCycle(); return request; } @@ -335,9 +332,9 @@ public final class ComputeService implements AutoCloseable { images.remove(image); } - void delete(ServiceServer server) { - serverById.remove(server.getUid()); - servers.remove(server); + void delete(ServiceTask task) { + taskById.remove(task.getUid()); + tasks.remove(task); } /** @@ -345,7 +342,7 @@ public final class ComputeService implements AutoCloseable { */ private void requestSchedulingCycle() { // Bail out in case the queue is empty. - if (queue.isEmpty()) { + if (taskQueue.isEmpty()) { return; } @@ -358,35 +355,34 @@ public final class ComputeService implements AutoCloseable { private void doSchedule() { // reorder tasks - while (!queue.isEmpty()) { - SchedulingRequest request = queue.peek(); + while (!taskQueue.isEmpty()) { + SchedulingRequest request = taskQueue.peek(); if (request.isCancelled) { - queue.poll(); - serversPending--; + taskQueue.poll(); + tasksPending--; continue; } - final ServiceServer server = request.server; + final ServiceTask task = request.task; // Check if all dependencies are met // otherwise continue - final ServiceFlavor flavor = server.getFlavor(); - final HostView hv = scheduler.select(request.server); + final ServiceFlavor flavor = task.getFlavor(); + final HostView hv = scheduler.select(request.task); - if (hv == null || !hv.getHost().canFit(server)) { - LOGGER.trace( - "Server {} selected for scheduling but no capacity available for it at the moment", server); + if (hv == null || !hv.getHost().canFit(task)) { + LOGGER.trace("Task {} selected for scheduling but no capacity available for it at the moment", task); if (flavor.getMemorySize() > maxMemory || flavor.getCoreCount() > maxCores) { // Remove the incoming image - queue.poll(); - serversPending--; + taskQueue.poll(); + tasksPending--; attemptsFailure++; - LOGGER.warn("Failed to spawn {}: does not fit", server); + LOGGER.warn("Failed to spawn {}: does not fit", task); - server.setState(ServerState.TERMINATED); + task.setState(TaskState.TERMINATED); continue; } else { break; @@ -396,25 +392,25 @@ public final class ComputeService implements AutoCloseable { Host host = hv.getHost(); // Remove request from queue - queue.poll(); - serversPending--; + taskQueue.poll(); + tasksPending--; - LOGGER.info("Assigned server {} to host {}", server, host); + LOGGER.info("Assigned task {} to host {}", task, host); try { - server.host = host; + task.host = host; - host.spawn(server); - host.start(server); + host.spawn(task); + host.start(task); - serversActive++; + tasksActive++; attemptsSuccess++; hv.instanceCount++; hv.provisionedCores += flavor.getCoreCount(); hv.availableMemory -= flavor.getMemorySize(); - activeServers.put(server, host); + activeTasks.put(task, host); } catch (Exception cause) { LOGGER.error("Failed to deploy VM", cause); attemptsError++; @@ -537,7 +533,7 @@ public final class ComputeService implements AutoCloseable { @NotNull @Override - public Server newServer( + public Task newTask( @NotNull String name, @NotNull Image image, @NotNull Flavor flavor, @@ -554,31 +550,31 @@ public final class ComputeService implements AutoCloseable { final ServiceImage internalImage = Objects.requireNonNull(service.imageById.get(image.getUid()), "Unknown image"); - ServiceServer server = new ServiceServer(service, uid, name, internalFlavor, internalImage, labels, meta); + ServiceTask task = new ServiceTask(service, uid, name, internalFlavor, internalImage, labels, meta); - service.serverById.put(uid, server); - service.servers.add(server); + service.taskById.put(uid, task); + service.tasks.add(task); if (start) { - server.start(); + task.start(); } - return server; + return task; } @Nullable @Override - public Server findServer(@NotNull UUID id) { + public Task findTask(@NotNull UUID id) { checkOpen(); - return service.serverById.get(id); + return service.taskById.get(id); } @NotNull @Override - public List<Server> queryServers() { + public List<Task> queryTasks() { checkOpen(); - return new ArrayList<>(service.servers); + return new ArrayList<>(service.tasks); } @Override @@ -593,30 +589,30 @@ public final class ComputeService implements AutoCloseable { @Nullable @Override - public void rescheduleServer(@NotNull Server server, @NotNull SimWorkload workload) { - ServiceServer internalServer = (ServiceServer) findServer(server.getUid()); - Host from = service.lookupHost(internalServer); + public void rescheduleTask(@NotNull Task task, @NotNull SimWorkload workload) { + ServiceTask internalTask = (ServiceTask) findTask(task.getUid()); + Host from = service.lookupHost(internalTask); - from.delete(internalServer); + from.delete(internalTask); - internalServer.host = null; + internalTask.host = null; - internalServer.setWorkload(workload); - internalServer.start(); + internalTask.setWorkload(workload); + internalTask.start(); } } /** - * A request to schedule a {@link ServiceServer} onto one of the {@link Host}s. + * A request to schedule a {@link ServiceTask} onto one of the {@link Host}s. */ static class SchedulingRequest { - final ServiceServer server; + final ServiceTask task; final long submitTime; boolean isCancelled; - SchedulingRequest(ServiceServer server, long submitTime) { - this.server = server; + SchedulingRequest(ServiceTask task, long submitTime) { + this.task = task; this.submitTime = submitTime; } } diff --git a/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/ServiceServer.java b/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/ServiceTask.java index e363faf2..e981921a 100644 --- a/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/ServiceServer.java +++ b/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/ServiceTask.java @@ -32,18 +32,18 @@ import java.util.Objects; import java.util.UUID; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.opendc.compute.api.Server; -import org.opendc.compute.api.ServerState; -import org.opendc.compute.api.ServerWatcher; +import org.opendc.compute.api.Task; +import org.opendc.compute.api.TaskState; +import org.opendc.compute.api.TaskWatcher; import org.opendc.compute.service.driver.Host; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Implementation of {@link Server} provided by {@link ComputeService}. + * Implementation of {@link Task} provided by {@link ComputeService}. */ -public final class ServiceServer implements Server { - private static final Logger LOGGER = LoggerFactory.getLogger(ServiceServer.class); +public final class ServiceTask implements Task { + private static final Logger LOGGER = LoggerFactory.getLogger(ServiceTask.class); private final ComputeService service; private final UUID uid; @@ -54,13 +54,13 @@ public final class ServiceServer implements Server { private final Map<String, String> labels; private Map<String, ?> meta; - private final List<ServerWatcher> watchers = new ArrayList<>(); - private ServerState state = ServerState.TERMINATED; + private final List<TaskWatcher> watchers = new ArrayList<>(); + private TaskState state = TaskState.TERMINATED; Instant launchedAt = null; Host host = null; private ComputeService.SchedulingRequest request = null; - ServiceServer( + ServiceTask( ComputeService service, UUID uid, String name, @@ -122,7 +122,7 @@ public final class ServiceServer implements Server { @NotNull @Override - public ServerState getState() { + public TaskState getState() { return state; } @@ -133,7 +133,7 @@ public final class ServiceServer implements Server { } /** - * Return the {@link Host} on which the server is running or <code>null</code> if it is not running on a host. + * Return the {@link Host} on which the task is running or <code>null</code> if it is not running on a host. */ public Host getHost() { return host; @@ -143,16 +143,16 @@ public final class ServiceServer implements Server { public void start() { switch (state) { case PROVISIONING: - LOGGER.debug("User tried to start server but request is already pending: doing nothing"); + LOGGER.debug("User tried to start task but request is already pending: doing nothing"); case RUNNING: - LOGGER.debug("User tried to start server but server is already running"); + LOGGER.debug("User tried to start task but task is already running"); break; case DELETED: - LOGGER.warn("User tried to start deleted server"); - throw new IllegalStateException("Server is deleted"); + LOGGER.warn("User tried to start deleted task"); + throw new IllegalStateException("Task is deleted"); default: - LOGGER.info("User requested to start server {}", uid); - setState(ServerState.PROVISIONING); + LOGGER.info("User requested to start task {}", uid); + setState(TaskState.PROVISIONING); assert request == null : "Scheduling request already active"; request = service.schedule(this); break; @@ -164,13 +164,13 @@ public final class ServiceServer implements Server { switch (state) { case PROVISIONING: cancelProvisioningRequest(); - setState(ServerState.TERMINATED); + setState(TaskState.TERMINATED); break; case RUNNING: case ERROR: final Host host = this.host; if (host == null) { - throw new IllegalStateException("Server not running"); + throw new IllegalStateException("Task not running"); } host.stop(this); break; @@ -178,12 +178,12 @@ public final class ServiceServer implements Server { } @Override - public void watch(@NotNull ServerWatcher watcher) { + public void watch(@NotNull TaskWatcher watcher) { watchers.add(watcher); } @Override - public void unwatch(@NotNull ServerWatcher watcher) { + public void unwatch(@NotNull TaskWatcher watcher) { watchers.remove(watcher); } @@ -199,17 +199,17 @@ public final class ServiceServer implements Server { case TERMINATED: cancelProvisioningRequest(); service.delete(this); - setState(ServerState.DELETED); + setState(TaskState.DELETED); break; case RUNNING: case ERROR: final Host host = this.host; if (host == null) { - throw new IllegalStateException("Server not running"); + throw new IllegalStateException("Task not running"); } host.delete(this); service.delete(this); - setState(ServerState.DELETED); + setState(TaskState.DELETED); break; } } @@ -218,8 +218,8 @@ public final class ServiceServer implements Server { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - ServiceServer server = (ServiceServer) o; - return service.equals(server.service) && uid.equals(server.uid); + ServiceTask task = (ServiceTask) o; + return service.equals(task.service) && uid.equals(task.uid); } @Override @@ -229,12 +229,12 @@ public final class ServiceServer implements Server { @Override public String toString() { - return "Server[uid=" + uid + ",name=" + name + ",state=" + state + "]"; + return "Task[uid=" + uid + ",name=" + name + ",state=" + state + "]"; } - void setState(ServerState state) { + void setState(TaskState state) { if (this.state != state) { - for (ServerWatcher watcher : watchers) { + for (TaskWatcher watcher : watchers) { watcher.onStateChanged(this, state); } } diff --git a/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/driver/Host.java b/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/driver/Host.java index 760d7f1a..546f774b 100644 --- a/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/driver/Host.java +++ b/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/driver/Host.java @@ -25,14 +25,14 @@ package org.opendc.compute.service.driver; import java.util.Map; import java.util.Set; import java.util.UUID; -import org.opendc.compute.api.Server; +import org.opendc.compute.api.Task; import org.opendc.compute.service.driver.telemetry.GuestCpuStats; import org.opendc.compute.service.driver.telemetry.GuestSystemStats; import org.opendc.compute.service.driver.telemetry.HostCpuStats; import org.opendc.compute.service.driver.telemetry.HostSystemStats; /** - * Base interface for representing compute resources that host virtualized {@link Server} instances. + * Base interface for representing compute resources that host virtualized {@link Task} instances. */ public interface Host { /** @@ -61,43 +61,43 @@ public interface Host { Map<String, ?> getMeta(); /** - * Return the {@link Server} instances known to the host. + * Return the {@link Task} instances known to the host. */ - Set<Server> getInstances(); + Set<Task> getInstances(); /** - * Determine whether the specified <code>server</code> can still fit on this host. + * Determine whether the specified <code>task</code> can still fit on this host. */ - boolean canFit(Server server); + boolean canFit(Task task); /** - * Register the specified <code>server</code> on the host. + * Register the specified <code>task</code> on the host. */ - void spawn(Server server); + void spawn(Task task); /** - * Determine whether the specified <code>server</code> exists on the host. + * Determine whether the specified <code>task</code> exists on the host. */ - boolean contains(Server server); + boolean contains(Task task); /** - * Start the server if it is currently not running on this host. + * Start the task if it is currently not running on this host. * - * @throws IllegalArgumentException if the server is not present on the host. + * @throws IllegalArgumentException if the task is not present on the host. */ - void start(Server server); + void start(Task task); /** - * Stop the server if it is currently running on this host. + * Stop the task if it is currently running on this host. * - * @throws IllegalArgumentException if the server is not present on the host. + * @throws IllegalArgumentException if the task is not present on the host. */ - void stop(Server server); + void stop(Task task); /** - * Delete the specified <code>server</code> on this host and cleanup all resources associated with it. + * Delete the specified <code>task</code> on this host and cleanup all resources associated with it. */ - void delete(Server server); + void delete(Task task); /** * Add a [HostListener] to this host. @@ -115,12 +115,12 @@ public interface Host { HostSystemStats getSystemStats(); /** - * Query the system statistics of a {@link Server} that is located on this host. + * Query the system statistics of a {@link Task} that is located on this host. * - * @param server The {@link Server} to obtain the system statistics of. - * @throws IllegalArgumentException if the server is not present on the host. + * @param task The {@link Task} to obtain the system statistics of. + * @throws IllegalArgumentException if the task is not present on the host. */ - GuestSystemStats getSystemStats(Server server); + GuestSystemStats getSystemStats(Task task); /** * Query the CPU statistics of the host. @@ -128,10 +128,10 @@ public interface Host { HostCpuStats getCpuStats(); /** - * Query the CPU statistics of a {@link Server} that is located on this host. + * Query the CPU statistics of a {@link Task} that is located on this host. * - * @param server The {@link Server} to obtain the CPU statistics of. - * @throws IllegalArgumentException if the server is not present on the host. + * @param task The {@link Task} to obtain the CPU statistics of. + * @throws IllegalArgumentException if the task is not present on the host. */ - GuestCpuStats getCpuStats(Server server); + GuestCpuStats getCpuStats(Task task); } diff --git a/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/driver/HostListener.java b/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/driver/HostListener.java index feefca40..079c6cff 100644 --- a/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/driver/HostListener.java +++ b/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/driver/HostListener.java @@ -22,17 +22,17 @@ package org.opendc.compute.service.driver; -import org.opendc.compute.api.Server; -import org.opendc.compute.api.ServerState; +import org.opendc.compute.api.Task; +import org.opendc.compute.api.TaskState; /** * Listener interface for events originating from a {@link Host}. */ public interface HostListener { /** - * This method is invoked when the state of <code>server</code> on <code>host</code> changes. + * This method is invoked when the state of <code>task</code> on <code>host</code> changes. */ - default void onStateChanged(Host host, Server server, ServerState newState) {} + default void onStateChanged(Host host, Task task, TaskState newState) {} /** * This method is invoked when the state of a {@link Host} has changed. diff --git a/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/driver/telemetry/HostSystemStats.java b/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/driver/telemetry/HostSystemStats.java index d9dba274..c0713f3c 100644 --- a/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/driver/telemetry/HostSystemStats.java +++ b/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/driver/telemetry/HostSystemStats.java @@ -30,7 +30,7 @@ import java.time.Instant; * * @param uptime The cumulative uptime of the host since last boot (in ms). * @param downtime The cumulative downtime of the host since last boot (in ms). - * @param bootTime The time at which the server started. + * @param bootTime The time at which the task started. * @param powerDraw Instantaneous power draw of the system (in W). * @param energyUsage The cumulative energy usage of the system (in J). * @param guestsTerminated The number of guests that are in a terminated state. diff --git a/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/telemetry/SchedulerStats.java b/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/telemetry/SchedulerStats.java index 2157169b..fc044d8c 100644 --- a/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/telemetry/SchedulerStats.java +++ b/opendc-compute/opendc-compute-service/src/main/java/org/opendc/compute/service/telemetry/SchedulerStats.java @@ -30,9 +30,9 @@ package org.opendc.compute.service.telemetry; * @param attemptsSuccess Scheduling attempts that resulted into an allocation onto a host. * @param attemptsFailure The number of failed scheduling attempt due to insufficient capacity at the moment. * @param attemptsError The number of scheduling attempts that failed due to system error. - * @param serversTotal The number of servers registered with the service. - * @param serversPending The number of servers that are pending to be scheduled. - * @param serversActive The number of servers that are currently managed by the service and running. + * @param tasksTotal The number of tasks registered with the service. + * @param tasksPending The number of tasks that are pending to be scheduled. + * @param tasksActive The number of tasks that are currently managed by the service and running. */ public record SchedulerStats( int hostsAvailable, @@ -40,6 +40,6 @@ public record SchedulerStats( long attemptsSuccess, long attemptsFailure, long attemptsError, - int serversTotal, - int serversPending, - int serversActive) {} + int tasksTotal, + int tasksPending, + int tasksActive) {} diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ComputeScheduler.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ComputeScheduler.kt index 0ccaf991..42de9ebc 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ComputeScheduler.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ComputeScheduler.kt @@ -22,12 +22,12 @@ package org.opendc.compute.service.scheduler -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.ComputeService import org.opendc.compute.service.HostView /** - * A generic scheduler interface used by the [ComputeService] to select hosts to place [Server]s on. + * A generic scheduler interface used by the [ComputeService] to select hosts to place [Task]s on. */ public interface ComputeScheduler { /** @@ -41,10 +41,10 @@ public interface ComputeScheduler { public fun removeHost(host: HostView) /** - * Select a host for the specified [server]. + * Select a host for the specified [task]. * - * @param server The server to select a host for. + * @param task The server to select a host for. * @return The host to schedule the server on or `null` if no server is available. */ - public fun select(server: Server): HostView? + public fun select(task: Task): HostView? } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/FilterScheduler.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/FilterScheduler.kt index 41118386..772a470d 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/FilterScheduler.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/FilterScheduler.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import org.opendc.compute.service.scheduler.filters.HostFilter import org.opendc.compute.service.scheduler.weights.HostWeigher @@ -32,7 +32,7 @@ import kotlin.math.min /** * A [ComputeScheduler] implementation that uses filtering and weighing passes to select - * the host to schedule a [Server] on. + * the host to schedule a [Task] on. * * This implementation is based on the filter scheduler from OpenStack Nova. * See: https://docs.openstack.org/nova/latest/user/filter-scheduler.html @@ -65,13 +65,13 @@ public class FilterScheduler( hosts.remove(host) } - override fun select(server: Server): HostView? { + override fun select(task: Task): HostView? { val hosts = hosts - val filteredHosts = hosts.filter { host -> filters.all { filter -> filter.test(host, server) } } + val filteredHosts = hosts.filter { host -> filters.all { filter -> filter.test(host, task) } } val subset = if (weighers.isNotEmpty()) { - val results = weighers.map { it.getWeights(filteredHosts, server) } + val results = weighers.map { it.getWeights(filteredHosts, task) } val weights = DoubleArray(filteredHosts.size) for (result in results) { diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ReplayScheduler.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ReplayScheduler.kt index a6703c89..d1690ddf 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ReplayScheduler.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ReplayScheduler.kt @@ -23,7 +23,7 @@ package org.opendc.compute.service.scheduler import mu.KotlinLogging -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -48,14 +48,14 @@ public class ReplayScheduler(private val vmPlacements: Map<String, String>) : Co hosts.remove(host) } - override fun select(server: Server): HostView? { + override fun select(task: Task): HostView? { val clusterName = - vmPlacements[server.name] - ?: throw IllegalStateException("Could not find placement data in VM placement file for VM ${server.name}") + vmPlacements[task.name] + ?: throw IllegalStateException("Could not find placement data in VM placement file for VM ${task.name}") val machinesInCluster = hosts.filter { it.host.name.contains(clusterName) } if (machinesInCluster.isEmpty()) { - logger.info { "Could not find any machines belonging to cluster $clusterName for image ${server.name}, assigning randomly." } + logger.info { "Could not find any machines belonging to cluster $clusterName for image ${task.name}, assigning randomly." } return hosts.maxByOrNull { it.availableMemory } } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/ComputeFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/ComputeFilter.kt index dd707f60..2ad626f3 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/ComputeFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/ComputeFilter.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import org.opendc.compute.service.driver.HostState @@ -32,7 +32,7 @@ import org.opendc.compute.service.driver.HostState public class ComputeFilter : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { val result = host.host.state == HostState.UP return result diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/DifferentHostFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/DifferentHostFilter.kt index df67a19f..ffafeaa9 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/DifferentHostFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/DifferentHostFilter.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import java.util.UUID @@ -32,10 +32,10 @@ import java.util.UUID public class DifferentHostFilter : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { @Suppress("UNCHECKED_CAST") - val affinityUUIDs = server.meta["scheduler_hint:different_host"] as? Set<UUID> ?: return true + val affinityUUIDs = task.meta["scheduler_hint:different_host"] as? Set<UUID> ?: return true return host.host.instances.none { it.uid in affinityUUIDs } } } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/HostFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/HostFilter.kt index 902c760e..f506127a 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/HostFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/HostFilter.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import org.opendc.compute.service.scheduler.FilterScheduler @@ -32,10 +32,10 @@ import org.opendc.compute.service.scheduler.FilterScheduler public fun interface HostFilter { /** * Test whether the specified [host] should be included in the selection - * for scheduling the specified [server]. + * for scheduling the specified [task]. */ public fun test( host: HostView, - server: Server, + task: Task, ): Boolean } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/InstanceCountFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/InstanceCountFilter.kt index d9348802..7d5eb400 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/InstanceCountFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/InstanceCountFilter.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -33,7 +33,7 @@ import org.opendc.compute.service.HostView public class InstanceCountFilter(private val limit: Int) : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { return host.instanceCount < limit } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/RamFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/RamFilter.kt index d8c3d540..0a28ccc6 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/RamFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/RamFilter.kt @@ -22,20 +22,20 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** - * A [HostFilter] that filters hosts based on the memory requirements of a [Server] and the RAM available on the host. + * A [HostFilter] that filters hosts based on the memory requirements of a [Task] and the RAM available on the host. * * @param allocationRatio Virtual RAM to physical RAM allocation ratio. */ public class RamFilter(private val allocationRatio: Double) : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { - val requestedMemory = server.flavor.memorySize + val requestedMemory = task.flavor.memorySize val availableMemory = host.availableMemory val memoryCapacity = host.host.model.memoryCapacity diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/SameHostFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/SameHostFilter.kt index 4c31c66a..d8634285 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/SameHostFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/SameHostFilter.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import java.util.UUID @@ -32,10 +32,10 @@ import java.util.UUID public class SameHostFilter : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { @Suppress("UNCHECKED_CAST") - val affinityUUIDs = server.meta["scheduler_hint:same_host"] as? Set<UUID> ?: return true + val affinityUUIDs = task.meta["scheduler_hint:same_host"] as? Set<UUID> ?: return true return host.host.instances.any { it.uid in affinityUUIDs } } } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuCapacityFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuCapacityFilter.kt index 01ece80e..f87658cd 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuCapacityFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuCapacityFilter.kt @@ -22,22 +22,22 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** - * A [HostFilter] that filters hosts based on the vCPU speed requirements of a [Server] and the available + * A [HostFilter] that filters hosts based on the vCPU speed requirements of a [Task] and the available * capacity on the host. */ public class VCpuCapacityFilter : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { - val requiredCapacity = server.flavor.meta["cpu-capacity"] as? Double + val requiredCapacity = task.flavor.meta["cpu-capacity"] as? Double val hostModel = host.host.model val availableCapacity = hostModel.cpuCapacity / hostModel.cpuCount - return requiredCapacity == null || availableCapacity >= (requiredCapacity / server.flavor.coreCount) + return requiredCapacity == null || availableCapacity >= (requiredCapacity / task.flavor.coreCount) } } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuFilter.kt index cefb3f7a..442e58f6 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuFilter.kt @@ -22,20 +22,20 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** - * A [HostFilter] that filters hosts based on the vCPU requirements of a [Server] and the available vCPUs on the host. + * A [HostFilter] that filters hosts based on the vCPU requirements of a [Task] and the available vCPUs on the host. * * @param allocationRatio Virtual CPU to physical CPU allocation ratio. */ public class VCpuFilter(private val allocationRatio: Double) : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { - val requested = server.flavor.coreCount + val requested = task.flavor.coreCount val totalCores = host.host.model.coreCount val limit = totalCores * allocationRatio diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/CoreRamWeigher.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/CoreRamWeigher.kt index d6aafbc7..d84f5e68 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/CoreRamWeigher.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/CoreRamWeigher.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.weights -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -35,7 +35,7 @@ import org.opendc.compute.service.HostView public class CoreRamWeigher(override val multiplier: Double = 1.0) : HostWeigher { override fun getWeight( host: HostView, - server: Server, + task: Task, ): Double { return host.availableMemory.toDouble() / host.host.model.cpuCount } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/HostWeigher.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/HostWeigher.kt index 825cfff9..3f2c4123 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/HostWeigher.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/HostWeigher.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.weights -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import org.opendc.compute.service.scheduler.FilterScheduler @@ -36,26 +36,26 @@ public interface HostWeigher { public val multiplier: Double /** - * Obtain the weight of the specified [host] when scheduling the specified [server]. + * Obtain the weight of the specified [host] when scheduling the specified [task]. */ public fun getWeight( host: HostView, - server: Server, + task: Task, ): Double /** - * Obtain the weights for [hosts] when scheduling the specified [server]. + * Obtain the weights for [hosts] when scheduling the specified [task]. */ public fun getWeights( hosts: List<HostView>, - server: Server, + task: Task, ): Result { val weights = DoubleArray(hosts.size) var min = Double.MAX_VALUE var max = Double.MIN_VALUE for ((i, host) in hosts.withIndex()) { - val weight = getWeight(host, server) + val weight = getWeight(host, task) weights[i] = weight min = kotlin.math.min(min, weight) max = kotlin.math.max(max, weight) diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/InstanceCountWeigher.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/InstanceCountWeigher.kt index 9e0a9517..0789f109 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/InstanceCountWeigher.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/InstanceCountWeigher.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.weights -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -31,7 +31,7 @@ import org.opendc.compute.service.HostView public class InstanceCountWeigher(override val multiplier: Double = 1.0) : HostWeigher { override fun getWeight( host: HostView, - server: Server, + task: Task, ): Double { return host.instanceCount.toDouble() } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/RamWeigher.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/RamWeigher.kt index fca2e893..fb03d064 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/RamWeigher.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/RamWeigher.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.weights -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -34,7 +34,7 @@ import org.opendc.compute.service.HostView public class RamWeigher(override val multiplier: Double = 1.0) : HostWeigher { override fun getWeight( host: HostView, - server: Server, + task: Task, ): Double { return host.availableMemory.toDouble() } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuCapacityWeigher.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuCapacityWeigher.kt index 242660c3..6d1482ff 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuCapacityWeigher.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuCapacityWeigher.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.weights -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -31,11 +31,11 @@ import org.opendc.compute.service.HostView public class VCpuCapacityWeigher(override val multiplier: Double = 1.0) : HostWeigher { override fun getWeight( host: HostView, - server: Server, + task: Task, ): Double { val model = host.host.model - val requiredCapacity = server.flavor.meta["cpu-capacity"] as? Double ?: 0.0 - return model.cpuCapacity / model.cpuCount - requiredCapacity / server.flavor.coreCount + val requiredCapacity = task.flavor.meta["cpu-capacity"] as? Double ?: 0.0 + return model.cpuCapacity / model.cpuCount - requiredCapacity / task.flavor.coreCount } override fun toString(): String = "VCpuWeigher" diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuWeigher.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuWeigher.kt index be93458f..dfc30b54 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuWeigher.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuWeigher.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.weights -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -37,7 +37,7 @@ public class VCpuWeigher(private val allocationRatio: Double, override val multi override fun getWeight( host: HostView, - server: Server, + task: Task, ): Double { return host.host.model.cpuCount * allocationRatio - host.provisionedCores } diff --git a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt index 32d01660..e48244f0 100644 --- a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt +++ b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt @@ -36,9 +36,9 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows import org.opendc.compute.api.Flavor import org.opendc.compute.api.Image -import org.opendc.compute.api.Server -import org.opendc.compute.api.ServerState -import org.opendc.compute.api.ServerWatcher +import org.opendc.compute.api.Task +import org.opendc.compute.api.TaskState +import org.opendc.compute.api.TaskWatcher import org.opendc.compute.service.driver.Host import org.opendc.compute.service.driver.HostListener import org.opendc.compute.service.driver.HostModel @@ -78,21 +78,21 @@ internal class ComputeServiceTest { assertEquals(emptyList<Flavor>(), client.queryFlavors()) assertEquals(emptyList<Image>(), client.queryImages()) - assertEquals(emptyList<Server>(), client.queryServers()) + assertEquals(emptyList<Task>(), client.queryTasks()) client.close() assertThrows<IllegalStateException> { client.queryFlavors() } assertThrows<IllegalStateException> { client.queryImages() } - assertThrows<IllegalStateException> { client.queryServers() } + assertThrows<IllegalStateException> { client.queryTasks() } assertThrows<IllegalStateException> { client.findFlavor(UUID.randomUUID()) } assertThrows<IllegalStateException> { client.findImage(UUID.randomUUID()) } - assertThrows<IllegalStateException> { client.findServer(UUID.randomUUID()) } + assertThrows<IllegalStateException> { client.findTask(UUID.randomUUID()) } assertThrows<IllegalStateException> { client.newFlavor("test", 1, 2) } assertThrows<IllegalStateException> { client.newImage("test") } - assertThrows<IllegalStateException> { client.newServer("test", mockk(), mockk()) } + assertThrows<IllegalStateException> { client.newTask("test", mockk(), mockk()) } } @Test @@ -106,12 +106,12 @@ internal class ComputeServiceTest { val image = client.newImage("test") assertEquals(listOf(image), client.queryImages()) assertEquals(image, client.findImage(image.uid)) - val server = client.newServer("test", image, flavor, start = false) - assertEquals(listOf(server), client.queryServers()) - assertEquals(server, client.findServer(server.uid)) + val server = client.newTask("test", image, flavor, start = false) + assertEquals(listOf(server), client.queryTasks()) + assertEquals(server, client.findTask(server.uid)) server.delete() - assertNull(client.findServer(server.uid)) + assertNull(client.findTask(server.uid)) image.delete() assertNull(client.findImage(image.uid)) @@ -174,12 +174,12 @@ internal class ComputeServiceTest { val client = service.newClient() val flavor = client.newFlavor("test", 1, 0) val image = client.newImage("test") - val server = client.newServer("test", image, flavor, start = false) + val server = client.newTask("test", image, flavor, start = false) server.start() delay(5L * 60 * 1000) server.reload() - assertEquals(ServerState.TERMINATED, server.state) + assertEquals(TaskState.TERMINATED, server.state) } @Test @@ -188,12 +188,12 @@ internal class ComputeServiceTest { val client = service.newClient() val flavor = client.newFlavor("test", 0, 1024) val image = client.newImage("test") - val server = client.newServer("test", image, flavor, start = false) + val server = client.newTask("test", image, flavor, start = false) server.start() delay(5L * 60 * 1000) server.reload() - assertEquals(ServerState.TERMINATED, server.state) + assertEquals(TaskState.TERMINATED, server.state) } @Test @@ -202,12 +202,12 @@ internal class ComputeServiceTest { val client = service.newClient() val flavor = client.newFlavor("test", 1, 1024) val image = client.newImage("test") - val server = client.newServer("test", image, flavor, start = false) + val server = client.newTask("test", image, flavor, start = false) server.start() delay(5L * 60 * 1000) server.reload() - assertEquals(ServerState.TERMINATED, server.state) + assertEquals(TaskState.TERMINATED, server.state) } @Test @@ -216,13 +216,13 @@ internal class ComputeServiceTest { val client = service.newClient() val flavor = client.newFlavor("test", 1, 1024) val image = client.newImage("test") - val server = client.newServer("test", image, flavor, start = false) + val server = client.newTask("test", image, flavor, start = false) server.start() server.stop() delay(5L * 60 * 1000) server.reload() - assertEquals(ServerState.TERMINATED, server.state) + assertEquals(TaskState.TERMINATED, server.state) } @Test @@ -239,12 +239,12 @@ internal class ComputeServiceTest { val client = service.newClient() val flavor = client.newFlavor("test", 1, 1024) val image = client.newImage("test") - val server = client.newServer("test", image, flavor, start = false) + val server = client.newTask("test", image, flavor, start = false) server.start() delay(10L * 60 * 1000) server.reload() - assertEquals(ServerState.PROVISIONING, server.state) + assertEquals(TaskState.PROVISIONING, server.state) verify { host.canFit(server) } } @@ -266,7 +266,7 @@ internal class ComputeServiceTest { val client = service.newClient() val flavor = client.newFlavor("test", 1, 1024) val image = client.newImage("test") - val server = client.newServer("test", image, flavor, start = false) + val server = client.newTask("test", image, flavor, start = false) server.start() delay(5L * 60 * 1000) @@ -276,7 +276,7 @@ internal class ComputeServiceTest { delay(5L * 60 * 1000) server.reload() - assertEquals(ServerState.PROVISIONING, server.state) + assertEquals(TaskState.PROVISIONING, server.state) verify { host.canFit(server) } } @@ -298,7 +298,7 @@ internal class ComputeServiceTest { val client = service.newClient() val flavor = client.newFlavor("test", 1, 1024) val image = client.newImage("test") - val server = client.newServer("test", image, flavor, start = false) + val server = client.newTask("test", image, flavor, start = false) delay(5L * 60 * 1000) @@ -308,7 +308,7 @@ internal class ComputeServiceTest { server.start() delay(5L * 60 * 1000) server.reload() - assertEquals(ServerState.PROVISIONING, server.state) + assertEquals(TaskState.PROVISIONING, server.state) verify(exactly = 0) { host.canFit(server) } } @@ -330,10 +330,10 @@ internal class ComputeServiceTest { val client = service.newClient() val flavor = client.newFlavor("test", 1, 1024) val image = client.newImage("test") - val server = client.newServer("test", image, flavor, start = false) - val slot = slot<Server>() + val server = client.newTask("test", image, flavor, start = false) + val slot = slot<Task>() - val watcher = mockk<ServerWatcher>(relaxUnitFun = true) + val watcher = mockk<TaskWatcher>(relaxUnitFun = true) server.watch(watcher) // Start server @@ -341,20 +341,20 @@ internal class ComputeServiceTest { delay(5L * 60 * 1000) coVerify { host.spawn(capture(slot)) } - listeners.forEach { it.onStateChanged(host, slot.captured, ServerState.RUNNING) } + listeners.forEach { it.onStateChanged(host, slot.captured, TaskState.RUNNING) } server.reload() - assertEquals(ServerState.RUNNING, server.state) + assertEquals(TaskState.RUNNING, server.state) - verify { watcher.onStateChanged(server, ServerState.RUNNING) } + verify { watcher.onStateChanged(server, TaskState.RUNNING) } // Stop server - listeners.forEach { it.onStateChanged(host, slot.captured, ServerState.TERMINATED) } + listeners.forEach { it.onStateChanged(host, slot.captured, TaskState.TERMINATED) } server.reload() - assertEquals(ServerState.TERMINATED, server.state) + assertEquals(TaskState.TERMINATED, server.state) - verify { watcher.onStateChanged(server, ServerState.TERMINATED) } + verify { watcher.onStateChanged(server, TaskState.TERMINATED) } } @Test @@ -375,12 +375,12 @@ internal class ComputeServiceTest { val client = service.newClient() val flavor = client.newFlavor("test", 1, 1024) val image = client.newImage("test") - val server = client.newServer("test", image, flavor, start = false) + val server = client.newTask("test", image, flavor, start = false) server.start() delay(5L * 60 * 1000) server.reload() - assertEquals(ServerState.PROVISIONING, server.state) + assertEquals(TaskState.PROVISIONING, server.state) } } diff --git a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceServerTest.kt b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceTaskTest.kt index b420ee3b..e77665fe 100644 --- a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceServerTest.kt +++ b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceTaskTest.kt @@ -31,16 +31,16 @@ import org.junit.jupiter.api.Assertions.assertNotEquals import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows -import org.opendc.compute.api.Server -import org.opendc.compute.api.ServerState +import org.opendc.compute.api.Task +import org.opendc.compute.api.TaskState import org.opendc.compute.service.driver.Host import org.opendc.simulator.kotlin.runSimulation import java.util.UUID /** - * Test suite for the [ServiceServer] implementation. + * Test suite for the [ServiceTask] implementation. */ -class ServiceServerTest { +class ServiceTaskTest { @Test fun testEquality() { val service = mockk<ComputeService>() @@ -48,8 +48,26 @@ class ServiceServerTest { val flavor = mockFlavor() val image = mockImage() - val a = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - val b = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) + val a = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) + val b = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) assertEquals(a, b) } @@ -60,9 +78,18 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val a = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - - val b = mockk<Server>(relaxUnitFun = true) + val a = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) + + val b = mockk<Task>(relaxUnitFun = true) every { b.uid } returns UUID.randomUUID() assertNotEquals(a, b) @@ -74,7 +101,16 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val a = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) + val a = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) assertNotEquals(a, Unit) } @@ -86,14 +122,23 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - - every { service.schedule(any()) } answers { ComputeService.SchedulingRequest(it.invocation.args[0] as ServiceServer, 0) } + val server = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) + + every { service.schedule(any()) } answers { ComputeService.SchedulingRequest(it.invocation.args[0] as ServiceTask, 0) } server.start() verify(exactly = 1) { service.schedule(server) } - assertEquals(ServerState.PROVISIONING, server.state) + assertEquals(TaskState.PROVISIONING, server.state) } @Test @@ -103,9 +148,18 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - - server.setState(ServerState.DELETED) + val server = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) + + server.setState(TaskState.DELETED) assertThrows<IllegalStateException> { server.start() } } @@ -117,13 +171,22 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - - server.setState(ServerState.PROVISIONING) + val server = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) + + server.setState(TaskState.PROVISIONING) server.start() - assertEquals(ServerState.PROVISIONING, server.state) + assertEquals(TaskState.PROVISIONING, server.state) } @Test @@ -133,13 +196,22 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - - server.setState(ServerState.RUNNING) + val server = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) + + server.setState(TaskState.RUNNING) server.start() - assertEquals(ServerState.RUNNING, server.state) + assertEquals(TaskState.RUNNING, server.state) } @Test @@ -149,7 +221,16 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) + val server = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) val request = ComputeService.SchedulingRequest(server, 0) every { service.schedule(any()) } returns request @@ -158,7 +239,7 @@ class ServiceServerTest { server.stop() assertTrue(request.isCancelled) - assertEquals(ServerState.TERMINATED, server.state) + assertEquals(TaskState.TERMINATED, server.state) } @Test @@ -168,12 +249,21 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - - server.setState(ServerState.TERMINATED) + val server = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) + + server.setState(TaskState.TERMINATED) server.stop() - assertEquals(ServerState.TERMINATED, server.state) + assertEquals(TaskState.TERMINATED, server.state) } @Test @@ -183,12 +273,21 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - - server.setState(ServerState.DELETED) + val server = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) + + server.setState(TaskState.DELETED) server.stop() - assertEquals(ServerState.DELETED, server.state) + assertEquals(TaskState.DELETED, server.state) } @Test @@ -198,10 +297,19 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) + val server = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) val host = mockk<Host>(relaxUnitFun = true) - server.setState(ServerState.RUNNING) + server.setState(TaskState.RUNNING) server.host = host server.stop() yield() @@ -216,7 +324,16 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) + val server = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) val request = ComputeService.SchedulingRequest(server, 0) every { service.schedule(any()) } returns request @@ -225,7 +342,7 @@ class ServiceServerTest { server.delete() assertTrue(request.isCancelled) - assertEquals(ServerState.DELETED, server.state) + assertEquals(TaskState.DELETED, server.state) verify { service.delete(server) } } @@ -236,12 +353,21 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - - server.setState(ServerState.TERMINATED) + val server = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) + + server.setState(TaskState.TERMINATED) server.delete() - assertEquals(ServerState.DELETED, server.state) + assertEquals(TaskState.DELETED, server.state) verify { service.delete(server) } } @@ -253,12 +379,21 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - - server.setState(ServerState.DELETED) + val server = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) + + server.setState(TaskState.DELETED) server.delete() - assertEquals(ServerState.DELETED, server.state) + assertEquals(TaskState.DELETED, server.state) } @Test @@ -268,10 +403,19 @@ class ServiceServerTest { val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) + val server = + ServiceTask( + service, + uid, + "test", + flavor, + image, + mutableMapOf(), + mutableMapOf<String, Any>(), + ) val host = mockk<Host>(relaxUnitFun = true) - server.setState(ServerState.RUNNING) + server.setState(TaskState.RUNNING) server.host = host server.delete() yield() diff --git a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/FilterSchedulerTest.kt b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/FilterSchedulerTest.kt index 3bcecf9b..2478bf82 100644 --- a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/FilterSchedulerTest.kt +++ b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/FilterSchedulerTest.kt @@ -29,7 +29,7 @@ import org.junit.jupiter.api.Assertions.assertNull import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertAll import org.junit.jupiter.api.assertThrows -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import org.opendc.compute.service.driver.HostModel import org.opendc.compute.service.driver.HostState @@ -78,11 +78,11 @@ internal class FilterSchedulerTest { weighers = emptyList(), ) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 - assertNull(scheduler.select(server)) + assertNull(scheduler.select(task)) } @Test @@ -102,14 +102,14 @@ internal class FilterSchedulerTest { scheduler.addHost(hostA) scheduler.addHost(hostB) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 // Make sure we get the first host both times assertAll( - { assertEquals(hostA, scheduler.select(server)) }, - { assertEquals(hostA, scheduler.select(server)) }, + { assertEquals(hostA, scheduler.select(task)) }, + { assertEquals(hostA, scheduler.select(task)) }, ) } @@ -132,14 +132,14 @@ internal class FilterSchedulerTest { scheduler.addHost(hostA) scheduler.addHost(hostB) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 // Make sure we get the first host both times assertAll( - { assertEquals(hostB, scheduler.select(server)) }, - { assertEquals(hostA, scheduler.select(server)) }, + { assertEquals(hostB, scheduler.select(task)) }, + { assertEquals(hostA, scheduler.select(task)) }, ) } @@ -156,11 +156,11 @@ internal class FilterSchedulerTest { scheduler.addHost(host) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 - assertNull(scheduler.select(server)) + assertNull(scheduler.select(task)) } @Test @@ -176,11 +176,11 @@ internal class FilterSchedulerTest { scheduler.addHost(host) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 - assertEquals(host, scheduler.select(server)) + assertEquals(host, scheduler.select(task)) } @Test @@ -204,11 +204,11 @@ internal class FilterSchedulerTest { scheduler.addHost(hostA) scheduler.addHost(hostB) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 - assertEquals(hostB, scheduler.select(server)) + assertEquals(hostB, scheduler.select(task)) } @Test @@ -226,11 +226,11 @@ internal class FilterSchedulerTest { scheduler.addHost(host) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 2300 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 2300 - assertNull(scheduler.select(server)) + assertNull(scheduler.select(task)) } @Test @@ -254,11 +254,11 @@ internal class FilterSchedulerTest { scheduler.addHost(hostA) scheduler.addHost(hostB) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 - assertEquals(hostB, scheduler.select(server)) + assertEquals(hostB, scheduler.select(task)) } @Test @@ -276,11 +276,11 @@ internal class FilterSchedulerTest { scheduler.addHost(host) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 8 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 8 + every { task.flavor.memorySize } returns 1024 - assertNull(scheduler.select(server)) + assertNull(scheduler.select(task)) } // TODO: fix when schedulers are reworked @@ -305,12 +305,12 @@ internal class FilterSchedulerTest { scheduler.addHost(hostB) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 - every { server.flavor.meta } returns mapOf("cpu-capacity" to 2 * 3200.0) + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 + every { task.flavor.meta } returns mapOf("cpu-capacity" to 2 * 3200.0) - assertEquals(hostB, scheduler.select(server)) + assertEquals(hostB, scheduler.select(task)) } @Test @@ -334,11 +334,11 @@ internal class FilterSchedulerTest { scheduler.addHost(hostA) scheduler.addHost(hostB) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 - assertEquals(hostB, scheduler.select(server)) + assertEquals(hostB, scheduler.select(task)) } @Test @@ -349,10 +349,10 @@ internal class FilterSchedulerTest { weighers = emptyList(), ) - val serverA = mockk<Server>() - every { serverA.uid } returns UUID.randomUUID() - every { serverA.flavor.coreCount } returns 2 - every { serverA.flavor.memorySize } returns 1024 + val taskA = mockk<Task>() + every { taskA.uid } returns UUID.randomUUID() + every { taskA.flavor.coreCount } returns 2 + every { taskA.flavor.memorySize } returns 1024 val hostA = mockk<HostView>() every { hostA.host.state } returns HostState.UP @@ -363,22 +363,22 @@ internal class FilterSchedulerTest { val hostB = mockk<HostView>() every { hostB.host.state } returns HostState.UP every { hostB.host.model } returns HostModel(4 * 2600.0, 1, 4, 2048) - every { hostB.host.instances } returns setOf(serverA) + every { hostB.host.instances } returns setOf(taskA) every { hostB.provisionedCores } returns 0 scheduler.addHost(hostA) scheduler.addHost(hostB) - val serverB = mockk<Server>() - every { serverB.flavor.coreCount } returns 2 - every { serverB.flavor.memorySize } returns 1024 - every { serverB.meta } returns emptyMap() + val taskB = mockk<Task>() + every { taskB.flavor.coreCount } returns 2 + every { taskB.flavor.memorySize } returns 1024 + every { taskB.meta } returns emptyMap() - assertEquals(hostA, scheduler.select(serverB)) + assertEquals(hostA, scheduler.select(taskB)) - every { serverB.meta } returns mapOf("scheduler_hint:same_host" to setOf(serverA.uid)) + every { taskB.meta } returns mapOf("scheduler_hint:same_host" to setOf(taskA.uid)) - assertEquals(hostB, scheduler.select(serverB)) + assertEquals(hostB, scheduler.select(taskB)) } @Test @@ -389,15 +389,15 @@ internal class FilterSchedulerTest { weighers = emptyList(), ) - val serverA = mockk<Server>() - every { serverA.uid } returns UUID.randomUUID() - every { serverA.flavor.coreCount } returns 2 - every { serverA.flavor.memorySize } returns 1024 + val taskA = mockk<Task>() + every { taskA.uid } returns UUID.randomUUID() + every { taskA.flavor.coreCount } returns 2 + every { taskA.flavor.memorySize } returns 1024 val hostA = mockk<HostView>() every { hostA.host.state } returns HostState.UP every { hostA.host.model } returns HostModel(4 * 2600.0, 1, 4, 2048) - every { hostA.host.instances } returns setOf(serverA) + every { hostA.host.instances } returns setOf(taskA) every { hostA.provisionedCores } returns 3 val hostB = mockk<HostView>() @@ -409,16 +409,16 @@ internal class FilterSchedulerTest { scheduler.addHost(hostA) scheduler.addHost(hostB) - val serverB = mockk<Server>() - every { serverB.flavor.coreCount } returns 2 - every { serverB.flavor.memorySize } returns 1024 - every { serverB.meta } returns emptyMap() + val taskB = mockk<Task>() + every { taskB.flavor.coreCount } returns 2 + every { taskB.flavor.memorySize } returns 1024 + every { taskB.meta } returns emptyMap() - assertEquals(hostA, scheduler.select(serverB)) + assertEquals(hostA, scheduler.select(taskB)) - every { serverB.meta } returns mapOf("scheduler_hint:different_host" to setOf(serverA.uid)) + every { taskB.meta } returns mapOf("scheduler_hint:different_host" to setOf(taskA.uid)) - assertEquals(hostB, scheduler.select(serverB)) + assertEquals(hostB, scheduler.select(taskB)) } @Test @@ -442,11 +442,11 @@ internal class FilterSchedulerTest { scheduler.addHost(hostA) scheduler.addHost(hostB) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 - assertEquals(hostA, scheduler.select(server)) + assertEquals(hostA, scheduler.select(task)) } // TODO: fix test when updating schedulers @@ -471,11 +471,11 @@ internal class FilterSchedulerTest { scheduler.addHost(hostA) scheduler.addHost(hostB) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 - assertEquals(hostB, scheduler.select(server)) + assertEquals(hostB, scheduler.select(task)) } @Test @@ -499,11 +499,11 @@ internal class FilterSchedulerTest { scheduler.addHost(hostA) scheduler.addHost(hostB) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 - assertEquals(hostB, scheduler.select(server)) + assertEquals(hostB, scheduler.select(task)) } @Test @@ -527,10 +527,10 @@ internal class FilterSchedulerTest { scheduler.addHost(hostA) scheduler.addHost(hostB) - val server = mockk<Server>() - every { server.flavor.coreCount } returns 2 - every { server.flavor.memorySize } returns 1024 + val task = mockk<Task>() + every { task.flavor.coreCount } returns 2 + every { task.flavor.memorySize } returns 1024 - assertEquals(hostB, scheduler.select(server)) + assertEquals(hostB, scheduler.select(task)) } } |
