44namespace Microsoft . Azure . ServiceBus . UnitTests
55{
66 using System ;
7- using System . Linq ;
87 using System . Text ;
98 using System . Collections . Generic ;
109 using System . Threading ;
@@ -14,9 +13,9 @@ namespace Microsoft.Azure.ServiceBus.UnitTests
1413
1514 public class SenderReceiverTests : SenderReceiverClientTestBase
1615 {
17- private static readonly TimeSpan TwoSeconds = TimeSpan . FromSeconds ( 2 ) ;
16+ private static TimeSpan TwoSeconds = TimeSpan . FromSeconds ( 2 ) ;
1817
19- public static IEnumerable < object [ ] > TestPermutations => new [ ]
18+ public static IEnumerable < object [ ] > TestPermutations => new object [ ] [ ]
2019 {
2120 new object [ ] { TestConstants . NonPartitionedQueueName } ,
2221 new object [ ] { TestConstants . PartitionedQueueName }
@@ -464,31 +463,16 @@ public async Task ClientsUseGlobalConnectionCloseFirstClientSecoundClientShouldS
464463 [ Theory ]
465464 [ InlineData ( TestConstants . NonPartitionedQueueName ) ]
466465 [ DisplayTestMethodName ]
467- var sender = new MessageSender ( TestUtility . NamespaceConnectionString , TestConstants . PartitionedQueueName ) ;
468- var receivedMessages = await TestUtility . ReceiveMessagesAsync ( receiver , 1 ) ;
466+ async Task MessageSenderShouldNotThrowWhenSendingEmptyCollection ( string queueName )
467+ {
468+ var sender = new MessageSender ( TestUtility . NamespaceConnectionString , queueName ) ;
469469 var receiver = new MessageReceiver ( TestUtility . NamespaceConnectionString , queueName , ReceiveMode . ReceiveAndDelete ) ;
470470
471471 try
472472 {
473- var message1 = new Message ( "Hello Neeraj" . GetBytes ( ) ) ;
474- var message2 = new Message ( "from" . GetBytes ( ) ) ;
475- var message3 = new Message ( "Sean Feldman" . GetBytes ( ) ) ;
476-
477- var batch = new MessageBatch ( 100 , Task . FromResult ) ;
478- Assert . True ( await batch. TryAdd( message1 ) , "Couldn't add first message" ) ;
479- Assert . True ( await batch . TryAdd ( message2 ) , "Couldn't add second message" ) ;
480- Assert . False ( await batch . TryAdd ( message3 ) , "Shouldn't be able to add third message" ) ;
481- await sender . SendAsync ( batch ) ;
482- batch . Dispose ( ) ;
483- await sender . CloseAsync ( ) ;
484-
485- var receivedMessages = await TestUtility . ReceiveMessagesAsync ( receiver , 2 ) ;
486- var bodies = receivedMessages . Select ( m => m . Body . GetString ( ) ) ;
487- var bodiesArray = bodies as string [ ] ?? bodies . ToArray ( ) ;
488- Assert . True ( bodiesArray . Contains ( "Hello Neeraj" ) && bodiesArray . Contains ( "from" ) ) ;
489-
490- var extraMessage = await TestUtility . PeekMessageAsync ( receiver ) ;
491- Assert . True ( extraMessage == null , $ "Should not have any messages other than the two, but an extra message is found. Body='{ extraMessage ? . Body . GetString ( ) } '") ;
473+ await sender . SendAsync ( new List < Message > ( ) ) ;
474+ var message = await receiver . ReceiveAsync ( TimeSpan . FromSeconds ( 3 ) ) ;
475+ Assert . True ( message == null , "Expected not to find any messages, but a message was received." ) ;
492476 }
493477 finally
494478 {
@@ -497,95 +481,5 @@ public async Task ClientsUseGlobalConnectionCloseFirstClientSecoundClientShouldS
497481 }
498482 }
499483
500- [ Fact ]
501- [ DisplayTestMethodName ]
502- public async Task Sending_batch_with_properties ( )
503- {
504- var sender = new MessageSender ( TestUtility . NamespaceConnectionString , TestConstants . PartitionedQueueName ) ;
505- var receiver = new MessageReceiver ( TestUtility . NamespaceConnectionString , TestConstants . PartitionedQueueName , receiveMode : ReceiveMode . ReceiveAndDelete ) ;
506- try
507- {
508- var message = new Message ( "Hello Neeraj" . GetBytes ( ) ) ;
509- message . UserProperties [ "custom" ] = "value" ;
510-
511- var batch = new MessageBatch ( 100 , Task . FromResult ) ;
512- Assert . True ( await batch . TryAdd ( message ) , "Couldn't add message" ) ;
513- await sender . SendAsync ( batch ) ;
514- batch . Dispose ( ) ;
515- await sender . CloseAsync ( ) ;
516-
517- var receivedMessages = await TestUtility . ReceiveMessagesAsync ( receiver , 1 ) ;
518- var receivedMessage = receivedMessages . FirstOrDefault ( ) ;
519- Assert . NotNull ( receivedMessage ) ;
520- Assert . Equal ( "value" , receivedMessage . UserProperties [ "custom" ] ) ;
521- }
522- finally
523- {
524- await sender . CloseAsync ( ) . ConfigureAwait ( false ) ;
525- await receiver . CloseAsync ( ) . ConfigureAwait ( false ) ;
526- }
527- }
528-
529- [ Fact ]
530- [ DisplayTestMethodName ]
531- public async Task Batch_should_have_maximum_size_set ( )
532- {
533- var sender = new MessageSender ( TestUtility . NamespaceConnectionString , TestConstants . PartitionedQueueName ) ;
534- try
535- {
536- using ( var batch = await sender . CreateBatch ( ) )
537- {
538- Assert . True ( batch . maximumBatchSize == 256 * 1024 || batch . maximumBatchSize == 1024 * 1024 ,
539- $ "Maximum batch size was expected to be 256KB or 1MB, but it wasn't. Reported size: { batch . maximumBatchSize } ") ;
540- }
541- }
542- finally
543- {
544- await sender . CloseAsync ( ) . ConfigureAwait ( false ) ;
545- }
546- }
547-
548- [ Fact ]
549- [ DisplayTestMethodName ]
550- public async Task Batch_should_go_through_outgoing_plugins ( )
551- {
552- var sender = new MessageSender ( TestUtility . NamespaceConnectionString , TestConstants . PartitionedQueueName ) ;
553- var receiver = new MessageReceiver ( TestUtility . NamespaceConnectionString , TestConstants . PartitionedQueueName , receiveMode : ReceiveMode . ReceiveAndDelete ) ;
554-
555- sender . RegisterPlugin ( new RemoveVowelsPlugin ( ) ) ;
556- try
557- {
558- var batch = await sender . CreateBatch ( ) ;
559- await batch . TryAdd ( new Message ( "Hello Neeraj" . GetBytes ( ) ) ) ;
560- await batch . TryAdd ( new Message ( "from" . GetBytes ( ) ) ) ;
561- await batch . TryAdd ( new Message ( "Sean Feldman" . GetBytes ( ) ) ) ;
562-
563- await sender . SendAsync ( batch ) ;
564- batch . Dispose ( ) ;
565- await sender . CloseAsync ( ) ;
566-
567- var receivedMessages = await TestUtility . ReceiveMessagesAsync ( receiver , 3 ) ;
568- var bodies = receivedMessages . Select ( m => m . Body . GetString ( ) ) ;
569- var bodiesArray = bodies as string [ ] ?? bodies . ToArray ( ) ;
570- Assert . True ( bodiesArray . Contains ( "Hll Nrj" ) && bodiesArray . Contains ( "frm" ) && bodiesArray . Contains ( "Sn Fldmn" ) ) ;
571- }
572- finally
573- {
574- await sender . CloseAsync ( ) . ConfigureAwait ( false ) ;
575- await receiver . CloseAsync ( ) . ConfigureAwait ( false ) ;
576- }
577- }
578-
579- class RemoveVowelsPlugin : ServiceBusPlugin
580- {
581- public override string Name { get ; } = nameof ( RemoveVowelsPlugin ) ;
582-
583- public override Task < Message > BeforeMessageSend ( Message message )
584- {
585- message . Body = new string ( message . Body . GetString ( ) . Where ( x => "aeiouy" . Contains ( x ) == false ) . ToArray ( ) ) . GetBytes ( ) ;
586- return Task . FromResult ( message ) ;
587- }
588- }
589-
590484 }
591485}
0 commit comments