117 lines
3.1 KiB
C#
Raw Normal View History

2023-04-20 15:58:47 +02:00
using DistTestCore;
using KubernetesWorkflow;
2023-04-19 12:34:46 +02:00
using NUnit.Framework;
namespace Tests.ParallelTests
{
[TestFixture]
public class DownloadTests : DistTest
{
[Test]
2023-04-25 13:43:51 +02:00
public void ThreeNodeDownloads()
2023-04-19 12:34:46 +02:00
{
2023-04-25 13:43:51 +02:00
ParallelDownload(3, 5000.MB());
2023-04-19 12:34:46 +02:00
}
[Test]
2023-04-25 13:43:51 +02:00
public void FiveNodeDownloads()
2023-04-19 12:34:46 +02:00
{
ParallelDownload(5, 1000.MB());
}
[Test]
2023-04-25 13:43:51 +02:00
public void TenNodeDownloads()
2023-04-19 12:34:46 +02:00
{
2023-04-25 13:43:51 +02:00
ParallelDownload(10, 256.MB());
2023-04-19 12:34:46 +02:00
}
void ParallelDownload(int numberOfNodes, ByteSize filesize)
{
2023-04-25 13:43:51 +02:00
var group = SetupCodexNodes(numberOfNodes).BringOnline();
var host = SetupCodexNodes(1).BringOnline()[0];
2023-04-19 12:34:46 +02:00
2023-04-25 13:43:51 +02:00
foreach (var node in group)
2023-04-19 12:34:46 +02:00
{
2023-04-25 13:43:51 +02:00
host.ConnectToPeer(node);
2023-04-19 12:34:46 +02:00
}
var testFile = GenerateTestFile(filesize);
var contentId = host.UploadFile(testFile);
2023-04-25 13:43:51 +02:00
var list = new List<Task<TestFile?>>();
foreach (var node in group)
{
list.Add(Task.Run(() => { return node.DownloadContent(contentId); }));
}
2023-04-19 12:34:46 +02:00
2023-04-25 13:43:51 +02:00
Task.WaitAll(list.ToArray());
foreach (var task in list)
2023-04-19 12:34:46 +02:00
{
2023-04-25 13:43:51 +02:00
testFile.AssertIsEqual(task.Result);
2023-04-19 12:34:46 +02:00
}
}
}
[TestFixture]
public class UploadTests : DistTest
{
[Test]
public void ThreeNodeUploads()
2023-04-19 12:34:46 +02:00
{
2023-04-25 13:43:51 +02:00
ParallelUpload(3, 50.MB());
2023-04-19 12:34:46 +02:00
}
2023-04-20 12:43:25 +02:00
[Test]
2023-04-19 12:34:46 +02:00
public void FiveNodeUploads()
{
2023-04-25 13:43:51 +02:00
ParallelUpload(5, 750.MB());
2023-04-19 12:34:46 +02:00
}
2023-04-20 12:43:25 +02:00
[Test]
2023-04-19 12:34:46 +02:00
public void TenNodeUploads()
{
2023-04-25 13:43:51 +02:00
ParallelUpload(10, 25.MB());
2023-04-20 12:43:25 +02:00
}
void ParallelUpload(int numberOfNodes, ByteSize filesize)
{
2023-04-25 13:43:51 +02:00
var group = SetupCodexNodes(numberOfNodes).BringOnline();
var host = SetupCodexNodes(1).BringOnline()[0];
2023-04-20 12:43:25 +02:00
2023-04-25 13:43:51 +02:00
foreach (var node in group)
2023-04-20 12:43:25 +02:00
{
2023-04-25 13:43:51 +02:00
host.ConnectToPeer(node);
2023-04-20 12:43:25 +02:00
}
2023-04-25 13:43:51 +02:00
2023-04-20 12:43:25 +02:00
var testfiles = new List<TestFile>();
2023-04-25 13:43:51 +02:00
var contentIds = new List<Task<ContentId>>();
for (int i = 0; i < group.Count(); i++)
2023-04-20 12:43:25 +02:00
{
testfiles.Add(GenerateTestFile(filesize));
2023-04-25 13:43:51 +02:00
var n = i;
contentIds.Add(Task.Run(() => { return host.UploadFile(testfiles[n]); }));
2023-04-20 12:43:25 +02:00
}
2023-04-25 13:43:51 +02:00
var downloads = new List<Task<TestFile?>>();
for (int i = 0; i < group.Count(); i++)
2023-04-20 12:43:25 +02:00
{
2023-04-25 13:43:51 +02:00
var n = i;
downloads.Add(Task.Run(() => { return group[n].DownloadContent(contentIds[n].Result); }));
}
Task.WaitAll(downloads.ToArray());
for (int i = 0; i < group.Count(); i++)
{
testfiles[i].AssertIsEqual(downloads[i].Result);
2023-04-20 12:43:25 +02:00
}
2023-04-19 12:34:46 +02:00
}
}
[TestFixture]
public class MixedTests : DistTest
{
[Test]
public void OneDownloadOneUpload()
{
}
public void ThreeDownloadTwoUpload()
{
}
public void FiveDownloadFiveUpload()
{
}
}
}