Skip to content

Commit

Permalink
Adds set of static DNS packets, adjusts benchmark tests to use that d…
Browse files Browse the repository at this point in the history
…ata.
  • Loading branch information
alanedwardes committed Oct 23, 2022
1 parent 1a95999 commit 47b9327
Show file tree
Hide file tree
Showing 8 changed files with 54 additions and 76 deletions.
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.bin filter=lfs diff=lfs merge=lfs -text
4 changes: 0 additions & 4 deletions tests/Ae.Dns.Benchmarks/Ae.Dns.Benchmarks.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@
<WarningsAsErrors>true</WarningsAsErrors>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.13.2" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Ae.Dns.Tests\Ae.Dns.Tests.csproj" />
</ItemGroup>
Expand Down
63 changes: 0 additions & 63 deletions tests/Ae.Dns.Benchmarks/FromBytes.cs

This file was deleted.

11 changes: 5 additions & 6 deletions tests/Ae.Dns.Benchmarks/Program.cs
Original file line number Diff line number Diff line change
@@ -1,26 +1,25 @@
using Ae.Dns.Protocol;
using Ae.Dns.Tests;
using System;
using System.Linq;

namespace Ae.Dns.Benchmarks
{
class Program
{
public static void Main(string[] args)
{
//var summary = BenchmarkRunner.Run(typeof(Program).Assembly);

Span<byte> buffer = new byte[65527];

for (var i = 0; i < 100_000; i++)
var answers = SampleDnsPackets.AnswerBatch1;

for (var i = 0; i < 10_000; i++)
{
foreach (var message in SampleDnsPackets.AllPackets.ToArray())
foreach (var answer in answers)
{
var reader = new DnsMessage();

var offset = 0;
reader.ReadBytes(message, ref offset);
reader.ReadBytes(answer, ref offset);

offset = 0;
reader.WriteBytes(buffer, ref offset);
Expand Down
6 changes: 6 additions & 0 deletions tests/Ae.Dns.Tests/Ae.Dns.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,10 @@
<ProjectReference Include="..\..\src\Ae.Dns.Server\Ae.Dns.Server.csproj" />
</ItemGroup>

<ItemGroup>
<None Update="Files\answers1.bin">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>

</Project>
3 changes: 3 additions & 0 deletions tests/Ae.Dns.Tests/Files/answers1.bin
Git LFS file not shown
10 changes: 10 additions & 0 deletions tests/Ae.Dns.Tests/Protocol/DnsRoundTripTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,15 @@ public void TestRoundTripAnswers(byte[] answerBytes)
var answer = DnsByteExtensions.FromBytes<DnsMessage>(answerBytes);
Assert.Equal(answer, DnsByteExtensions.FromBytes<DnsMessage>(DnsByteExtensions.AllocateAndWrite(answer).ToArray()));
}

[Fact]
public void TestRoundTripAnswerBatch1()
{
foreach (var answerBytes in SampleDnsPackets.AnswerBatch1)
{
var answer = DnsByteExtensions.FromBytes<DnsMessage>(answerBytes);
Assert.Equal(answer, DnsByteExtensions.FromBytes<DnsMessage>(DnsByteExtensions.AllocateAndWrite(answer).ToArray()));
}
}
}
}
32 changes: 29 additions & 3 deletions tests/Ae.Dns.Tests/SampleDnsPackets.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;

namespace Ae.Dns.Tests
Expand All @@ -20,7 +21,7 @@ public static class SampleDnsPackets
{
public static IEnumerable<byte[]> AllPackets => Queries.Concat(Answers);

public static byte[][] Queries => new[] { Query1,Query2,Query3,Query4,Query5,Query6,Query7 };
public static byte[][] Queries => new[] { Query1, Query2, Query3, Query4, Query5, Query6, Query7 };

public static readonly byte[] Query1 = new byte[]
{
Expand Down Expand Up @@ -64,7 +65,7 @@ public static class SampleDnsPackets
118,242,1,0,0,1,0,0,0,0,0,1,3,97,112,105,9,115,110,97,112,99,114,97,102,116,2,105,111,0,0,28,0,1,0,0,41,5,192,0,0,0,0,0,0
};

public static byte[][] Answers => new[] { Answer1,Answer2,Answer3,Answer4,Answer5,Answer6,Answer7,Answer8,Answer9,Answer10 };
public static byte[][] Answers => new[] { Answer1, Answer2, Answer3, Answer4, Answer5, Answer6, Answer7, Answer8, Answer9, Answer10 };

public static readonly byte[] Answer1 = new byte[]
{
Expand Down Expand Up @@ -126,10 +127,35 @@ public static class SampleDnsPackets
0,4,129,128,0,1,0,1,0,0,0,0,4,95,115,112,102,7,109,97,105,108,103,117,110,3,111,114,103,0,0,16,0,1,192,12,0,16,0,1,0,0,0,21,1,78,205,118,61,115,112,102,49,32,105,112,52,58,50,48,57,46,54,49,46,49,53,49,46,48,47,50,52,32,105,112,52,58,49,54,54,46,55,56,46,54,56,46,48,47,50,50,32,105,112,52,58,49,57,56,46,54,49,46,50,53,52,46,48,47,50,51,32,105,112,52,58,49,57,50,46,50,51,55,46,49,53,56,46,48,47,50,51,32,105,112,52,58,50,51,46,50,53,51,46,49,56,50,46,48,47,50,51,32,105,112,52,58,49,48,52,46,49,51,48,46,57,54,46,48,47,50,56,32,105,112,52,58,49,52,54,46,50,48,46,49,49,51,46,48,47,50,52,32,105,112,52,58,49,52,54,46,50,48,46,49,57,49,46,48,47,50,52,32,105,112,52,58,49,53,57,46,49,51,53,46,50,50,52,46,48,47,50,48,32,105,112,52,58,54,57,46,55,50,46,51,50,46,48,47,50,48,127,32,105,112,52,58,49,48,52,46,49,51,48,46,49,50,50,46,48,47,50,51,32,105,112,52,58,49,52,54,46,50,48,46,49,49,50,46,48,47,50,54,32,105,112,52,58,49,54,49,46,51,56,46,49,57,50,46,48,47,50,48,32,105,112,52,58,49,52,51,46,53,53,46,50,50,52,46,48,47,50,49,32,105,112,52,58,49,52,51,46,53,53,46,50,51,50,46,48,47,50,50,32,105,112,52,58,49,53,57,46,49,49,50,46,50,52,48,46,48,47,50,48,32,126,97,108,108
};

public static readonly byte[] Answer11 = new byte []
public static readonly byte[] Answer11 = new byte[]
{
// google.com NS
0,16,129,128,0,1,0,4,0,0,0,0,6,103,111,111,103,108,101,3,99,111,109,0,0,2,0,1,192,12,0,2,0,1,0,0,82,250,0,6,3,110,115,52,192,12,192,12,0,2,0,1,0,0,82,250,0,6,3,110,115,51,192,12,192,12,0,2,0,1,0,0,82,250,0,6,3,110,115,49,192,12,192,12,0,2,0,1,0,0,82,250,0,6,3,110,115,50,192,12
};

private static IList<byte[]> ReadBatch(FileInfo fileInfo)
{
var answers = new List<byte[]>();

using (var fs = fileInfo.OpenRead())
using (var br = new BinaryReader(fs))
{
while (fs.Position < fs.Length)
{
var bufferLength = br.ReadInt32();
answers.Add(br.ReadBytes(bufferLength));
}
}

return answers;
}

private static FileInfo GetTestFile(string name)
{
var assemblyFileInfo = new FileInfo(typeof(SampleDnsPackets).Assembly.Location);
return new FileInfo(Path.Combine(assemblyFileInfo.Directory.FullName, "Files", name));
}

public static IList<byte[]> AnswerBatch1 => ReadBatch(GetTestFile("answers1.bin"));
}
}

0 comments on commit 47b9327

Please sign in to comment.