Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simulation State Machine Tests #1342

Closed
wants to merge 25 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
9e183a4
Organize Simulation Classes Into Different Packages
AvocadoMoon Jun 26, 2024
d0d30ca
Test For Different Simulation States
AvocadoMoon Jun 26, 2024
e011f67
Factor and Clean Up
AvocadoMoon Aug 19, 2024
228ced8
Move Simulation State Machine and SDE
AvocadoMoon Aug 19, 2024
a36537b
Mock Simulation DB and Initial State Machine Tests
AvocadoMoon Aug 22, 2024
1802cc5
Update State Machine and Mock Sim DB
AvocadoMoon Aug 23, 2024
b40dee9
Tests for each state the State Machine can Enter
AvocadoMoon Aug 23, 2024
1c88e93
Partial Fix to Memory Allocation Bug
AvocadoMoon Aug 27, 2024
5e9efab
No More Class Copies
AvocadoMoon Aug 28, 2024
fc10c42
Test Messages Sent to Client
AvocadoMoon Aug 29, 2024
872d040
Mock VCMessage Session for Now
AvocadoMoon Aug 29, 2024
182e835
Separate Simulation Dispatcher into Two Classes
AvocadoMoon Aug 30, 2024
41a4194
Initial Simulation Dispatcher Test
AvocadoMoon Aug 30, 2024
1b7a824
Reintroduce Server Topic Message
AvocadoMoon Sep 3, 2024
2aeaf91
Simulation Dispatcher Thread Tests
AvocadoMoon Sep 3, 2024
1fba4e5
Zombie Thread Tests
AvocadoMoon Sep 4, 2024
a1c13e9
Queue Flusher Test And Test Stability Improvement
AvocadoMoon Sep 5, 2024
b562501
Add HTC Memory Limit Env Variables
AvocadoMoon Sep 5, 2024
10ddc2e
Merge branch 'master' into simulation-control-implementation
AvocadoMoon Sep 5, 2024
0ca4ac8
Add Memory Env Variables To Slurm Test
AvocadoMoon Sep 5, 2024
206f460
Change Expected Source of Memory Limit
AvocadoMoon Sep 5, 2024
eb0e9bc
Fix Zombie Test Failing
AvocadoMoon Sep 6, 2024
c7ad036
Revert Unnecessary Changes
AvocadoMoon Sep 6, 2024
b960cce
Working Docker Image
AvocadoMoon Sep 6, 2024
0d6b08e
Delay Automatic Run of Zombie Thread
AvocadoMoon Sep 6, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions docker/build/Dockerfile-sched-dev
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,10 @@ ENV softwareVersion=SOFTWARE-VERSION-NOT-SET \
maxOdeJobsPerUser="max-ode-jobs-per-user-not-set" \
vcell_ssh_cmd_cmdtimeout="cmdSrvcSshCmdTimeoutMS-not-set" \
vcell_ssh_cmd_restoretimeout="cmdSrvcSshCmdRestoreTimeoutFactor-not-set" \
maxPdeJobsPerUser="max-pde-jobs-per-user-not-set"
maxPdeJobsPerUser="max-pde-jobs-per-user-not-set" \
htcMinMemoryMB="htc-min-memory-not-set" \
htcMaxMemoryMB="htc-max-memory-not-set" \
htcPowerUserMemoryFloorMB="htc-power-user-memory-floor-not-set"

ENV dbpswdfile=/run/secrets/dbpswd \
jmspswdfile=/run/secrets/jmspswd \
Expand Down Expand Up @@ -119,4 +122,7 @@ ENTRYPOINT java \
-Dvcell.server.maxPdeJobsPerUser=${maxPdeJobsPerUser} \
-Dvcell.ssh.cmd.cmdtimeout=${vcell_ssh_cmd_cmdtimeout} \
-Dvcell.ssh.cmd.restoretimeout=${vcell_ssh_cmd_restoretimeout} \
-cp "./lib/*" cbit.vcell.message.server.dispatcher.SimulationDispatcher
-Dvcell.htc.memory.min.mb=${htcMinMemoryMB} \
-Dvcell.htc.memory.max.mb=${htcMaxMemoryMB} \
-Dvcell.htc.memory.pu.floor.mb=${htcPowerUserMemoryFloorMB} \
-cp "./lib/*" cbit.vcell.message.server.dispatcher.SimulationDispatcherMain
6 changes: 6 additions & 0 deletions vcell-core/src/main/java/cbit/rmi/event/WorkerEvent.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
import cbit.vcell.solver.VCSimulationIdentifier;
import cbit.vcell.solver.server.SimulationMessage;

