Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Re-submit a single message with binary content created with Azure.Messaging.ServiceBus nuget package #722

Merged
merged 8 commits into from
Jun 13, 2023
157 changes: 157 additions & 0 deletions src/ServiceBusExplorer.Tests/Helpers/ServiceBusHelperTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
using ServiceBusExplorer;
using System;
using NUnit.Framework;
using Microsoft.ServiceBus.Messaging;
using System.IO;

#endregion

Expand Down Expand Up @@ -138,5 +140,160 @@ public void GetAddressRelativeToNamespace_Whitespace_ReturnsWhitespace()

Assert.That(helper.GetAddressRelativeToNamespace(" "), Is.EqualTo(" "));
}

[Test]
public void GetMessageText_ProtobufMessage_WindowsAzureServiceApi_ByteArray()
{
var expectedBodyType = BodyType.ByteArray;

var helper = new ServiceBusHelper((_, _) => { });

var message = CreateProtobufTestMessage();
var brokeredMessage = new BrokeredMessage(message);
var actualMessageText = helper.GetMessageText(brokeredMessage, false, out var actualBodyType);

Assert.AreEqual(expectedBodyType, actualBodyType);
Assert.NotNull(actualMessageText);
Assert.IsFalse(string.IsNullOrWhiteSpace(actualMessageText));
}

[Test]
public void GetMessageText_ProtobufMessage_WindowsAzureServiceApi_ReadonlyMemoryByte()
{
var expectedBodyType = BodyType.Stream;

var helper = new ServiceBusHelper((_, _) => { });

ReadOnlyMemory<byte> message = CreateProtobufTestMessage();
var brokeredMessage = new BrokeredMessage(message);
var actualMessageText = helper.GetMessageText(brokeredMessage, false, out var actualBodyType);

Assert.AreEqual(expectedBodyType, actualBodyType);
Assert.NotNull(actualMessageText);
Assert.IsFalse(string.IsNullOrWhiteSpace(actualMessageText));
}

/// <summary>
/// AzureMessagingServiceBus only allows byte[] and BinaryData as content of the message.
/// This test somehow try to emulate the behavior of the new nuget package.
/// The exception is the same unspecified exception that occurs in test with the real service bus
/// Inside of the package you would do something like
/// Body = BinaryData.FromBytes(myByteArray)
///
/// The actual message text in real test are like the output of <see cref="GetMessageText_ProtobufMessage_WindowsAzureServiceApi_ByteArray"/>
///
/// ������&
/// a string that a human can read 
/// readable string" fffff�(@
/// </summary>
[Test]
public void GetMessageText_ProtobufMessage_AzureMessagingServiceBus()
{
var expectedBodyType = BodyType.Stream;

var helper = new ServiceBusHelper((_, _) => { });

var message = CreateProtobufTestMessage();
var brokeredMessage = new BrokeredMessage(new MemoryStream(message));
var actualMessageText = helper.GetMessageText(brokeredMessage, false, out var actualBodyType);

Assert.AreEqual(expectedBodyType, actualBodyType);
Assert.NotNull(actualMessageText);
Assert.IsFalse(string.IsNullOrWhiteSpace(actualMessageText));
}

