aglinxinyuan opened a new issue, #6253:
URL: https://github.com/apache/texera/issues/6253
### Task Summary
Add `computing-unit.util.spec.ts` covering the pure resource-parsing /
conversion / validation helpers exported from `computing-unit.util.ts`. These
are plain functions — no Angular `TestBed` needed.
## Background
`frontend/src/app/common/util/computing-unit.util.ts` exports ~15 pure
helpers that parse Kubernetes CPU & memory resource strings (e.g. `"500Mi"`,
`"1000m"`), compute usage percentages, validate a unit name, and derive UI
status/colors. None of them are directly unit-tested today.
```ts
export function parseResourceUnit(resource: string): string { ... } //
"500Mi" -> "Mi"
export function parseResourceNumber(resource: string): number { ... } //
"2Gi" -> 2
export function cpuResourceConversion(from: string, toUnit: string): string
{ ... }
export function memoryPercentage(usage: string, limit: string): number { ...
}
export function validateName(trimmedName: string): string | null { ... }
```
## Behavior to pin
| Function | Contract |
| --- | --- |
| `parseResourceUnit` | `"500Mi"` → `"Mi"`; `"2"` → `""`; `""` and `"NaN"` →
`"NaN"`; garbage → `""` |
| `parseResourceNumber` | `"2Gi"` → `2`; `"1.5Gi"` → `1.5`; `""` / `"NaN"` →
`0` |
| `cpuResourceConversion` | `"1000m"` → `"1.0000"` cores (empty target
unit); respects the `n`/`u`/`m`/`""` scale ladder and per-unit precision |
| `cpuPercentage` / `memoryPercentage` | return `0` when either arg is
`"N/A"` or the limit is ≤ 0; otherwise clamp the result at `100` |
| `findNearestValidStep` | returns `1` on an empty step list; returns the
value when present; otherwise the closest step |
| `validateName` | `""` → empty-name error; a 129-char name → too-long
error; a valid name → `null` |
| `getComputingUnitBadgeColor` | `"Running"` → `"green"`, `"Pending"` →
`"gold"`, else `"red"` |
| `isComputingUnitShmTooLarge` | `true` only when the requested
shared-memory (normalized to Mi) exceeds the selected memory |
Follow `size-formatter.util.spec.ts` in the same folder as the style
template (plain `describe`/`it`/`expect`, run with `ng test`).
## Scope
- New spec: `frontend/src/app/common/util/computing-unit.util.spec.ts`.
- No production-code changes.
### Task Type
- [ ] Refactor / Cleanup
- [ ] DevOps / Deployment / CI
- [x] Testing / QA
- [ ] Documentation
- [ ] Performance
- [ ] Other
--
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]