Eric 13d453d5ed
chore: Docker updates to support release tests in logos-storage-nim, and remove Codex references (#124)
* 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>
2026-04-17 15:03:22 +10:00

85 lines
2.4 KiB
C#

using LogosStorageClient;
using LogosStorageTests;
using NUnit.Framework;
using Utils;
namespace ExperimentalTests.BasicTests
{
[TestFixture]
public class PyramidTests : LogosStorageDistTest
{
[Test]
[CreateTranscript(nameof(PyramidTest))]
public void PyramidTest()
{
var size = 5.MB();
var numberOfLayers = 3;
var bottomLayer = StartLayers(numberOfLayers);
var cids = UploadFiles(bottomLayer, size);
DownloadAllFilesFromEachNodeInLayer(bottomLayer, cids);
}
private List<IStorageNode> StartLayers(int numberOfLayers)
{
var layer = new List<IStorageNode>();
layer.Add(StartLogosStorage(s => s.WithName("Top")));
for (var i = 0; i < numberOfLayers; i++)
{
var newLayer = new List<IStorageNode>();
foreach (var node in layer)
{
newLayer.AddRange(StartLogosStorage(2, s => s.WithBootstrapNode(node).WithName("Layer[" + i + "]")));
}
layer.Clear();
layer.AddRange(newLayer);
}
return layer;
}
private ContentId[] UploadFiles(List<IStorageNode> layer, ByteSize size)
{
var uploadTasks = new List<Task<ContentId>>();
foreach (var node in layer)
{
uploadTasks.Add(Task.Run(() =>
{
var file = GenerateTestFile(size);
return node.UploadFile(file);
}));
}
var cids = uploadTasks.Select(t =>
{
t.Wait();
return t.Result;
}).ToArray();
return cids;
}
private void DownloadAllFilesFromEachNodeInLayer(List<IStorageNode> layer, ContentId[] cids)
{
var downloadTasks = new List<Task>();
foreach (var node in layer)
{
downloadTasks.Add(Task.Run(() =>
{
var dlCids = RandomUtils.Shuffled(cids);
foreach (var cid in dlCids)
{
node.DownloadContent(cid);
}
}));
}
Task.WaitAll(downloadTasks.ToArray());
}
}
}