import java.util.ArrayList;

/**
* Insert the type's description here.
* Creation date: (2/5/2004 12:35:20 PM)
Expand All @@ -36,6 +38,10 @@ public class WorkerEvent extends MessageEvent {
public static final int JOB_WORKER_EXIT_NORMAL = 1015;
public static final int JOB_WORKER_EXIT_ERROR = 1016;

public static final ArrayList<Integer> ALL_JOB_EVENTS = new ArrayList<>(){{add(JOB_ACCEPTED);
add(JOB_STARTING); add(JOB_DATA); add(JOB_PROGRESS); add(JOB_FAILURE); add(JOB_COMPLETED); add(JOB_WORKER_ALIVE);
add(JOB_WORKER_EXIT_NORMAL); add(JOB_WORKER_EXIT_ERROR);}};

private VCSimulationIdentifier vcSimulationIdentifier = null;
private int jobIndex = -1;
private String hostName = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ public static void setConfigProvider(VCellConfigProvider configProvider) {
public static final String htcPbsHome = record("vcell.htc.pbs.home",ValueType.GEN);
public static final String htcSgeHome = record("vcell.htc.sge.home",ValueType.GEN);
public static final String htcNodeList = record("vcell.htc.nodelist",ValueType.GEN);
public static final String htcMinMemoryMB = record("vcell.htc.memory.min.mb", ValueType.INT); // minimum memory request in MB, currently 4g
public static final String htcMaxMemoryMB = record("vcell.htc.memory.max.mb", ValueType.INT); // maximum memory request in MB
public static final String htcPowerUserMemoryFloorMB = record("vcell.htc.memory.pu.floor.mb", ValueType.INT); // MIN memory allowed if declared to be a power user, currently 50g (Previously Existing Value)
public static final String slurm_cmd_sbatch = record("vcell.slurm.cmd.sbatch",ValueType.GEN);
public static final String slurm_cmd_scancel = record("vcell.slurm.cmd.scancel",ValueType.GEN);
public static final String slurm_cmd_sacct = record("vcell.slurm.cmd.sacct",ValueType.GEN);
Expand Down
8 changes: 7 additions & 1 deletion vcell-core/src/main/java/org/vcell/util/document/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,17 @@
* This type was created in VisualAge.
*/
@SuppressWarnings("serial")
public class User implements java.io.Serializable, Matchable, Immutable {
public class User implements java.io.Serializable, Matchable, Immutable, Comparable {
private final static String PREVIOUS_DATABASE_VALUE_ADMIN = "special0";
private final static String PREVIOUS_DATABASE_VALUE_POWERUSER = "special1";
private final static String PREVIOUS_DATABASE_VALUE_PUBLICATION = "publication";

@Override
public int compareTo(Object o) {
User user = (User) o;
return this.getID().compareTo(user.key);
}

public enum SPECIAL_CLAIM {
admins/*special0*/,
powerUsers/*special1*/,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package org.vcell.restq.Simulations;
package org.vcell.restq.Simulations.DTO;

import cbit.vcell.server.HtcJobID;
import cbit.vcell.server.SimulationExecutionStatus;

import java.time.Instant;

public record SimulationExecutionStatusRecord(
public record SimulationExecutionStatus(
Instant fieldStartDate,
Instant fieldLatestUpdateDate,
Instant fieldEndDate,
Expand All @@ -14,9 +13,9 @@ public record SimulationExecutionStatusRecord(
HtcJobID fieldHtcJobID
) {

public static SimulationExecutionStatusRecord fromSimulationExecutionStatus(SimulationExecutionStatus status) {
public static SimulationExecutionStatus fromSimulationExecutionStatus(cbit.vcell.server.SimulationExecutionStatus status) {
if (status == null) {return null;}
return new SimulationExecutionStatusRecord(
return new SimulationExecutionStatus(
status.getStartDate() != null ? status.getStartDate().toInstant(): null,
status.getLatestUpdateDate() != null ? status.getLatestUpdateDate().toInstant() : null,
status.getEndDate() != null ? status.getEndDate().toInstant(): null,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package org.vcell.restq.Simulations.DTO;

import cbit.vcell.solver.VCSimulationIdentifier;
import cbit.vcell.solver.server.SimulationMessage;

import java.time.Instant;

public record SimulationJobStatus(
Instant fieldTimeDataStamp,
VCSimulationIdentifier fieldVCSimID,
Instant fieldSubmitDate,
cbit.vcell.server.SimulationJobStatus.SchedulerStatus fieldSchedulerStatus,
SimulationMessage fieldSimulationMessage,
int fieldTaskID,
String fieldServerID,
int fieldJobIndex,
SimulationExecutionStatus fieldSimulationExecutionStatus,
SimulationQueueEntryStatus fieldSimulationQueueEntryStatus
) {

public static SimulationJobStatus fromSimulationJobStatus(cbit.vcell.server.SimulationJobStatus s) {
if (s == null) {return null;}
return new SimulationJobStatus(
s.getTimeDateStamp() != null ? s.getTimeDateStamp().toInstant(): null,
s.getVCSimulationIdentifier(),
s.getSubmitDate() != null ? s.getSubmitDate().toInstant(): null,
s.getSchedulerStatus(),
s.getSimulationMessage(),
s.getTaskID(),
s.getServerID() != null ? s.getServerID().toString() : null,
s.getJobIndex(),
SimulationExecutionStatus.fromSimulationExecutionStatus(s.getSimulationExecutionStatus()),
SimulationQueueEntryStatus.fromStatusRecord(s.getSimulationQueueEntryStatus())
);
}

}
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
package org.vcell.restq.Simulations;
package org.vcell.restq.Simulations.DTO;

import cbit.vcell.server.SimulationJobStatus;
import cbit.vcell.server.SimulationQueueEntryStatus;

import java.time.Instant;

public record SimulationQueueEntryStatusRecord(
public record SimulationQueueEntryStatus(
int fieldQueuePriority,
Instant fieldQueueDate,
SimulationJobStatus.SimulationQueueID fieldQueueID
) {

public static SimulationQueueEntryStatusRecord fromStatusRecord(SimulationQueueEntryStatus simulationQueueEntryStatus) {
public static SimulationQueueEntryStatus fromStatusRecord(cbit.vcell.server.SimulationQueueEntryStatus simulationQueueEntryStatus) {
if (simulationQueueEntryStatus == null) {return null;}
return new SimulationQueueEntryStatusRecord(
return new SimulationQueueEntryStatus(
simulationQueueEntryStatus.getQueuePriority(),
simulationQueueEntryStatus.getQueueDate().toInstant(),
simulationQueueEntryStatus.getQueueID()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package org.vcell.restq.Simulations;
package org.vcell.restq.Simulations.DTO;

import cbit.vcell.server.SimulationStatusPersistent;

import java.util.HashMap;

public record SimulationStatusPersistentRecord(
public record SimulationStatus(
Status status,
String details,
boolean hasData
Expand Down Expand Up @@ -46,9 +44,9 @@ public static Status statusFromString(String statusString){
}
}

public static SimulationStatusPersistentRecord fromSimulationStatusPersistent(SimulationStatusPersistent s) {
public static SimulationStatus fromSimulationStatusPersistent(SimulationStatusPersistent s) {
if (s == null) return null;
return new SimulationStatusPersistentRecord(
return new SimulationStatus(
Status.statusFromString(s.getStatusString()),
s.getDetails(),
s.getHasData()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.vcell.restq.Simulations.DTO;

import java.util.ArrayList;

public record StatusMessage(SimulationJobStatus jobStatus, String userName, Double progress, Double timepoint) {


public static ArrayList<StatusMessage> convertServerStatusMessages(ArrayList<cbit.vcell.message.messages.StatusMessage> statusMessages){
ArrayList<StatusMessage> dtoStatusMessage = new ArrayList<>();
for (cbit.vcell.message.messages.StatusMessage statusMessage: statusMessages){
dtoStatusMessage.add(new StatusMessage(SimulationJobStatus.fromSimulationJobStatus(statusMessage.getJobStatus()), statusMessage.getUserName(),
statusMessage.getProgress(), statusMessage.getTimePoint()));
}
return dtoStatusMessage;
}
}

This file was deleted.

This file was deleted.

Loading
Loading