static byte[] CreateProtobufTestMessage()
{
// Due to incompatibility with .net 462 it is not possible to generate a protobuf message inside the code.
return new byte[]
{
10,
12,
8,
154,
239,
224,
160,
6,
16,
172,
239,
162,
196,
1,
18,
38,
10,
30,
97,
32,
115,
116,
114,
105,
110,
103,
32,
116,
104,
97,
116,
32,
97,
32,
104,
117,
109,
97,
110,
32,
99,
97,
110,
32,
114,
101,
97,
100,
16,
1,
26,
2,
8,
12,
18,
30,
10,
15,
114,
101,
97,
100,
97,
98,
108,
101,
32,
115,
116,
114,
105,
110,
103,
16,
2,
34,
9,
9,
102,
102,
102,
102,
102,
230,
40,
64
};
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="NUnit" Version="3.13.3" />
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
<PackageReference Include="WindowsAzure.ServiceBus" Version="6.2.2" />
</ItemGroup>
</Project>
3 changes: 2 additions & 1 deletion src/ServiceBusExplorer.sln.DotSettings
Original file line number Diff line number Diff line change
Expand Up @@ -605,4 +605,5 @@ II.2.12 &lt;HandlesEvent /&gt;&#xD;


<s:String x:Key="/Default/FilterSettingsManager/AttributeFilterXml/@EntryValue">&lt;data /&gt;</s:String>
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters /&gt;&lt;/data&gt;</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters /&gt;&lt;/data&gt;</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Protobuf/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
26 changes: 24 additions & 2 deletions src/ServiceBusExplorer/Controls/HandleQueueControl.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 26 additions & 2 deletions src/ServiceBusExplorer/Controls/HandleQueueControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3317,6 +3317,7 @@ private void messagesDataGridView_CellMouseDown(object sender, DataGridViewCellM
messagesDataGridView.Rows[e.RowIndex].Selected = true;
var multipleSelectedRows = messagesDataGridView.SelectedRows.Count > 1;
repairAndResubmitMessageToolStripMenuItem.Visible = !multipleSelectedRows;
resubmitMessageToolStripMenuItem.Visible = !multipleSelectedRows;
saveSelectedMessageToolStripMenuItem.Visible = !multipleSelectedRows;
saveSelectedMessageBodyAsFileToolStripMenuItem.Visible = !multipleSelectedRows;
resubmitSelectedMessagesInBatchModeToolStripMenuItem.Visible = multipleSelectedRows;
Expand All @@ -3331,16 +3332,27 @@ private void repairAndResubmitMessageToolStripMenuItem_Click(object sender, Even
new DataGridViewCellEventArgs(0, currentMessageRowIndex));
}

private void resubmitMessageToolStripMenuItem_Click(object sender, EventArgs e)
{
ResubmitSelectedMessages();
}

private void resubmitSelectedMessagesInBatchModeToolStripMenuItem_Click(object sender, EventArgs e)
{
ResubmitSelectedMessages();
}

private void ResubmitSelectedMessages()
{
try
{
if (messagesDataGridView.SelectedRows.Count <= 0)
{
return;
}

using (var form = new MessageForm(queueDescription, messagesDataGridView.SelectedRows.Cast<DataGridViewRow>()
.Select(r => (BrokeredMessage)r.DataBoundItem), serviceBusHelper, writeToLog))
.Select(r => (BrokeredMessage)r.DataBoundItem), serviceBusHelper, writeToLog))
{
form.ShowDialog();
}
Expand Down Expand Up @@ -3433,6 +3445,7 @@ private void deadletterDataGridView_CellMouseDown(object sender, DataGridViewCel
var multipleSelectedRows = deadletterDataGridView.SelectedRows.Count > 1;

repairAndResubmitDeadletterToolStripMenuItem.Visible = !multipleSelectedRows;
resubmitDeadletterToolStripMenuItem.Visible = !multipleSelectedRows;
saveSelectedDeadletteredMessageToolStripMenuItem.Visible = !multipleSelectedRows;
saveSelectedDeadletteredMessageBodyAsFileToolStripMenuItem.Visible = !multipleSelectedRows;
deleteSelectedMessageToolStripMenuItem.Visible = !multipleSelectedRows;
Expand Down Expand Up @@ -3468,17 +3481,28 @@ private void repairAndResubmitDeadletterMessageToolStripMenuItem_Click(object se
new DataGridViewCellEventArgs(0, currentDeadletterMessageRowIndex));
}

private async void resubmitDeadletterMessageToolStripMenuItem_Click(object sender, EventArgs e)
{
await ResubmitSelectedDeadletterMessages();
}

private async void resubmitSelectedDeadletterMessagesInBatchModeToolStripMenuItem_Click(object sender,
EventArgs e)
{
await ResubmitSelectedDeadletterMessages();
}

async Task ResubmitSelectedDeadletterMessages()
{
try
{
if (deadletterDataGridView.SelectedRows.Count <= 0)
{
return;
}

using (var form = new MessageForm(queueDescription, deadletterDataGridView.SelectedRows.Cast<DataGridViewRow>()
.Select(r => (BrokeredMessage)r.DataBoundItem), serviceBusHelper, writeToLog))
.Select(r => (BrokeredMessage)r.DataBoundItem), serviceBusHelper, writeToLog))
{
form.ShowDialog();
if (form.RemovedSequenceNumbers != null && form.RemovedSequenceNumbers.Any())
Expand Down
8 changes: 4 additions & 4 deletions src/ServiceBusExplorer/Controls/HandleQueueControl.resx
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@
<data name="pictFindMessages.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
EQAACxEBf2RfkQAAAAd0SU1FB90LGg8kOha4XJIAAAMOSURBVDhPrdHrS1NxGMDx/ohehVnWi4gKur4I
DAAACwwBP0AiyAAAAAd0SU1FB90LGg8kOha4XJIAAAMOSURBVDhPrdHrS1NxGMDx/ohehVnWi4gKur4I
e5ck0cSiTMWE0HI6dWq7oGLTOfO2edyW052zzc3LtKl43TlnNzRteEvNzbMp5aUsE+dlXpIi0l9HCLcO
QwWFL+fV83w4PL9jsN52mCoNhHFo1vF17bAQmQKzt/fNHAFEhuhtPqAaM1GgG77GQS+ltQfxjQzYKmkZ
rjUTKtxOmfSOClUaxp6VWQMSUZqQeCqfCxLMBGZN3Ejvv5vXVdQ4vIf1H0Qqj4Rvz7O6Mxs2s3QgUQno
Expand Down Expand Up @@ -161,7 +161,7 @@
<data name="pictFindDeadletter.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
EQAACxEBf2RfkQAAAAd0SU1FB90LGg8kOha4XJIAAAMOSURBVDhPrdHrS1NxGMDx/ohehVnWi4gKur4I
DAAACwwBP0AiyAAAAAd0SU1FB90LGg8kOha4XJIAAAMOSURBVDhPrdHrS1NxGMDx/ohehVnWi4gKur4I
e5ck0cSiTMWE0HI6dWq7oGLTOfO2edyW052zzc3LtKl43TlnNzRteEvNzbMp5aUsE+dlXpIi0l9HCLcO
QwWFL+fV83w4PL9jsN52mCoNhHFo1vF17bAQmQKzt/fNHAFEhuhtPqAaM1GgG77GQS+ltQfxjQzYKmkZ
rjUTKtxOmfSOClUaxp6VWQMSUZqQeCqfCxLMBGZN3Ejvv5vXVdQ4vIf1H0Qqj4Rvz7O6Mxs2s3QgUQno
Expand Down Expand Up @@ -198,7 +198,7 @@
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
EQAACxEBf2RfkQAAAAd0SU1FB90LGg8kOha4XJIAAAMOSURBVDhPrdHrS1NxGMDx/ohehVnWi4gKur4I
DAAACwwBP0AiyAAAAAd0SU1FB90LGg8kOha4XJIAAAMOSURBVDhPrdHrS1NxGMDx/ohehVnWi4gKur4I
e5ck0cSiTMWE0HI6dWq7oGLTOfO2edyW052zzc3LtKl43TlnNzRteEvNzbMp5aUsE+dlXpIi0l9HCLcO
QwWFL+fV83w4PL9jsN52mCoNhHFo1vF17bAQmQKzt/fNHAFEhuhtPqAaM1GgG77GQS+ltQfxjQzYKmkZ
rjUTKtxOmfSOClUaxp6VWQMSUZqQeCqfCxLMBGZN3Ejvv5vXVdQ4vIf1H0Qqj4Rvz7O6Mxs2s3QgUQno
Expand Down Expand Up @@ -260,6 +260,6 @@
<value>390, 57</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>47</value>
<value>116</value>
</metadata>
</root>
Loading