Skip to content
This repository was archived by the owner on Oct 12, 2023. It is now read-only.

Commit 54fc588

Browse files
authored
Merge branch 'dev' into issue-592
2 parents 2c8fd0d + c350386 commit 54fc588

File tree

6 files changed

+93
-5
lines changed

6 files changed

+93
-5
lines changed

src/Microsoft.Azure.ServiceBus/Amqp/AmqpMessageConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ public static AmqpMessage SBMessageToAmqpMessage(SBMessage sbMessage)
164164
return amqpMessage;
165165
}
166166

167-
public static SBMessage AmqpMessageToSBMessage(AmqpMessage amqpMessage)
167+
public static SBMessage AmqpMessageToSBMessage(AmqpMessage amqpMessage, bool isPeeked = false)
168168
{
169169
if (amqpMessage == null)
170170
{
@@ -229,7 +229,7 @@ public static SBMessage AmqpMessageToSBMessage(AmqpMessage amqpMessage)
229229

230230
if (amqpMessage.Header.DeliveryCount != null)
231231
{
232-
sbMessage.SystemProperties.DeliveryCount = (int)(amqpMessage.Header.DeliveryCount.Value + 1);
232+
sbMessage.SystemProperties.DeliveryCount = isPeeked ? (int)(amqpMessage.Header.DeliveryCount.Value) : (int)(amqpMessage.Header.DeliveryCount.Value + 1);
233233
}
234234
}
235235

src/Microsoft.Azure.ServiceBus/Core/MessageReceiver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1102,7 +1102,7 @@ protected virtual async Task<IList<Message>> OnPeekAsync(long fromSequenceNumber
11021102
{
11031103
var payload = (ArraySegment<byte>)entry[ManagementConstants.Properties.Message];
11041104
var amqpMessage = AmqpMessage.CreateAmqpStreamMessage(new BufferListStream(new[] { payload }), true);
1105-
message = AmqpMessageConverter.AmqpMessageToSBMessage(amqpMessage);
1105+
message = AmqpMessageConverter.AmqpMessageToSBMessage(amqpMessage, true);
11061106
messages.Add(message);
11071107
}
11081108

src/Microsoft.Azure.ServiceBus/Microsoft.Azure.ServiceBus.csproj

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<Version>3.1.1</Version>
66
<Authors>Microsoft</Authors>
77
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
8-
<TargetFramework>netstandard2.0</TargetFramework>
8+
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
99
<AssemblyOriginatorKeyFile>../../build/keyfile.snk</AssemblyOriginatorKeyFile>
1010
<SignAssembly>true</SignAssembly>
1111
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
@@ -35,6 +35,12 @@
3535
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-beta-63127-02" PrivateAssets="All" />
3636
</ItemGroup>
3737

38+
<ItemGroup Condition="'$(TargetFramework)' == 'net461'">
39+
<Reference Include="System.Transactions" />
40+
<Reference Include="System.Net.Http" />
41+
<Reference Include="System.Web" />
42+
</ItemGroup>
43+
3844
<ItemGroup>
3945
<Compile Update="Resources.Designer.cs">
4046
<DesignTime>True</DesignTime>

test/Microsoft.Azure.ServiceBus.UnitTests/AmqpConverterTests.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,5 +131,39 @@ void SB_message_with_no_TTL_results_in_empty_Ampq_TTL()
131131

132132
Assert.Null(amqpMessage.Header.Ttl);
133133
}
134+
135+
[Fact]
136+
[DisplayTestMethodName]
137+
void When_message_is_peeked_should_have_delivery_count_set_to_zero()
138+
{
139+
var messageBody = Encoding.UTF8.GetBytes("message1");
140+
141+
var amqpValue = new AmqpValue();
142+
amqpValue.Value = new ArraySegment<byte>(messageBody);
143+
var amqpMessage = AmqpMessage.Create(amqpValue);
144+
amqpMessage.Header.DeliveryCount = 2;
145+
146+
var sbMessage = AmqpMessageConverter.AmqpMessageToSBMessage(amqpMessage, isPeeked: true);
147+
sbMessage.SystemProperties.SequenceNumber = 1L;
148+
149+
Assert.Equal(2, sbMessage.SystemProperties.DeliveryCount);
150+
}
151+
152+
[Fact]
153+
[DisplayTestMethodName]
154+
void When_message_is_received_should_have_delivery_count_increased()
155+
{
156+
var messageBody = Encoding.UTF8.GetBytes("message1");
157+
158+
var amqpValue = new AmqpValue();
159+
amqpValue.Value = new ArraySegment<byte>(messageBody);
160+
var amqpMessage = AmqpMessage.Create(amqpValue);
161+
amqpMessage.Header.DeliveryCount = 2;
162+
163+
var sbMessage = AmqpMessageConverter.AmqpMessageToSBMessage(amqpMessage, isPeeked: false);
164+
sbMessage.SystemProperties.SequenceNumber = 1L;
165+
166+
Assert.Equal(3, sbMessage.SystemProperties.DeliveryCount);
167+
}
134168
}
135169
}

