Case
sendspin-server-cpp -> sendspin-dotnet
Start the server first, then the client. The client discovers or looks up the server and initiates the WebSocket connection, the server streams album artwork, disconnects, and the matrix compares the received bytes against the server's encoded artwork.
Server
sendspin-server-cpp
Client
sendspin-dotnet
Status
Passed
Artwork bytes match
Server activation
Initial server/activate
What the sendspin-server-cpp server's own adapter recorded for its first server/activate on this connection, reported as sent. The case fails when none was sent, when its activities are not unique values from playback and pairing, or when it omits active_roles. Nothing else in it is checked against the specification: which activities and roles the matched PSK allows is not judged. A recording that cannot be read as that message is shown whole and not judged either.
Server group state
Every group/update after activation
What the sendspin-server-cpp server's own adapter recorded for each group/update it sent after its first server/activate on this connection, in order and reported as sent. The case fails when none followed, or when in any of them playback_state is not playing or stopped, or group_id or group_name is missing or not a string. How soon the first followed is not judged, because the specification says promptly and gives no bound, so one sent at any point in the case counts. Whether a change to a field produced a further message is not judged either. A recording of anything other than that message is shown whole and fails the case as a harness gap.
1 of 1
Inspection
Summaries, logs, and builds
Matrix result
RAW{
"case_dir": "artifacts/results/data/macos__client-initiated-artwork__sendspin-server-cpp__to__sendspin-dotnet",
"client_exit_code": 0,
"client_impl": "sendspin-dotnet",
"reason": "Artwork bytes match",
"scenario_id": "client-initiated-artwork",
"scenario_revision": 1,
"server_exit_code": 0,
"server_impl": "sendspin-server-cpp",
"status": "passed",
"unsupported": false
}Server summary (JSON)
RAW{
"activation": {
"payload": {
"active_roles": [
"artwork@v1"
],
"activities": []
},
"type": "server/activate"
},
"artwork": {
"byte_count": 2587,
"channel": 0,
"encoded_sha256": "a26c41e162cc6642a8e8476b98bbd6536ba80dfa3caa7ffb307023e609736421",
"format": "jpeg",
"height": 256,
"source": "album",
"width": 256
},
"availability_trace": [
{
"available": true,
"type": "client/state"
},
{
"phase": "sending",
"roles": [
"artwork"
],
"type": "stream/start"
},
{
"phase": "sent",
"roles": [
"artwork"
],
"type": "stream/start"
}
],
"client": {
"active_roles": [
"artwork@v1"
],
"client_id": "4ylxGBGEH7fsXeAQjcRQrre0kkdPhHY5EBdvSYRlFis",
"name": "sendspin-dotnet-client",
"supported_roles": [
"artwork@v1"
]
},
"discovery_method": "registry",
"group_updates": [
{
"payload": {
"group_id": "1",
"group_name": "sendspin-server-cpp server",
"playback_state": "stopped"
},
"type": "group/update"
}
],
"implementation": "sendspin-server-cpp",
"initiator_role": "client",
"peer_hello": {
"payload": {
"device_info": {
"manufacturer": "Sendspin Conformance",
"product_name": "Conformance Dotnet Client",
"software_version": "0.1.0"
},
"name": "sendspin-dotnet-client",
"supported_pair_methods": {
"pairing_psk": {}
},
"supported_roles": [
"artwork@v1"
],
"unpaired_access": {
"enabled": true
}
},
"type": "client/hello"
},
"preferred_codec": "none",
"role": "server",
"scenario_id": "client-initiated-artwork",
"server_id": "kKaiB48_beMwmbfA0bRdWnjJd0EbAhbxKANRHZRxvB0",
"server_name": "sendspin-server-cpp server",
"status": "ok",
"time_exchange": [
{
"payload": {
"client_transmitted": 1792567752476173
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567752476173,
"server_received": 1235492967,
"server_transmitted": 1235493068
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567752503693
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567752503693,
"server_received": 1235517995,
"server_transmitted": 1235518068
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567752504174
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567752504174,
"server_received": 1235518383,
"server_transmitted": 1235518430
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567752504382
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567752504382,
"server_received": 1235518562,
"server_transmitted": 1235518603
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567752504551
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567752504551,
"server_received": 1235518743,
"server_transmitted": 1235518785
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567752504710
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567752504710,
"server_received": 1235518900,
"server_transmitted": 1235518937
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567752504866
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567752504866,
"server_received": 1235519042,
"server_transmitted": 1235519078
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567752505003
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567752505003,
"server_received": 1235519188,
"server_transmitted": 1235519224
},
"type": "server/time"
}
]
}Server log
RAWsendspin-server-cpp: "sendspin-dotnet-client" at 127.0.0.1:49542 connected
listener: client sendspin-dotnet-client disconnected: server stopped
{
"status": "ok",
"implementation": "sendspin-server-cpp",
"role": "server",
"server_name": "sendspin-server-cpp server",
"scenario_id": "client-initiated-artwork",
"initiator_role": "client",
"preferred_codec": "none",
"server_id": "kKaiB48_beMwmbfA0bRdWnjJd0EbAhbxKANRHZRxvB0",
"discovery_method": "registry",
"peer_hello": {
"type": "client/hello",
"payload": {
"name": "sendspin-dotnet-client",
"supported_pair_methods": {
"pairing_psk": {}
},
"unpaired_access": {
"enabled": true
},
"supported_roles": [
"artwork@v1"
],
"device_info": {
"product_name": "Conformance Dotnet Client",
"manufacturer": "Sendspin Conformance",
"software_version": "0.1.0"
}
}
},
"activation": {
"type": "server/activate",
"payload": {
"activities": [],
"active_roles": [
"artwork@v1"
]
}
},
"group_updates": [
{
"type": "group/update",
"payload": {
"playback_state": "stopped",
"group_id": "1",
"group_name": "sendspin-server-cpp server"
}
}
],
"availability_trace": [
{
"type": "client/state",
"available": true
},
{
"type": "stream/start",
"phase": "sending",
"roles": [
"artwork"
]
},
{
"type": "stream/start",
"phase": "sent",
"roles": [
"artwork"
]
}
],
"time_exchange": [
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567752476173
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567752476173,
"server_received": 1235492967,
"server_transmitted": 1235493068
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567752503693
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567752503693,
"server_received": 1235517995,
"server_transmitted": 1235518068
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567752504174
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567752504174,
"server_received": 1235518383,
"server_transmitted": 1235518430
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567752504382
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567752504382,
"server_received": 1235518562,
"server_transmitted": 1235518603
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567752504551
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567752504551,
"server_received": 1235518743,
"server_transmitted": 1235518785
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567752504710
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567752504710,
"server_received": 1235518900,
"server_transmitted": 1235518937
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567752504866
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567752504866,
"server_received": 1235519042,
"server_transmitted": 1235519078
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567752505003
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567752505003,
"server_received": 1235519188,
"server_transmitted": 1235519224
}
}
],
"client": {
"client_id": "4ylxGBGEH7fsXeAQjcRQrre0kkdPhHY5EBdvSYRlFis",
"name": "sendspin-dotnet-client",
"supported_roles": [
"artwork@v1"
],
"active_roles": [
"artwork@v1"
]
},
"artwork": {
"channel": 0,
"source": "album",
"format": "jpeg",
"width": 256,
"height": 256,
"encoded_sha256": "a26c41e162cc6642a8e8476b98bbd6536ba80dfa3caa7ffb307023e609736421",
"byte_count": 2587
}
}
Client summary (JSON)
RAW{
"artwork": {
"byte_count": 2587,
"channel": 0,
"received_count": 1,
"received_sha256": "a26c41e162cc6642a8e8476b98bbd6536ba80dfa3caa7ffb307023e609736421"
},
"client_id": "4ylxGBGEH7fsXeAQjcRQrre0kkdPhHY5EBdvSYRlFis",
"client_name": "sendspin-dotnet-client",
"implementation": "sendspin-dotnet",
"initiator_role": "client",
"peer_hello": {
"active_roles": [
"artwork@v1"
],
"name": "sendspin-server-cpp server",
"server_id": "",
"source@v1_support": {
"supported_codecs": [
"pcm",
"flac",
"opus"
]
},
"version": 1
},
"preferred_codec": "none",
"reason": null,
"role": "client",
"scenario_id": "client-initiated-artwork",
"server": {
"connection_reason": null,
"server_id": "kKaiB48_beMwmbfA0bRdWnjJd0EbAhbxKANRHZRxvB0",
"server_name": "sendspin-server-cpp server"
},
"status": "ok",
"stream": {
"channels": [
{
"format": "jpeg",
"height": 256,
"source": "album",
"width": 256
}
]
}
}Client log
RAW07:29:12 info: Sendspin.SDK.Client.SendspinClientService[0] Connecting to ws://127.0.0.1:19079/sendspin
07:29:12 info: Sendspin.SDK.Connection.SendspinConnection[0] Connecting to ws://127.0.0.1:19079/sendspin...
07:29:12 info: Sendspin.SDK.Connection.SendspinConnection[0] Connected to ws://127.0.0.1:19079/sendspin
07:29:12 info: Sendspin.SDK.Client.SendspinClientService[0] Server hello received (encrypted): kKaiB48_beMwmbfA0bRdWnjJd0EbAhbxKANRHZRxvB0 (sendspin-server-cpp server)
07:29:12 info: Sendspin.SDK.Client.SendspinClientService[0] Sending client/hello (encrypted): {"type":"client/hello","payload":{"name":"sendspin-dotnet-client","supported_pair_methods":{"pairing_psk":{}},"unpaired_access":{"enabled":true},"supported_roles":["artwork@v1"],"device_info":{"product_name":"Conformance Dotnet Client","manufacturer":"Sendspin Conformance","software_version":"0.1.0"}}}
07:29:12 info: Sendspin.SDK.Client.SendspinClientService[0] Server activate: activities [], roles [artwork@v1]
07:29:12 info: Sendspin.SDK.Client.SendspinClientService[0] Sending initial client/state: {"type":"client/state","payload":{"available":true,"artwork":{"channels":[{"source":"album","format":"jpeg","width":256,"height":256}]}}}
07:29:12 info: Sendspin.SDK.Client.SendspinClientService[0] Handshake complete with server kKaiB48_beMwmbfA0bRdWnjJd0EbAhbxKANRHZRxvB0 (sendspin-server-cpp server)
07:29:12 info: Sendspin.SDK.Client.SendspinClientService[0] group/update [sendspin-dotnet-client]: Group name changed '(none)' -> 'sendspin-server-cpp server'
07:29:13 info: Sendspin.SDK.Connection.SendspinConnection[0] Server closed connection: EndpointUnavailable -
{
"status": "ok",
"reason": null,
"implementation": "sendspin-dotnet",
"role": "client",
"scenario_id": "client-initiated-artwork",
"initiator_role": "client",
"preferred_codec": "none",
"client_name": "sendspin-dotnet-client",
"client_id": "4ylxGBGEH7fsXeAQjcRQrre0kkdPhHY5EBdvSYRlFis",
"server": {
"server_id": "kKaiB48_beMwmbfA0bRdWnjJd0EbAhbxKANRHZRxvB0",
"server_name": "sendspin-server-cpp server",
"connection_reason": null
},
"peer_hello": {
"server_id": "",
"name": "sendspin-server-cpp server",
"source@v1_support": {
"supported_codecs": [
"pcm",
"flac",
"opus"
]
},
"version": 1,
"active_roles": [
"artwork@v1"
]
},
"stream": {
"channels": [
{
"source": "album",
"format": "jpeg",
"width": 256,
"height": 256
}
]
},
"artwork": {
"channel": 0,
"received_count": 1,
"received_sha256": "a26c41e162cc6642a8e8476b98bbd6536ba80dfa3caa7ffb307023e609736421",
"byte_count": 2587
}
}
Server build log · sendspin-server-cpp-server · built · 161.45s
RAWp-server.dir/trace_recorder.cpp.o
[100%] Linking CXX executable conformance-sendspin-server-cpp-server
[100%] Built target conformance-sendspin-server-cpp-server
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:6: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
21 | #if (HAS_SIZEOF_INT128_64BIT || HAS_MSVC_64BIT || HAS_GCC_4_4_64BIT)
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:17:34: note: expanded from macro 'HAS_SIZEOF_INT128_64BIT'
17 | #define HAS_SIZEOF_INT128_64BIT (defined(__SIZEOF_INT128__) && defined(__LP64__))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:6: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:17:64: note: expanded from macro 'HAS_SIZEOF_INT128_64BIT'
17 | #define HAS_SIZEOF_INT128_64BIT (defined(__SIZEOF_INT128__) && defined(__LP64__))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:33: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
21 | #if (HAS_SIZEOF_INT128_64BIT || HAS_MSVC_64BIT || HAS_GCC_4_4_64BIT)
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:18:25: note: expanded from macro 'HAS_MSVC_64BIT'
18 | #define HAS_MSVC_64BIT (defined(_MSC_VER) && defined(_M_X64))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:33: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:18:46: note: expanded from macro 'HAS_MSVC_64BIT'
18 | #define HAS_MSVC_64BIT (defined(_MSC_VER) && defined(_M_X64))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:51: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
21 | #if (HAS_SIZEOF_INT128_64BIT || HAS_MSVC_64BIT || HAS_GCC_4_4_64BIT)
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:19:28: note: expanded from macro 'HAS_GCC_4_4_64BIT'
19 | #define HAS_GCC_4_4_64BIT (defined(__GNUC__) && defined(__LP64__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:51: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:19:49: note: expanded from macro 'HAS_GCC_4_4_64BIT'
19 | #define HAS_GCC_4_4_64BIT (defined(__GNUC__) && defined(__LP64__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))))
| ^
6 warnings generated.Client build log · sendspin-dotnet-client · built · 17.06s
RAWSDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1500BracesForMultiLineStatementsMustNotShareLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1502ElementMustNotBeOnASingleLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1508ClosingBracesMustNotBePrecededByBlankLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1500BracesForMultiLineStatementsMustNotShareLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1502ElementMustNotBeOnASingleLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1508ClosingBracesMustNotBePrecededByBlankLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1500BracesForMultiLineStatementsMustNotShareLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1502ElementMustNotBeOnASingleLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1508ClosingBracesMustNotBePrecededByBlankLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
/Users/runner/work/conformance/conformance/adapters/sendspin-dotnet/client/Program.cs(607,52): warning CS0067: The event 'HashingAudioPipeline.ErrorOccurred' is never used [/Users/runner/work/conformance/conformance/adapters/sendspin-dotnet/client/Conformance.SendspinDotnet.Client.csproj]
/Users/runner/work/conformance/conformance/adapters/sendspin-dotnet/client/Program.cs(608,37): warning CS0067: The event 'HashingAudioPipeline.OutputLatencyChanged' is never used [/Users/runner/work/conformance/conformance/adapters/sendspin-dotnet/client/Conformance.SendspinDotnet.Client.csproj]
1228 Warning(s)
0 Error(s)
Time Elapsed 00:00:16.04