mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-19 17:15:12 +00:00
Sync telemetry producer fixtures (#7763)
test(protocol): sync telemetry producer vectors
This commit is contained in:
@@ -48,6 +48,11 @@
|
||||
"status": "populated",
|
||||
"purpose": "Bounded performance.siteReplication@1 aggregate results, destination-confirmation semantics, and rejection of operational secrets and unresolved target controls."
|
||||
},
|
||||
{
|
||||
"name": "telemetry",
|
||||
"status": "populated",
|
||||
"purpose": "Consent-bound telemetry.record@1, telemetry.otlp@1, and telemetry.replay@1 producer results, resource limits, redaction boundaries, cancellation, and signed local exports."
|
||||
},
|
||||
{
|
||||
"name": "diagnostic-scheduler",
|
||||
"status": "populated",
|
||||
|
||||
@@ -6,6 +6,7 @@ cc6c3f3bf5e6a938f2e00b8ce42d8fa7bfb974f4eb2927101d4ede4ebdc10dd5 inventory
|
||||
0207458ec9b97b368e2f347da112511a3aabd27d752890cacda4fa2408e7f19e object-performance
|
||||
a464d4c695d76dd985c0f2abf68c2135c080221098ad2427022f85243a7bf6ae network-performance
|
||||
0dc06ec2caa8764a51d44e4176959462aa5d0ed9fe5a38453a681ed9d83b8ad6 site-replication-performance
|
||||
fad21eec58d4d4d547893af9050cdc5eaf9d4f84b15fb423214b16be50e7ff7a telemetry
|
||||
655b83debfcbb6e2d8ad1974aeb0ce2d42f42d651f97b465dd791e3697919240 diagnostic-scheduler
|
||||
a2557ab1f7f70fb86a8affc8451596c272478fd2d5500c367b8f9e8385d72578 offline-enrollment
|
||||
8b6fd07759d1264489a8bb54d2dda4836ad0f59b5ee5d52966365918b3de4c9e bundle
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
1fd1bf2b23a9db2e83ec53f4d9b90449bc7d58f9a586a0bff2dbbe057426b4b3 accept-vectors.json
|
||||
18f33760811bb599b0914cb36b9a636f8f41a2558bb7e9aaec34eaaff38e0678 reject-vectors.json
|
||||
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"protocolVersion": "v1",
|
||||
"fixtureSet": "telemetry",
|
||||
"schemaVersion": 1,
|
||||
"classification": "L3",
|
||||
"fixture": "accept-vectors",
|
||||
"producer": {
|
||||
"repository": "rustfs/rustfs",
|
||||
"headCommit": "85b8dc44d7d06d17ad5f5324b0a2766889d873e5",
|
||||
"mergeCommit": "f2cdca42eddd44681cd220d7b9dfdbbe91c719a1",
|
||||
"pullRequest": 7720,
|
||||
"evidenceUrl": "https://github.com/rustfs/rustfs/pull/7720",
|
||||
"verifiedRuns": {
|
||||
"record": "UNSUPPORTED_SOURCE_UNAVAILABLE",
|
||||
"otlp": "REAL_BINARY_LOOPBACK_VERIFIED",
|
||||
"replay": "REAL_BINARY_ARCHIVE_VERIFIED"
|
||||
},
|
||||
"sourceFiles": [
|
||||
"rustfs/src/connect/diagnostics/trace_record.rs",
|
||||
"rustfs/src/connect/diagnostics/trace_otlp.rs",
|
||||
"rustfs/src/connect/diagnostics/trace_replay.rs",
|
||||
"rustfs/src/connect/diagnostics/trace_analysis.rs"
|
||||
],
|
||||
"testCommand": "cargo test -p rustfs --test connect_trace_analysis --test connect_trace_otlp --test connect_trace_record --test connect_trace_replay"
|
||||
},
|
||||
"limits": {
|
||||
"maxDurationMillis": 30000,
|
||||
"maxSpans": 1024,
|
||||
"maxResultBytes": 262144,
|
||||
"maxOtlpBodyBytes": 1048576,
|
||||
"maxArchiveBytes": 524288,
|
||||
"maxDecompressedBytes": 278528,
|
||||
"maxConcurrency": 1
|
||||
},
|
||||
"signedExport": {
|
||||
"members": ["envelope.json", "envelope.sig", "result.json"],
|
||||
"algorithm": "ES256",
|
||||
"signatureDomain": "rustfs-diagnostic-envelope-v1\u0000",
|
||||
"fileMode": "0600",
|
||||
"noClobber": true,
|
||||
"classification": "L3",
|
||||
"requiresConfirmedConsent": true
|
||||
},
|
||||
"vectors": [
|
||||
{
|
||||
"id": "telemetry.record.source-unavailable",
|
||||
"evidenceType": "SOURCE_VERIFIED_CONTRACT_VECTOR",
|
||||
"accepted": true,
|
||||
"value": {
|
||||
"schemaVersion": 1,
|
||||
"runUid": "019e3ae0-0000-7000-8000-000000000001",
|
||||
"toolId": "telemetry.record",
|
||||
"capability": "telemetry.record@1",
|
||||
"outcome": "UNSUPPORTED",
|
||||
"reasonCode": "UNSUPPORTED_TOOL",
|
||||
"durationMillis": 1,
|
||||
"provenance": {
|
||||
"repository": "rustfs/rustfs",
|
||||
"sourceCommit": "85b8dc44d7d06d17ad5f5324b0a2766889d873e5",
|
||||
"executableSha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
||||
"rustfsVersion": "1.0.0-rc.6",
|
||||
"osFamily": "LINUX",
|
||||
"architecture": "x86_64",
|
||||
"buildFeatures": []
|
||||
},
|
||||
"coverage": {"requestedUnits": 1, "completedUnits": 0, "unit": "WINDOW"},
|
||||
"data": null
|
||||
},
|
||||
"expected": {
|
||||
"artifactCreated": false,
|
||||
"reason": "The current TraceBus has no approved typed S3 or RPC source."
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "telemetry.otlp.succeeded",
|
||||
"evidenceType": "SYNTHETIC_CONTRACT_VECTOR_WITH_REAL_BINARY_RUN",
|
||||
"accepted": true,
|
||||
"value": {
|
||||
"schemaVersion": 1,
|
||||
"runUid": "019e3ae0-0000-7000-8000-000000000001",
|
||||
"toolId": "telemetry.otlp",
|
||||
"capability": "telemetry.otlp@1",
|
||||
"outcome": "SUCCEEDED",
|
||||
"reasonCode": "COMPLETE",
|
||||
"durationMillis": 10,
|
||||
"provenance": {
|
||||
"repository": "rustfs/rustfs",
|
||||
"sourceCommit": "85b8dc44d7d06d17ad5f5324b0a2766889d873e5",
|
||||
"executableSha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
||||
"rustfsVersion": "1.0.0-rc.6",
|
||||
"osFamily": "LINUX",
|
||||
"architecture": "x86_64",
|
||||
"buildFeatures": []
|
||||
},
|
||||
"coverage": {"requestedUnits": 1, "completedUnits": 1, "unit": "WINDOW"},
|
||||
"data": {"acceptedSpanCount": 2, "rejectedSpanCount": 0, "exportedBytes": 128}
|
||||
},
|
||||
"expected": {
|
||||
"artifactCreated": true,
|
||||
"credentialsRemainLocal": true,
|
||||
"receiptContainsCredentials": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "telemetry.replay.succeeded",
|
||||
"evidenceType": "SYNTHETIC_CONTRACT_VECTOR_WITH_REAL_BINARY_RUN",
|
||||
"accepted": true,
|
||||
"value": {
|
||||
"schemaVersion": 1,
|
||||
"runUid": "019e3ae0-0000-7000-8000-000000000001",
|
||||
"toolId": "telemetry.replay",
|
||||
"capability": "telemetry.replay@1",
|
||||
"outcome": "SUCCEEDED",
|
||||
"reasonCode": "COMPLETE",
|
||||
"durationMillis": 1,
|
||||
"provenance": {
|
||||
"repository": "rustfs/rustfs",
|
||||
"sourceCommit": "85b8dc44d7d06d17ad5f5324b0a2766889d873e5",
|
||||
"executableSha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
||||
"rustfsVersion": "1.0.0-rc.6",
|
||||
"osFamily": "LINUX",
|
||||
"architecture": "x86_64",
|
||||
"buildFeatures": []
|
||||
},
|
||||
"coverage": {"requestedUnits": 1, "completedUnits": 1, "unit": "WINDOW"},
|
||||
"data": {
|
||||
"inputArtifactSha256": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
||||
"spans": [{"operation": "GET_OBJECT", "durationMicros": 500, "status": "OK"}]
|
||||
}
|
||||
},
|
||||
"expected": {
|
||||
"artifactCreated": true,
|
||||
"inputWasLocallyReviewed": true,
|
||||
"analysisUsesObservedValuesOnly": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"protocolVersion": "v1",
|
||||
"fixtureSet": "telemetry",
|
||||
"schemaVersion": 1,
|
||||
"classification": "L3",
|
||||
"fixture": "reject-vectors",
|
||||
"vectors": [
|
||||
{"id": "telemetry.consent.missing", "stage": "REQUEST", "input": {"acknowledgeL3": false}, "expected": {"accepted": false, "reason": "CONSENT_REQUIRED", "artifactCreated": false}},
|
||||
{"id": "telemetry.consent.expired", "stage": "REQUEST", "input": {"consentExpiresAt": "2026-09-11T23:59:59Z", "producedAt": "2026-09-12T00:00:00Z"}, "expected": {"accepted": false, "reason": "CONSENT_EXPIRED", "artifactCreated": false}},
|
||||
{"id": "telemetry.record.duration-zero", "stage": "REQUEST", "input": {"durationMillis": 0, "maxSpans": 1}, "expected": {"accepted": false, "reason": "INVALID_DURATION", "artifactCreated": false}},
|
||||
{"id": "telemetry.record.duration-over-limit", "stage": "REQUEST", "input": {"durationMillis": 30001, "maxSpans": 1}, "expected": {"accepted": false, "reason": "INVALID_DURATION", "artifactCreated": false}},
|
||||
{"id": "telemetry.record.spans-zero", "stage": "REQUEST", "input": {"durationMillis": 1, "maxSpans": 0}, "expected": {"accepted": false, "reason": "INVALID_SPAN_LIMIT", "artifactCreated": false}},
|
||||
{"id": "telemetry.record.spans-over-limit", "stage": "REQUEST", "input": {"durationMillis": 1, "maxSpans": 1025}, "expected": {"accepted": false, "reason": "INVALID_SPAN_LIMIT", "artifactCreated": false}},
|
||||
{"id": "telemetry.record.stopped", "stage": "CAPTURE", "input": {"cancelled": true}, "expected": {"accepted": false, "reason": "CANCELLED", "artifactCreated": false}},
|
||||
{"id": "telemetry.record.source-unavailable-with-data", "stage": "RESULT", "input": {"outcome": "UNSUPPORTED", "reasonCode": "UNSUPPORTED_TOOL", "data": {"spans": [], "droppedSpanCount": 0}}, "expected": {"accepted": false, "reason": "INVALID_OUTCOME_DATA", "artifactCreated": false}},
|
||||
{"id": "telemetry.record.header-field", "stage": "RESULT", "input": {"data": {"spans": [{"operation": "GET_OBJECT", "durationMicros": 1, "status": "OK", "authorization": "SYNTHETIC_FORBIDDEN_SECRET"}], "droppedSpanCount": 0}}, "expected": {"accepted": false, "reason": "UNKNOWN_FIELD", "artifactCreated": false}},
|
||||
{"id": "telemetry.record.customer-name-field", "stage": "RESULT", "input": {"data": {"spans": [{"operation": "GET_OBJECT", "durationMicros": 1, "status": "OK", "objectName": "SYNTHETIC_FORBIDDEN_OBJECT"}], "droppedSpanCount": 0}}, "expected": {"accepted": false, "reason": "UNKNOWN_FIELD", "artifactCreated": false}},
|
||||
{"id": "telemetry.otlp.remote-plaintext", "stage": "REQUEST", "input": {"endpoint": "http://collector.example/v1/traces"}, "expected": {"accepted": false, "reason": "INVALID_ENDPOINT", "artifactCreated": false}},
|
||||
{"id": "telemetry.otlp.body-over-limit", "stage": "REQUEST", "input": {"bodySizeBytes": 1048577}, "expected": {"accepted": false, "reason": "INVALID_BATCH", "artifactCreated": false}},
|
||||
{"id": "telemetry.otlp.credential-in-receipt", "stage": "RESULT", "input": {"data": {"acceptedSpanCount": 1, "rejectedSpanCount": 0, "exportedBytes": 128, "authorization": "SYNTHETIC_FORBIDDEN_SECRET"}}, "expected": {"accepted": false, "reason": "UNKNOWN_FIELD", "artifactCreated": false}},
|
||||
{"id": "telemetry.replay.unreviewed", "stage": "REQUEST", "input": {"locallyReviewed": false}, "expected": {"accepted": false, "reason": "INVALID_INPUT", "artifactCreated": false}},
|
||||
{"id": "telemetry.replay.input-over-limit", "stage": "REQUEST", "input": {"inputSizeBytes": 262145}, "expected": {"accepted": false, "reason": "INVALID_INPUT", "artifactCreated": false}},
|
||||
{"id": "telemetry.export.unsigned", "stage": "EXPORT", "input": {"members": ["envelope.json", "result.json"]}, "expected": {"accepted": false, "reason": "SIGNATURE_REQUIRED", "artifactCreated": false}},
|
||||
{"id": "telemetry.export.tampered", "stage": "EXPORT", "input": {"payloadDigestMatches": false}, "expected": {"accepted": false, "reason": "DIGEST_MISMATCH", "artifactCreated": false}},
|
||||
{"id": "telemetry.export.archive-over-limit", "stage": "EXPORT", "input": {"archiveSizeBytes": 524289}, "expected": {"accepted": false, "reason": "LIMIT_EXCEEDED", "artifactCreated": false}},
|
||||
{"id": "telemetry.export.existing-output", "stage": "EXPORT", "input": {"outputExists": true}, "expected": {"accepted": false, "reason": "ALREADY_EXISTS", "artifactCreated": false}}
|
||||
]
|
||||
}
|
||||
@@ -36,13 +36,17 @@ fn sha256_hex(bytes: &[u8]) -> String {
|
||||
|
||||
/// The registry is closed; adding another set is a protocol change, not a
|
||||
/// fixture change. Mirrors `EXPECTED_SETS` in Connect's checker.
|
||||
const EXPECTED_SETS: [&str; 9] = [
|
||||
const EXPECTED_SETS: [&str; 13] = [
|
||||
"auth",
|
||||
"version",
|
||||
"registration",
|
||||
"heartbeat",
|
||||
"inventory",
|
||||
"object-performance",
|
||||
"network-performance",
|
||||
"site-replication-performance",
|
||||
"telemetry",
|
||||
"diagnostic-scheduler",
|
||||
"offline-enrollment",
|
||||
"bundle",
|
||||
"redaction",
|
||||
|
||||
Reference in New Issue
Block a user