Commit cda7a325 authored by Hines, Jesse's avatar Hines, Jesse
Browse files

Handle replay fields properly

parent 981fc5b9
Loading
Loading
Loading
Loading
+62 −46
Original line number Diff line number Diff line
@@ -17,14 +17,45 @@ export function RAPSForm(props: {
        choices={workloadTypes.map(w => ({ label: w, value: w }))}
        value={props.form.workload}
        onChange={(e) => {
          const workload = e.target.value as WorkloadType;
          if (workload == "replay") {
            props.setForm({
              ...props.form,
            workload: e.target.value as WorkloadType,
              workload: "replay",
              arrival: "prescribed",
              numjobs: undefined,
              seed: undefined,
              replay: true,
              scheduler: "default",
              policy: "replay",
            })
          } else {
            props.setForm({
              ...props.form,
              workload: workload,
              arrival: "prescribed",
              replay: false,
              policy: props.form.policy == 'replay' ? 'fcfs' : props.form.policy,
            })
          }
        }}
      />
      {props.form.workload && (
        <>
      {props.form.workload == "replay" ? (<>
        <Select
          label="Reschedule Arrival"
          choices={[
            { label: "prescribed", value: "prescribed" },
            { label: "poisson", value: "poisson" },
          ]}
          value={props.form.policy}
          onChange={(e) => {
            props.setForm({
              ...props.form,
              arrival: e.target.value as "prescribed" | "poisson",
            });
          }}
        />
      </>) : (<>
          <NumberInput
            inputProps={{ // TODO handle invalid inputs better
              onChange: (e: ChangeEvent<HTMLInputElement>) => {
@@ -53,8 +84,6 @@ export function RAPSForm(props: {
            }}
            className="row-start-2"
          />
        </>
      )}
          <Select
            label="Scheduler"
            choices={Object.keys(schedulers).map(s => ({ label: s, value: s }))}
@@ -79,20 +108,7 @@ export function RAPSForm(props: {
              });
            }}
          />
      <Select
        label="Reschedule Arrival"
        choices={[
          { label: "prescribed", value: "prescribed" },
          { label: "poisson", value: "poisson" },
        ]}
        value={props.form.policy}
        onChange={(e) => {
          props.setForm({
            ...props.form,
            arrival: e.target.value as "prescribed" | "poisson",
          });
        }}
      />
      </>)}
      <NumberInput
        inputProps={{
          onChange: (e: ChangeEvent<HTMLInputElement>) => {
+2 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ export interface SimulationConfig {
  // scale?: number;
  // live?: boolean;
  workload: WorkloadType;
  replay: boolean;
  // multimodal?: number[];
  // jobsize_distribution?: ("uniform" | "weibull" | "normal")[] | null;
  // jobsize_normal_mean?: number | null;
@@ -109,6 +110,7 @@ export function getDefaultSimulationConfig(): SimulationConfig {
    cooling: false,
    weather: false,
    workload: "random",
    replay: false,
    numjobs: undefined,
    seed: undefined,
    scheduler: "default",