mengw15 commented on code in PR #6756:
URL: https://github.com/apache/texera/pull/6756#discussion_r3627725696
##########
frontend/src/app/workspace/component/power-button/computing-unit-selection.component.spec.ts:
##########
@@ -1411,4 +1411,125 @@ describe("PowerButtonComponent", () => {
}
});
});
+
+ describe("resource-formatting and status getters", () => {
+ it("returns fallbacks when no unit is selected", () => {
+ component.selectedComputingUnit = null;
+ expect(component.getButtonText()).toBe("Connect");
+ expect(component.computeStatus()).toBe("processing");
Review Comment:
Trimmed this block to the 3 genuinely-new cases (null-unit → "NaN" for the
gpu/jvm/shm getters; fractional-cpu "m" / unitless-memory "B" units; non-zero
cpu% → percentage/status/value). The behaviors already covered elsewhere in
this file are no longer duplicated here.
##########
frontend/src/app/workspace/component/power-button/computing-unit-selection.component.spec.ts:
##########
@@ -1411,4 +1411,125 @@ describe("PowerButtonComponent", () => {
}
});
});
+
+ describe("resource-formatting and status getters", () => {
+ it("returns fallbacks when no unit is selected", () => {
+ component.selectedComputingUnit = null;
+ expect(component.getButtonText()).toBe("Connect");
+ expect(component.computeStatus()).toBe("processing");
+ expect(component.isComputingUnitRunning()).toBe(false);
+ expect(component.getGpuLimit()).toBe("NaN");
+ expect(component.getJvmMemorySize()).toBe("NaN");
+ expect(component.getSharedMemorySize()).toBe("NaN");
+ expect(component.getCpuValue()).toBe(0);
+ expect(component.getMemoryValue()).toBe(0);
+ });
+
+ it("reflects the selected unit's name and running state", () => {
+ component.selectedComputingUnit = makeComputingUnit({ name: "my-unit",
status: "Running" });
+ expect(component.getButtonText()).toBe("my-unit");
+ expect(component.isComputingUnitRunning()).toBe(true);
+ expect(component.computeStatus()).toBe("success");
+ });
+
+ it("maps the unit status to a computeStatus tag", () => {
+ component.selectedComputingUnit = makeComputingUnit({ status: "Pending"
});
+ expect(component.computeStatus()).toBe("warning");
+ component.selectedComputingUnit = makeComputingUnit({ status:
"Terminating" });
+ expect(component.computeStatus()).toBe("warning");
+ component.selectedComputingUnit = makeComputingUnit({ status: "Failed"
});
+ expect(component.computeStatus()).toBe("error");
+ expect(component.isComputingUnitRunning()).toBe(false);
+ });
+
+ it("passes through the raw gpu / jvm / shared-memory resource strings", ()
=> {
+ const unit = makeComputingUnit();
+ unit.computingUnit.resource.gpuLimit = "2";
+ unit.computingUnit.resource.jvmMemorySize = "512Mi";
+ unit.computingUnit.resource.shmSize = "128Mi";
+ component.selectedComputingUnit = unit;
+ expect(component.getGpuLimit()).toBe("2");
+ expect(component.getJvmMemorySize()).toBe("512Mi");
+ expect(component.getSharedMemorySize()).toBe("128Mi");
+ });
+
+ it("parses the numeric cpu / memory limits", () => {
+ const unit = makeComputingUnit();
+ unit.computingUnit.resource.cpuLimit = "4";
+ unit.computingUnit.resource.memoryLimit = "8Gi";
+ component.selectedComputingUnit = unit;
+ expect(component.getCpuLimit()).toBe(4);
+ expect(component.getMemoryLimit()).toBe(8);
+ });
+
+ it("derives display units, mapping the empty cpu unit to Cores and empty
memory unit to B", () => {
+ const unit = makeComputingUnit();
+ unit.computingUnit.resource.cpuLimit = "4"; // no unit -> "CPU" ->
"Cores"
+ unit.computingUnit.resource.memoryLimit = "8Gi";
+ component.selectedComputingUnit = unit;
+ expect(component.getCpuLimitUnit()).toBe("CPU");
+ expect(component.getCpuUnit()).toBe("Cores");
+ expect(component.getMemoryLimitUnit()).toBe("Gi");
+ expect(component.getMemoryUnit()).toBe("Gi");
+
+ unit.computingUnit.resource.cpuLimit = "500m";
+ unit.computingUnit.resource.memoryLimit = "1024"; // no unit -> "" -> "B"
+ expect(component.getCpuUnit()).toBe("m");
+ expect(component.getMemoryUnit()).toBe("B");
+ });
+
+ it("reports 0% usage and a success status when metrics are N/A", () => {
+ component.selectedComputingUnit = makeComputingUnit();
+ expect(component.getCpuPercentage()).toBe(0);
+ expect(component.getMemoryPercentage()).toBe(0);
+ expect(component.getCpuStatus()).toBe("success");
+ expect(component.getMemoryStatus()).toBe("success");
+ });
+
+ it("computes cpu usage as a percentage of the limit when metrics are
present", () => {
+ const unit = makeComputingUnit();
+ unit.computingUnit.resource.cpuLimit = "1"; // 1 core
+ unit.metrics.cpuUsage = "600m"; // 0.6 core
+ component.selectedComputingUnit = unit;
+ expect(component.getCpuPercentage()).toBe(60);
Review Comment:
Switched to `toBeCloseTo` for the percentage/value assertions.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]