feat: improve g14 observability closeout cli
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { activeV02PipelineRuns, gitMirrorFlushJobManifest, gitMirrorStatusSummary, gitMirrorSyncJobManifest, gitMirrorV02SyncRequirement, hwlabG14Help, hwlabG14MonitorStateFileName, parseGitMirrorStatusRefs, parsePipelineTaskRunMetrics, parseV02TriggerSnapshot, rolloutRecordBody, semanticChangelogBullets, summarizeV02CdStatus, v02CloseoutVerdict, v02CommitAlignment, v02ControlPlaneRefreshScriptHash, v02ControlPlaneRenderScript, v02ExistingPipelineRunReuseDecision, v02FalseGreenGuard, v02GitMirrorPreSyncWaitMs, v02LatestOnlyTargetValidation, v02PipelineServiceIds, v02PrAutomationCommentBody, v02ReusableGitMirrorPreSyncMarker, v02ReusableRefreshMarker, v02TaskRunPerformanceSummary } from "./src/hwlab-g14";
|
||||
import { activeV02PipelineRuns, g14ObservabilityQueryAssertion, gitMirrorFlushJobManifest, gitMirrorStatusSummary, gitMirrorSyncJobManifest, gitMirrorV02SyncRequirement, hwlabG14Help, hwlabG14MonitorStateFileName, parseGitMirrorStatusRefs, parsePipelineTaskRunMetrics, parseV02TriggerSnapshot, rolloutRecordBody, semanticChangelogBullets, summarizeV02CdStatus, v02CloseoutVerdict, v02CommitAlignment, v02ControlPlaneRefreshScriptHash, v02ControlPlaneRenderScript, v02ExistingPipelineRunReuseDecision, v02FalseGreenGuard, v02GitMirrorPreSyncWaitMs, v02LatestOnlyTargetValidation, v02PipelineServiceIds, v02PrAutomationCommentBody, v02ReusableGitMirrorPreSyncMarker, v02ReusableRefreshMarker, v02TaskRunPerformanceSummary } from "./src/hwlab-g14";
|
||||
import { runCommand } from "./src/command";
|
||||
|
||||
function assertCondition(condition: unknown, message: string, detail: unknown = {}): void {
|
||||
if (!condition) throw new Error(`${message}: ${JSON.stringify(detail)}`);
|
||||
@@ -60,6 +61,59 @@ assertCondition(
|
||||
"v0.2 help must expose the controlled OpenFGA upstream image mirroring path",
|
||||
hwlabHelpUsage,
|
||||
);
|
||||
assertCondition(
|
||||
hwlabHelpUsage.some((line) => line.includes("observability query --promql 'up{namespace=\"hwlab-v02\"}' --expect-count 6 --expect-value 1"))
|
||||
&& hwlabHelpUsage.some((line) => line.includes("observability targets --lane v02"))
|
||||
&& hwlabHelpUsage.some((line) => line.includes("observability boundary --lane v02"))
|
||||
&& hwlabHelpUsage.some((line) => line.includes("observability closeout --lane v02")),
|
||||
"observability help must expose assertion, target, boundary, and closeout entrypoints",
|
||||
hwlabHelpUsage,
|
||||
);
|
||||
|
||||
const observabilityAssertionPass = g14ObservabilityQueryAssertion({
|
||||
status: "success",
|
||||
data: {
|
||||
resultType: "vector",
|
||||
result: [
|
||||
{ metric: { job: "hwlab-cloud-api", namespace: "hwlab-v02", pod: "api-pod", hwlab_pikastech_local_service_id: "hwlab-cloud-api" }, value: [1, "1"] },
|
||||
{ metric: { job: "hwlab-cloud-web", namespace: "hwlab-v02", pod: "web-pod", hwlab_pikastech_local_service_id: "hwlab-cloud-web" }, value: [1, "1.0"] },
|
||||
],
|
||||
},
|
||||
}, 2, "1");
|
||||
const observabilityAssertionFail = g14ObservabilityQueryAssertion({
|
||||
status: "success",
|
||||
data: {
|
||||
resultType: "vector",
|
||||
result: [
|
||||
{ metric: { job: "hwlab-cloud-api", namespace: "hwlab-v02", pod: "api-pod", hwlab_pikastech_local_service_id: "hwlab-cloud-api" }, value: [1, "0"] },
|
||||
],
|
||||
},
|
||||
}, 2, "1");
|
||||
assertCondition(
|
||||
record(observabilityAssertionPass).ok === true
|
||||
&& record(observabilityAssertionPass).actualCount === 2
|
||||
&& record(observabilityAssertionPass).valueOk === true,
|
||||
"observability query assertion must pass matching vector count and numeric string values",
|
||||
observabilityAssertionPass,
|
||||
);
|
||||
assertCondition(
|
||||
record(observabilityAssertionFail).ok === false
|
||||
&& record(observabilityAssertionFail).actualCount === 1
|
||||
&& Array.isArray(record(observabilityAssertionFail).badValues)
|
||||
&& Array.isArray(record(observabilityAssertionFail).missingSeries)
|
||||
&& record(observabilityAssertionFail).badValueCount === 1,
|
||||
"observability query assertion must report bad values and missing series instead of requiring manual vector inspection",
|
||||
observabilityAssertionFail,
|
||||
);
|
||||
const unsupportedObservabilityOption = runCommand(["bun", "scripts/cli.ts", "hwlab", "g14", "observability", "query", "--not-a-real-option"], process.cwd(), { timeoutMs: 30_000 });
|
||||
const unsupportedObservabilityJson = JSON.parse(unsupportedObservabilityOption.stdout) as unknown;
|
||||
assertCondition(
|
||||
unsupportedObservabilityOption.exitCode !== 0
|
||||
&& record(unsupportedObservabilityJson).ok === false
|
||||
&& String(record(record(unsupportedObservabilityJson).error).message ?? "").includes("unsupported observability option"),
|
||||
"observability CLI must fail visibly on unsupported options instead of silently ignoring friction-prone flags",
|
||||
unsupportedObservabilityJson,
|
||||
);
|
||||
|
||||
const v02CommentBody = v02PrAutomationCommentBody({
|
||||
pr: {
|
||||
@@ -683,6 +737,10 @@ console.log(JSON.stringify({
|
||||
"once jobs do not overwrite long-running monitor state",
|
||||
"dry-run jobs do not overwrite live monitor state",
|
||||
"once dry-run jobs have a distinct diagnostic state file",
|
||||
"v0.2 PR monitor state pointers do not overwrite legacy G14 monitor pointers",
|
||||
"observability help exposes assertion, target, boundary, and closeout entrypoints",
|
||||
"observability query assertions report count and terminal value pass/fail",
|
||||
"observability CLI rejects unsupported options with visible JSON errors",
|
||||
"git mirror sync is a manual devops-infra Job, not a CronJob",
|
||||
"git mirror flush is a manual devops-infra Job, not a CronJob",
|
||||
"trigger-current can decide whether v0.2 git mirror pre-sync is required",
|
||||
|
||||
+905
-19
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user