Skip to content

Make client for MTP and publish it as nuget #5667

Closed

Description

@nohwnd

Summary

Provide package like vstest console translation layer, that will be able to recognize mtp processes, start them, send them requests and handle responses.

Background and Motivation

Orchestrating MTP is not super easy and requires implementation of the protocol which we documented but don't provide a public reference implementation for. If we had it then multiple places could take advantage of this client, for tasks like orchestrating runs, sharding (#4068), mutation runs and so on.

Proposed Feature

Extract the client code that we have in VS, and make it into a client package for MTP.

Alternative Designs

Activity

  1. Youssef1313 commented on Jun 1, 2025

    @Youssef1313
    Member

    Few notes:

    • I prefer if we include JsonRpc as part of the package name. Just in case in future we wanted to expose the binary protocol used by dotnet test.
    • We may want to address JsonRPC protocol epic issue #5490 first.
  2. Evangelink commented on Jun 2, 2025

    @Evangelink
    Member

    Also note that the rpc-json is quite slow and incomplete as compared to the pipe one implemented for dotnet test. This might be a better starting point for completness.

  3. nohwnd commented on Aug 29, 2025

    @nohwnd
    MemberAuthor

    One more effort that would benefit from MTP having a client library on nuget: ionide/FsAutoComplete#1383

  4. Evangelink commented on Jun 19, 2026

    @Evangelink
    Member

    Closing for now — there isn't a concrete use case that justifies designing and shipping a public MTP client / orchestration NuGet yet. The open questions raised above (extracting the VS client, json-rpc vs. the newer pipe protocol for completeness, and #5490) all remain, and without a real consumer driving the requirements the design would be speculative.

    We'll revisit (and reopen) when a good, concrete use case surfaces.

    Note this does not block the current cross-repo work: sharing the dotnet test wire contract and the terminal reporter source between microsoft/testfx and dotnet/sdk is being done via an internal, source-only package (IsShipping=false, not on nuget.org) — an implementation detail of dotnet test integration, not the public client library this issue proposes.

  5. Youssef1313 commented on Jun 19, 2026

    @Youssef1313
    Member

    fwiw, https://github.com/Youssef1313/MTPSharding/tree/main/src/YTest.MTP.PipeProtocol was a personal attempt on this. YTest.MTP.PipeProtocol is public on nuget.org already. It's not super polished though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/mtpMicrosoft.Testing.Platform core library.needs/designNeeds design / proposal before implementation.

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions