Skip to content

Commit 42c7504

Browse files
author
ladeak
committed
Some more tests, typo fixes
1 parent 87c8167 commit 42c7504

5 files changed

Lines changed: 100 additions & 8 deletions

File tree

tests/CHttp.Tests/Http/CHttpFunctionalTests.cs

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,17 +167,17 @@ public async Task CookieContainer_CookiesPersistedAcrossSessions()
167167
await host.StartAsync(TestContext.Current.CancellationToken);
168168
var console = new TestConsolePerWrite();
169169
var writer = new ProgressingConsoleWriter(new TextBufferedProcessor(), console);
170-
var MemoryFileSystem = new MemoryFileSystem();
170+
var memoryFileSystem = new MemoryFileSystem();
171171

172-
var client = await CommandFactory.CreateRootCommand(writer, fileSystem: MemoryFileSystem)
172+
var client = await CommandFactory.CreateRootCommand(writer, fileSystem: memoryFileSystem)
173173
.Parse("--method GET --no-certificate-validation --uri https://localhost:5011 --http-version 2 --cookie-container cookies.json")
174174
.InvokeAsync(cancellationToken: TestContext.Current.CancellationToken);
175175

176-
var client2 = await CommandFactory.CreateRootCommand(writer, fileSystem: MemoryFileSystem)
176+
var client2 = await CommandFactory.CreateRootCommand(writer, fileSystem: memoryFileSystem)
177177
.Parse("--method GET --no-certificate-validation --uri https://localhost:5011 --http-version 2 --cookie-container cookies.json").InvokeAsync(cancellationToken: TestContext.Current.CancellationToken);
178178

179179
Assert.True(cookieAttached);
180-
Assert.True(MemoryFileSystem.Exists(Path.Join(Environment.CurrentDirectory, "cookies.json")));
180+
Assert.True(memoryFileSystem.Exists(Path.Join(Environment.CurrentDirectory, "cookies.json")));
181181
}
182182

183183
[Fact]
@@ -326,6 +326,29 @@ public async Task DecompressResponse()
326326
Assert.Contains($"Status: OK Version: 2.0 Encoding: utf-8{Environment.NewLine}Date:{DateReplacement}{Environment.NewLine}Server:Kestrel{Environment.NewLine}{Environment.NewLine}test{Environment.NewLine}https://localhost:5011/ 4 B 00:0", console.Text);
327327
}
328328

329+
[Fact]
330+
public async Task Diff_FunctionalTest()
331+
{
332+
using var host = HttpServer.CreateHostBuilder(context => context.Response.WriteAsync("test"), HttpProtocols.Http2);
333+
await host.StartAsync(TestContext.Current.CancellationToken);
334+
var console = new TestConsolePerWrite(filterDate: DateReplacement);
335+
var memoryFileSystem = new MemoryFileSystem();
336+
337+
var client0 = await CommandFactory.CreateRootCommand(fileSystem: memoryFileSystem)
338+
.Parse("perf --method GET -v 2 -c 1 -n 100 --no-certificate-validation -o session0.json --uri https://localhost:5011")
339+
.InvokeAsync(cancellationToken: TestContext.Current.CancellationToken);
340+
var client1 = await CommandFactory.CreateRootCommand(fileSystem: memoryFileSystem)
341+
.Parse("perf --method GET -v 2 -c 1 -n 100 --no-certificate-validation -o session1.json --uri https://localhost:5011")
342+
.InvokeAsync(cancellationToken: TestContext.Current.CancellationToken);
343+
344+
var client = await CommandFactory.CreateRootCommand(console: console, fileSystem: memoryFileSystem)
345+
.Parse($"diff --files session0.json --files session0.json")
346+
.InvokeAsync(cancellationToken: TestContext.Current.CancellationToken)
347+
.WaitAsync(TimeSpan.FromSeconds(10), TestContext.Current.CancellationToken);
348+
349+
Assert.Contains("probability, the base session's true mean latency is", console.Text);
350+
}
351+
329352
private class Request
330353
{
331354
public string? Data { get; set; }

tests/CHttp.Tests/Performance/CHttpDiffFunctionalTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using CHttp.Data;
33
using CHttp.Performance.Data;
44
using CHttp.Performance.Statitics;
5+
using CHttp.Tests.Performance.Statistics;
56

67
namespace CHttp.Tests.Performance;
78

@@ -287,4 +288,22 @@ public async Task DisplayingMultipleHistogram()
287288
Assert.Contains(" 89.100 ms ##", console.Text);
288289
Assert.Contains(" 99.000 ms ##", console.Text);
289290
}
291+
292+
[Fact]
293+
public async Task DisplayBayesianComparison()
294+
{
295+
var console = new TestConsoleAsOuput();
296+
var fileSystem = new MemoryFileSystem();
297+
var (session0, session1) = StatisticsCalculatorTests.GetSessions(100, 110, 1, 5, 100, 100);
298+
299+
await PerformanceFileHandler.SaveAsync(fileSystem, Path.Join(Environment.CurrentDirectory, "session0.json"), session0);
300+
await PerformanceFileHandler.SaveAsync(fileSystem, Path.Join(Environment.CurrentDirectory, "session1.json"), session1);
301+
302+
var client = await CommandFactory.CreateRootCommand(console: console, fileSystem: fileSystem)
303+
.Parse($"diff --files session0.json --files session1.json")
304+
.InvokeAsync(cancellationToken: TestContext.Current.CancellationToken)
305+
.WaitAsync(TimeSpan.FromSeconds(10), TestContext.Current.CancellationToken);
306+
307+
Assert.Contains("With 100.0% probability, the base session's true mean latency is lower than compared session's.", console.Text);
308+
}
290309
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using CHttp.Performance.Statitics;
2+
3+
namespace CHttp.Tests.Performance.Statistics;
4+
5+
public class DiffPrinterTests
6+
{
7+
[Fact]
8+
public void PrintBayesian_Higher()
9+
{
10+
var console = new TestConsoleAsOuput();
11+
var sut = new DiffPrinter(console);
12+
var (session0, session1) = StatisticsCalculatorTests.GetSessions(100, 90, 0, 0);
13+
sut.Compare(session0, session1);
14+
Assert.Contains("probability, the base session's true mean latency is higher than compared session's", console.Text);
15+
}
16+
17+
[Fact]
18+
public void PrintBayesian_Lower()
19+
{
20+
var console = new TestConsoleAsOuput();
21+
var sut = new DiffPrinter(console);
22+
var (session0, session1) = StatisticsCalculatorTests.GetSessions(90, 100, 0, 0);
23+
sut.Compare(session0, session1);
24+
Assert.Contains("probability, the base session's true mean latency is lower than compared session's", console.Text);
25+
}
26+
}

tests/CHttp.Tests/Performance/Statistics/StatisticsCalculatorTests.cs

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,30 @@ public static bool Equal(double expected, double actual, int precision)
105105
return Equals(expectedRounded, actualRounded);
106106
}
107107

108+
[Fact]
109+
public void CalculateBayesianProbability_NoData()
110+
{
111+
var (session0, session1) = GetSessions(100, 100, 0, 0, summaryCount0: 99, summaryCount1: 99);
112+
var result = StatisticsCalculator.CalculateBayesianProbability(session0, session1, new Random(0));
113+
Assert.Null(result);
114+
115+
(session0, session1) = GetSessions(100, 100, 0, 0, summaryCount0: 100, summaryCount1: 99);
116+
result = StatisticsCalculator.CalculateBayesianProbability(session0, session1, new Random(0));
117+
Assert.Null(result);
118+
119+
(session0, session1) = GetSessions(100, 100, 0, 0, summaryCount0: 99, summaryCount1: 100);
120+
result = StatisticsCalculator.CalculateBayesianProbability(session0, session1, new Random(0));
121+
Assert.Null(result);
122+
123+
(session0, session1) = GetSessions(100, 100, 0, 0, summaryCount0: 101, summaryCount1: 100);
124+
result = StatisticsCalculator.CalculateBayesianProbability(session0, session1, new Random(0));
125+
Assert.Null(result);
126+
127+
(session0, session1) = GetSessions(100, 100, 0, 0, summaryCount0: 50, summaryCount1: 50);
128+
result = StatisticsCalculator.CalculateBayesianProbability(session0, session1, new Random(0));
129+
Assert.Null(result);
130+
}
131+
108132
[Fact]
109133
public void CalculateBayesianProbability_NoVariance()
110134
{
@@ -224,19 +248,19 @@ public void CalculateBayesianProbability_LargeValuesWithLargeVariance()
224248
Assert.True(Equal(0.77, result.Value, 2));
225249
}
226250

227-
private (PerformanceMeasurementResults, PerformanceMeasurementResults) GetSessions(int duration0, int duration1, int variance0, int variance1)
251+
internal static (PerformanceMeasurementResults, PerformanceMeasurementResults) GetSessions(int duration0, int duration1, int variance0, int variance1, int summaryCount0 = 1000, int summaryCount1 = 1000)
228252
{
229253
List<Summary> summaries0 = new List<Summary>();
230254
List<Summary> summaries1 = new List<Summary>();
231255
int halfVariance0 = variance0 / 2;
232256
int halfVariance1 = variance1 / 2;
233-
for (int i = 0; i < 1000; i++)
257+
for (int i = 0; i < summaryCount0; i++)
234258
{
235259
int totalDuration = variance0 == 0 ? duration0 : duration0 + (i % variance0) - halfVariance0;
236260
summaries0.Add(new Summary("url", new DateTime(2026, 06, 01, 0, 0, 0, DateTimeKind.Utc), TimeSpan.FromMilliseconds(totalDuration)) { ErrorCode = ErrorType.None, HttpStatusCode = 200 });
237261
}
238262

239-
for (int i = 0; i < 1000; i++)
263+
for (int i = 0; i < summaryCount1; i++)
240264
{
241265
int totalDuration = variance1 == 0 ? duration1 : duration1 + (i % variance1) - halfVariance1;
242266
summaries1.Add(new Summary("url", new DateTime(2026, 06, 01, 0, 0, 0, DateTimeKind.Utc), TimeSpan.FromMilliseconds(totalDuration)) { ErrorCode = ErrorType.None, HttpStatusCode = 200 });

tests/CHttp.Tests/TestConsoleAsOuput.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace CHttp.Tests;
55

6-
public class TestConsoleAsOuput : IConsole
6+
public sealed class TestConsoleAsOuput : IConsole
77
{
88
public bool CursorVisible { get; set; }
99
private StringBuilder _sb = new StringBuilder();

0 commit comments

Comments
 (0)