mirror of
https://github.com/logos-storage/logos-storage-nim-cs-dist-tests.git
synced 2026-05-08 02:19:31 +00:00
* ci(docker): build dist-tests images * Update to .net 10, kubernetes client 18.0.13 Kubernetes client 18.0.13 is compatible with Kubernetes 1.34.x. The Kubernetes version is selected automatically by kubeadm in docker desktop (v1.34.1). See https://github.com/kubernetes-client/csharp#version-compatibility for a compatibility table. * Updates to support Kubernetes upgrade * bump openapi.yaml to match openapi.yaml in the logos-storage-nim docker image * bump doc to .net 10 * bump docker to .net 10 * Build image with latest tag always Always build an image with a latest tag (as well as a sha commit hash) when there's a push to master * docker image tag as "latest" only when pushing to master * Update docker image to install doctl * Remove doctl install kubeconfig is now created and uses a plain bearer token instead of using doctl as a credential mgr * Rename and remove all instances of Codex * Further remove CodexNetDeployer as it is no longer needed --------- Co-authored-by: Adam Uhlíř <adam@uhlir.dev>
77 lines
2.4 KiB
C#
77 lines
2.4 KiB
C#
using StoragePlugin;
|
|
using LogosStorageTests;
|
|
using DistTestCore;
|
|
using NUnit.Framework;
|
|
using NUnit.Framework.Interfaces;
|
|
using Utils;
|
|
|
|
namespace LogosStorageLongTests.BasicTests
|
|
{
|
|
[TestFixture]
|
|
public class LargeFileTests : LogosStorageDistTest
|
|
{
|
|
#region Abort test run after first failure
|
|
|
|
private bool stop;
|
|
|
|
[SetUp]
|
|
public void SetUp()
|
|
{
|
|
if (stop)
|
|
{
|
|
Assert.Inconclusive("Previous test failed");
|
|
}
|
|
}
|
|
|
|
[TearDown]
|
|
public void TearDown()
|
|
{
|
|
if (TestContext.CurrentContext.Result.Outcome.Status == TestStatus.Failed)
|
|
{
|
|
stop = true;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
[TestCase( 1 * 1)] // 1 MB
|
|
[TestCase( 1 * 10)]
|
|
[TestCase( 1 * 100)]
|
|
[TestCase( 1 * 1024)] // 1 GB
|
|
[TestCase( 1024 * 10)]
|
|
[TestCase( 1024 * 100)]
|
|
[TestCase( 1024 * 1024)] // 1 TB :O
|
|
[UseLongTimeouts]
|
|
public void DownloadCorrectnessTest(long size)
|
|
{
|
|
var sizeMB = size.MB();
|
|
|
|
var expectedFile = GenerateTestFile(sizeMB);
|
|
|
|
var node = StartLogosStorage(s => s.WithStorageQuota((size + 10).MB()));
|
|
|
|
var uploadStart = DateTime.UtcNow;
|
|
var cid = node.UploadFile(expectedFile);
|
|
var downloadStart = DateTime.UtcNow;
|
|
var actualFile = node.DownloadContent(cid);
|
|
var downloadFinished = DateTime.UtcNow;
|
|
|
|
expectedFile.AssertIsEqual(actualFile);
|
|
AssertTimeConstraint(uploadStart, downloadStart, downloadFinished, size);
|
|
}
|
|
|
|
private void AssertTimeConstraint(DateTime uploadStart, DateTime downloadStart, DateTime downloadFinished, long size)
|
|
{
|
|
float sizeInMB = size;
|
|
var uploadTimePerMB = (uploadStart - downloadStart) / sizeInMB;
|
|
var downloadTimePerMB = (downloadStart - downloadFinished) / sizeInMB;
|
|
|
|
Assert.That(uploadTimePerMB, Is.LessThan(LogosStorageContainerRecipe.MaxUploadTimePerMegabyte),
|
|
"MaxUploadTimePerMegabyte performance threshold breached.");
|
|
|
|
Assert.That(downloadTimePerMB, Is.LessThan(LogosStorageContainerRecipe.MaxDownloadTimePerMegabyte),
|
|
"MaxDownloadTimePerMegabyte performance threshold breached.");
|
|
}
|
|
}
|
|
}
|