Issue #49: add cross-language smoke matrix

This commit is contained in:
Joseph Doherty
2026-04-26 21:21:49 -04:00
parent 9159f6f093
commit 79f73e04fd
4 changed files with 662 additions and 0 deletions
@@ -0,0 +1,280 @@
{
"schemaVersion": 1,
"fixtureSet": "mxaccess-gateway-cross-language-smoke-matrix",
"description": "Documented command matrix for opt-in cross-language client smoke runs against a live gateway.",
"integrationGate": {
"variable": "MXGATEWAY_INTEGRATION",
"requiredValue": "1"
},
"defaultInputs": {
"endpointVariable": "MXGATEWAY_ENDPOINT",
"endpointFallback": "localhost:5000",
"apiKeyVariable": "MXGATEWAY_API_KEY",
"itemVariable": "MXGATEWAY_TEST_ITEM",
"itemFallback": "TestChildObject.TestInt",
"eventLimit": 1,
"optionalWriteValueVariable": "MXGATEWAY_TEST_WRITE_VALUE",
"optionalWriteType": "int32"
},
"requiredOperations": [
"open-session",
"register",
"add-item",
"advise",
"stream-events",
"close-session"
],
"optionalOperations": [
"write"
],
"jsonComparison": {
"requiredOutputMode": "json",
"commonFields": [
"language",
"operation",
"sessionId",
"serverHandle",
"itemHandle",
"events",
"closeStatus"
],
"comparisonFields": [
"sessionId",
"serverHandle",
"itemHandle",
"eventCount",
"eventFamily",
"workerSequence",
"protocolStatus",
"hresult",
"statuses"
]
},
"failureOutput": {
"requiredContextFields": [
"language",
"endpoint",
"authContext"
],
"authContext": {
"sourceVariable": "MXGATEWAY_API_KEY",
"redactedValue": "<redacted>",
"forbiddenLiterals": [
"mxgw_visible_secret",
"Bearer mxgw_visible_secret"
]
}
},
"clients": [
{
"language": "dotnet",
"displayName": ".NET",
"workingDirectory": ".",
"integrationSkip": {
"variable": "MXGATEWAY_INTEGRATION",
"requiredValue": "1"
},
"failureContextFields": [
"language",
"endpoint",
"authContext"
],
"commands": [
{
"operation": "open-session",
"command": "dotnet run --project clients/dotnet/MxGateway.Client.Cli -- open-session --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --client-name mxgw-dotnet-smoke --json"
},
{
"operation": "register",
"command": "dotnet run --project clients/dotnet/MxGateway.Client.Cli -- register --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --session-id <session-id> --client-name mxgw-dotnet-smoke --json"
},
{
"operation": "add-item",
"command": "dotnet run --project clients/dotnet/MxGateway.Client.Cli -- add-item --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --session-id <session-id> --server-handle <server-handle> --item TestChildObject.TestInt --json"
},
{
"operation": "advise",
"command": "dotnet run --project clients/dotnet/MxGateway.Client.Cli -- advise --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --session-id <session-id> --server-handle <server-handle> --item-handle <item-handle> --json"
},
{
"operation": "stream-events",
"command": "dotnet run --project clients/dotnet/MxGateway.Client.Cli -- stream-events --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --session-id <session-id> --max-events 1 --json"
},
{
"operation": "close-session",
"command": "dotnet run --project clients/dotnet/MxGateway.Client.Cli -- close-session --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --session-id <session-id> --json"
}
],
"optionalWriteCommand": "dotnet run --project clients/dotnet/MxGateway.Client.Cli -- write --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --session-id <session-id> --server-handle <server-handle> --item-handle <item-handle> --type int32 --value <write-value> --json",
"bundledSmokeCommand": "dotnet run --project clients/dotnet/MxGateway.Client.Cli -- smoke --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --item TestChildObject.TestInt --json"
},
{
"language": "go",
"displayName": "Go",
"workingDirectory": "clients/go",
"integrationSkip": {
"variable": "MXGATEWAY_INTEGRATION",
"requiredValue": "1"
},
"failureContextFields": [
"language",
"endpoint",
"authContext"
],
"commands": [
{
"operation": "open-session",
"command": "go run ./cmd/mxgw-go open-session -endpoint localhost:5000 -api-key-env MXGATEWAY_API_KEY -client-session-name mxgw-go-smoke -plaintext -json"
},
{
"operation": "register",
"command": "go run ./cmd/mxgw-go register -endpoint localhost:5000 -api-key-env MXGATEWAY_API_KEY -session-id <session-id> -client-name mxgw-go-smoke -plaintext -json"
},
{
"operation": "add-item",
"command": "go run ./cmd/mxgw-go add-item -endpoint localhost:5000 -api-key-env MXGATEWAY_API_KEY -session-id <session-id> -server-handle <server-handle> -item TestChildObject.TestInt -plaintext -json"
},
{
"operation": "advise",
"command": "go run ./cmd/mxgw-go advise -endpoint localhost:5000 -api-key-env MXGATEWAY_API_KEY -session-id <session-id> -server-handle <server-handle> -item-handle <item-handle> -plaintext -json"
},
{
"operation": "stream-events",
"command": "go run ./cmd/mxgw-go stream-events -endpoint localhost:5000 -api-key-env MXGATEWAY_API_KEY -session-id <session-id> -limit 1 -plaintext -json"
},
{
"operation": "close-session",
"command": "go run ./cmd/mxgw-go close-session -endpoint localhost:5000 -api-key-env MXGATEWAY_API_KEY -session-id <session-id> -plaintext -json"
}
],
"optionalWriteCommand": "go run ./cmd/mxgw-go write -endpoint localhost:5000 -api-key-env MXGATEWAY_API_KEY -session-id <session-id> -server-handle <server-handle> -item-handle <item-handle> -type int32 -value <write-value> -plaintext -json",
"bundledSmokeCommand": "go run ./cmd/mxgw-go smoke -endpoint localhost:5000 -api-key-env MXGATEWAY_API_KEY -item TestChildObject.TestInt -plaintext -json"
},
{
"language": "rust",
"displayName": "Rust",
"workingDirectory": "clients/rust",
"integrationSkip": {
"variable": "MXGATEWAY_INTEGRATION",
"requiredValue": "1"
},
"failureContextFields": [
"language",
"endpoint",
"authContext"
],
"commands": [
{
"operation": "open-session",
"command": "cargo run -p mxgw-cli -- open-session --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --client-name mxgw-rust-smoke --json"
},
{
"operation": "register",
"command": "cargo run -p mxgw-cli -- register --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --session-id <session-id> --client-name mxgw-rust-smoke --json"
},
{
"operation": "add-item",
"command": "cargo run -p mxgw-cli -- add-item --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --session-id <session-id> --server-handle <server-handle> --item TestChildObject.TestInt --json"
},
{
"operation": "advise",
"command": "cargo run -p mxgw-cli -- advise --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --session-id <session-id> --server-handle <server-handle> --item-handle <item-handle> --json"
},
{
"operation": "stream-events",
"command": "cargo run -p mxgw-cli -- stream-events --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --session-id <session-id> --max-events 1 --json"
},
{
"operation": "close-session",
"command": "cargo run -p mxgw-cli -- close-session --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --session-id <session-id> --json"
}
],
"optionalWriteCommand": "cargo run -p mxgw-cli -- write --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --session-id <session-id> --server-handle <server-handle> --item-handle <item-handle> --value-type int32 --value <write-value> --json",
"bundledSmokeCommand": "cargo run -p mxgw-cli -- smoke --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --item TestChildObject.TestInt --json"
},
{
"language": "python",
"displayName": "Python",
"workingDirectory": "clients/python",
"integrationSkip": {
"variable": "MXGATEWAY_INTEGRATION",
"requiredValue": "1"
},
"failureContextFields": [
"language",
"endpoint",
"authContext"
],
"commands": [
{
"operation": "open-session",
"command": "mxgw-py open-session --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --client-name mxgw-py-smoke --json"
},
{
"operation": "register",
"command": "mxgw-py register --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id <session-id> --client-name mxgw-py-smoke --json"
},
{
"operation": "add-item",
"command": "mxgw-py add-item --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id <session-id> --server-handle <server-handle> --item TestChildObject.TestInt --json"
},
{
"operation": "advise",
"command": "mxgw-py advise --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id <session-id> --server-handle <server-handle> --item-handle <item-handle> --json"
},
{
"operation": "stream-events",
"command": "mxgw-py stream-events --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id <session-id> --max-events 1 --json"
},
{
"operation": "close-session",
"command": "mxgw-py close-session --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id <session-id> --json"
}
],
"optionalWriteCommand": "mxgw-py write --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id <session-id> --server-handle <server-handle> --item-handle <item-handle> --type int32 --value <write-value> --json",
"bundledSmokeCommand": "mxgw-py smoke --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --item TestChildObject.TestInt --max-events 1 --json"
},
{
"language": "java",
"displayName": "Java",
"workingDirectory": "clients/java",
"integrationSkip": {
"variable": "MXGATEWAY_INTEGRATION",
"requiredValue": "1"
},
"failureContextFields": [
"language",
"endpoint",
"authContext"
],
"commands": [
{
"operation": "open-session",
"command": "gradle :mxgateway-cli:run --args=\"open-session --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --client-session-name mxgw-java-smoke --json\""
},
{
"operation": "register",
"command": "gradle :mxgateway-cli:run --args=\"register --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id <session-id> --client-name mxgw-java-smoke --json\""
},
{
"operation": "add-item",
"command": "gradle :mxgateway-cli:run --args=\"add-item --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id <session-id> --server-handle <server-handle> --item TestChildObject.TestInt --json\""
},
{
"operation": "advise",
"command": "gradle :mxgateway-cli:run --args=\"advise --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id <session-id> --server-handle <server-handle> --item-handle <item-handle> --json\""
},
{
"operation": "stream-events",
"command": "gradle :mxgateway-cli:run --args=\"stream-events --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id <session-id> --limit 1 --json\""
},
{
"operation": "close-session",
"command": "gradle :mxgateway-cli:run --args=\"close-session --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id <session-id> --json\""
}
],
"optionalWriteCommand": "gradle :mxgateway-cli:run --args=\"write --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id <session-id> --server-handle <server-handle> --item-handle <item-handle> --type int32 --value <write-value> --json\"",
"bundledSmokeCommand": "gradle :mxgateway-cli:run --args=\"smoke --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --item TestChildObject.TestInt --json\""
}
]
}