Guest User

Untitled

a guest
Feb 9th, 2018
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. public class RabbitMqSpecificTests : IClassFixture<RabbitMqOptions>
  2. {
  3. readonly RabbitMqOptions options;
  4. string queue = $"{nameof(RabbitMqSpecificTests)}{nameof(CommandDissapearsIfNoQueue)}";
  5.  
  6. public RabbitMqSpecificTests(RabbitMqOptions options)
  7. {
  8. this.options = options;
  9. EnsureQueueDeleted();
  10. }
  11.  
  12. [Fact]
  13. public async Task CommandDissapearsIfNoQueue()
  14. {
  15. await SendFirst();
  16. Should.Throw<TimeoutException>(ReceiveLater());
  17. }
  18.  
  19. [Fact]
  20. public async Task CommandArrivesIfQueueIsAvailable()
  21. {
  22. var bus = await InitializeBus(TestConsumer.For<KlantAanmelden>());
  23. await bus.StopAsync();
  24.  
  25. await SendFirst();
  26. await ReceiveLater();
  27. }
  28.  
  29. void EnsureQueueDeleted()
  30. {
  31. var factory = new ConnectionFactory();
  32. factory.UserName = options.Username;
  33. factory.Password = options.Password;
  34. factory.HostName = options.Uri.Host;
  35.  
  36. var connection = factory.CreateConnection();
  37. var channel = connection.CreateModel();
  38. channel.QueueDelete(queue);
  39. }
  40.  
  41. private async Task SendFirst()
  42. {
  43. var bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
  44. {
  45. var host = cfg.Host(options);
  46. });
  47.  
  48. await bus.StartAsync();
  49.  
  50. var endpoint = await bus.GetSendEndpoint(new Uri(options.Uri, queue));
  51. await endpoint.Send<KlantAanmelden>(new { CorrelationId = Guid.NewGuid(), Naam = "Manuel Riezebosch" });
  52.  
  53. await bus.StopAsync();
  54. }
  55.  
  56. private async Task ReceiveLater()
  57. {
  58. var service = TestConsumer.For<KlantAanmelden>();
  59. var bus = await InitializeBus(service);
  60.  
  61. try
  62. {
  63. await service
  64. .ScheduleTimeout()
  65. .Done();
  66. }
  67. finally
  68. {
  69. await bus.StopAsync();
  70. }
  71. }
  72.  
  73. private async Task<IBusControl> InitializeBus(ITestConsumer<KlantAanmelden> service)
  74. {
  75. var bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
  76. {
  77. var host = cfg.Host(options);
  78. cfg.ReceiveEndpoint(host, queue, e =>
  79. {
  80. e.Instance(service);
  81. });
  82. });
  83.  
  84. await bus.StartAsync();
  85. return bus;
  86. }
  87. }
Add Comment
Please, Sign In to add comment