-
Notifications
You must be signed in to change notification settings - Fork 286
Open
Labels
Area: MTPBelongs to the Microsoft.Testing.Platform core libraryBelongs to the Microsoft.Testing.Platform core libraryArea: Server Mode - PipeExternal: dotnet test`dotnet test` integration`dotnet test` integration
Milestone
Description
To help with clarity on implementation on dotnet test side, we want to write a spec, ideally very soon, before .NET 10 is GA, so we can revise the implementation on SDK and closely follow a well-defined specification.
We also need to explicitly state what behaviors are allowed, what is not allowed, and explicitly throw exception in .NET SDK implementation if a protocol violation is hit.
I think the current implementation on .NET SDK assumes that the "server" (test app, MTP implementation) is correct.
For example:
- The spec should mention that multiple handshakes from the same test app is allowed (in case of retry, in case of sharding)
- What fields of the handshake message are expected to be the same, and what fields may be different?
- Implementation on SDK should explicitly throw if a second handshake has a different value of a field that was expected to be the same (e.g, TFM?, Architecture?, ExecutionId?, TargetPath?)
- Handshaking:
- Today, both
dotnet testand MTP use the sameHandshakeMessage. TheHandshakeMessagecontain process id, architecture, framework, OS, supported protocol version. Why do we ever care about the process id of thedotnet? or its architecture or target framework? Is it a flaw in the protocol design? - What if the test app doesn't handshake at all? Today, I think we accept it and will consider it passing. That's very wrong IMO. EDIT: This point is fixed in SDK now.
- Today, both
Above are just examples of when having a spec will help.
Metadata
Metadata
Assignees
Labels
Area: MTPBelongs to the Microsoft.Testing.Platform core libraryBelongs to the Microsoft.Testing.Platform core libraryArea: Server Mode - PipeExternal: dotnet test`dotnet test` integration`dotnet test` integration