test/Microsoft.Azure.ServiceBus.UnitTests/Microsoft.Azure.ServiceBus.UnitTests.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<compile Remove="..\..\test\Microsoft.Azure.ServiceBus.UnitTests\OnMessageQueueTests.cs" />
2222
<compile Remove="..\..\test\Microsoft.Azure.ServiceBus.UnitTests\OnSessionQueueTests.cs" />
2323
<compile Remove="..\..\test\Microsoft.Azure.ServiceBus.UnitTests\RetryTests.cs" />
24+
<compile Remove="..\..\test\Microsoft.Azure.ServiceBus.UnitTests\TransactionTests.cs" />
2425
<compile Remove="..\..\test\Microsoft.Azure.ServiceBus.UnitTests\SubscriptionClientTests.cs" />
2526
<compile Remove="..\..\test\Microsoft.Azure.ServiceBus.UnitTests\Diagnostics\ExtractActivityTests.cs" />
2627
<compile Remove="..\..\test\Microsoft.Azure.ServiceBus.UnitTests\Diagnostics\SessionDiagnosticsTests.cs" />
@@ -57,6 +58,6 @@
5758
<ItemGroup Condition="'$(TargetFramework)' == 'net461'">
5859
<PackageReference Include="WindowsAzure.ServiceBus" Version="4.1.2" />
5960
</ItemGroup>
60-
61+
6162

6263
</Project>

test/Microsoft.Azure.ServiceBus.UnitTests/QueueClientTests.cs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
namespace Microsoft.Azure.ServiceBus.UnitTests
55
{
66
using System.Collections.Generic;
7+
using System.Linq;
78
using System.Threading.Tasks;
89
using Xunit;
910

@@ -31,6 +32,52 @@ async Task PeekLockTest(string queueName, int messageCount = 10)
3132
}
3233
}
3334

35+
[Theory]
36+
[MemberData(nameof(TestPermutations))]
37+
[DisplayTestMethodName]
38+
async Task PeekDeliveryCountTest(string queueName)
39+
{
40+
var queueClient = new QueueClient(TestUtility.NamespaceConnectionString, queueName);
41+
try
42+
{
43+
await TestUtility.SendMessagesAsync(queueClient.InnerSender, 1);
44+
45+
var message = await TestUtility.PeekMessageAsync(queueClient.InnerReceiver);
46+
47+
Assert.Equal(0, message.SystemProperties.DeliveryCount);
48+
}
49+
finally
50+
{
51+
var messageToDelete = await TestUtility.ReceiveMessagesAsync(queueClient.InnerReceiver, 1);
52+
await TestUtility.CompleteMessagesAsync(queueClient.InnerReceiver, messageToDelete);
53+
54+
await queueClient.CloseAsync();
55+
}
56+
}
57+
58+
[Theory]
59+
[MemberData(nameof(TestPermutations))]
60+
[DisplayTestMethodName]
61+
async Task PeekLockDeliveryCountTest(string queueName)
62+
{
63+
var queueClient = new QueueClient(TestUtility.NamespaceConnectionString, queueName);
64+
try
65+
{
66+
await TestUtility.SendMessagesAsync(queueClient.InnerSender, 1);
67+
68+
var messages = await TestUtility.ReceiveMessagesAsync(queueClient.InnerReceiver, 1);
69+
70+
await TestUtility.CompleteMessagesAsync(queueClient.InnerReceiver, messages);
71+
72+
Assert.Equal(1, messages.First().SystemProperties.DeliveryCount);
73+
}
74+
finally
75+
{
76+
await queueClient.CloseAsync();
77+
}
78+
}
79+
80+
3481
[Theory]
3582
[MemberData(nameof(TestPermutations))]
3683
[DisplayTestMethodName]

0 commit comments

Comments
 (0)