{"action":"closed","issue":{"url":"https://api.github.com/repos/MassTransit/MassTransit/issues/75","labels_url":"https://api.github.com/repos/MassTransit/MassTransit/issues/75/labels{/name}","comments_url":"https://api.github.com/repos/MassTransit/MassTransit/issues/75/comments","events_url":"https://api.github.com/repos/MassTransit/MassTransit/issues/75/events","html_url":"https://github.com/MassTransit/MassTransit/issues/75","id":3049064,"number":75,"title":"Transports Specs","user":{"login":"haf","id":193115,"avatar_url":"https://avatars.githubusercontent.com/u/193115?v=3","gravatar_id":"","url":"https://api.github.com/users/haf","html_url":"https://github.com/haf","followers_url":"https://api.github.com/users/haf/followers","following_url":"https://api.github.com/users/haf/following{/other_user}","gists_url":"https://api.github.com/users/haf/gists{/gist_id}","starred_url":"https://api.github.com/users/haf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haf/subscriptions","organizations_url":"https://api.github.com/users/haf/orgs","repos_url":"https://api.github.com/users/haf/repos","events_url":"https://api.github.com/users/haf/events{/privacy}","received_events_url":"https://api.github.com/users/haf/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/MassTransit/MassTransit/labels/discussion","name":"discussion","color":"fad8c7"},{"url":"https://api.github.com/repos/MassTransit/MassTransit/labels/do-not-fix","name":"do-not-fix","color":"c0c0c0"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2012-02-01T09:00:33Z","updated_at":"2015-10-03T18:01:15Z","closed_at":"2015-10-03T18:01:15Z","body":"**Suggestion that would make it easier to implement and manage transports**\r\n\r\nI think we could create a common test project that pulls in all transports and test them. By running the tests in this project as a part of a 'certification workflow' we could ensure different levels of transport compliance. The reason I'm suggesting a test suite rather than a written specification is that it would probably be easier to get the test suite harvested from existing code than to write anew.\r\n\r\n#### What would it test?\r\n\r\nThe test suite would be responsible for testing all the failure conditions, such as serialization problems, oversized messages, transports that go down with exceptions. The failure conditions could be wowen into the transports either with a runtime such as Moles or by adding instrumentation to the code itself.\r\n\r\nThe test suite would be responsible for testing all positive conditions, such as concurrent/interleaved consumption, pub-sub ordinarily, polymorphically/interfaces, multiple-interfaces, selective handlers/consumers/peeking, routing between in-proc buses, sending to specific endpoints, static routing etc.\r\n\r\nBy doing this, we could group the test fixtures themselves by the levels that the transport aims to support and let programmers worry about implementing a very fixed set of specs rather than trying to reverse-engineer existing transports.\r\n\r\n#### Getting started\r\n\r\nWe could begin by harvesting everything from MSMQ and RMQ, and then use that to test AzureServiceBus/Stomp transports and the move on to ZMQ transport.\r\n\r\nIt would aim to bring down the overhead for creating these transports while making it better documented (through e.g. comments and literate test specification in the transport certification project).\r\n\r\n### Existing Specs\r\n\r\nThere are some existing specification in the `MassTransit.TestFramework.Transports` namespace. I think this issue pertains to things we'd add in that namespace.\r\n\r\n<!---\r\n@huboard:{\"order\":125.5,\"milestone_order\":75,\"custom_state\":\"\"}\n-->\r\n"}}