Moves ByteSize to Utils assembly.
This commit is contained in:
parent
075d9e6ae2
commit
df6da29a69
|
@ -1,5 +1,6 @@
|
|||
using DistTestCore.Marketplace;
|
||||
using KubernetesWorkflow;
|
||||
using Utils;
|
||||
|
||||
namespace DistTestCore.Codex
|
||||
{
|
||||
|
@ -94,11 +95,11 @@ namespace DistTestCore.Codex
|
|||
}
|
||||
}
|
||||
|
||||
private long GetVolumeCapacity(CodexStartupConfig config)
|
||||
private ByteSize GetVolumeCapacity(CodexStartupConfig config)
|
||||
{
|
||||
if (config.StorageQuota != null) return config.StorageQuota.SizeInBytes;
|
||||
// Default Codex quota: 8 Gb, using 9 to be safe.
|
||||
return 9.GB().SizeInBytes;
|
||||
if (config.StorageQuota != null) return config.StorageQuota;
|
||||
// Default Codex quota: 8 Gb, using +20% to be safe.
|
||||
return 8.GB().Multiply(1.2);
|
||||
}
|
||||
|
||||
private int GetAccountIndex(MarketplaceInitialConfig marketplaceConfig)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
using DistTestCore.Marketplace;
|
||||
using DistTestCore.Metrics;
|
||||
using KubernetesWorkflow;
|
||||
using Utils;
|
||||
|
||||
namespace DistTestCore.Codex
|
||||
{
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
using Utils;
|
||||
|
||||
namespace KubernetesWorkflow
|
||||
{
|
||||
public static class ByteSizeExtensions
|
||||
{
|
||||
public static string ToSuffixNotation(this ByteSize b)
|
||||
{
|
||||
long x = 1024;
|
||||
var map = new Dictionary<long, string>
|
||||
{
|
||||
{ Pow(x, 4), "Ti" },
|
||||
{ Pow(x, 3), "Gi" },
|
||||
{ Pow(x, 2), "Mi" },
|
||||
{ (x), "Ki" },
|
||||
};
|
||||
|
||||
var bytes = b.SizeInBytes;
|
||||
foreach (var pair in map)
|
||||
{
|
||||
if (bytes > pair.Key)
|
||||
{
|
||||
double bytesD = bytes;
|
||||
double divD = pair.Key;
|
||||
double numD = Math.Ceiling(bytesD / divD);
|
||||
var v = Convert.ToInt64(numD);
|
||||
return $"{v}{pair.Value}";
|
||||
}
|
||||
}
|
||||
|
||||
return $"{bytes}";
|
||||
}
|
||||
|
||||
private static long Pow(long x, int v)
|
||||
{
|
||||
long result = 1;
|
||||
for (var i = 0; i < v; i++) result *= x;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,6 @@
|
|||
namespace KubernetesWorkflow
|
||||
using Utils;
|
||||
|
||||
namespace KubernetesWorkflow
|
||||
{
|
||||
public abstract class ContainerRecipeFactory
|
||||
{
|
||||
|
@ -97,38 +99,17 @@
|
|||
podAnnotations.Add(name, value);
|
||||
}
|
||||
|
||||
protected void AddVolume(string mountPath, long capacityBytes)
|
||||
protected void AddVolume(string mountPath, ByteSize volumeSize)
|
||||
{
|
||||
volumeMounts.Add(new VolumeMount(
|
||||
$"autovolume-{Guid.NewGuid().ToString().ToLowerInvariant()}",
|
||||
mountPath,
|
||||
FormatBytesQuantity(capacityBytes)));
|
||||
volumeSize.ToSuffixNotation()));
|
||||
}
|
||||
|
||||
protected void Additional(object userData)
|
||||
{
|
||||
additionals.Add(userData);
|
||||
}
|
||||
|
||||
private static string FormatBytesQuantity(long capacityBytes)
|
||||
{
|
||||
var map = new Dictionary<long, string>
|
||||
{
|
||||
{ (1024*1024*1024), "Gi" },
|
||||
{ (1024*1024), "Mi" },
|
||||
{ (1024), "Ki" },
|
||||
};
|
||||
|
||||
foreach (var pair in map)
|
||||
{
|
||||
if (capacityBytes > pair.Key)
|
||||
{
|
||||
var v = (capacityBytes / pair.Key) + 1;
|
||||
return $"{v}{pair.Value}";
|
||||
}
|
||||
}
|
||||
|
||||
return $"{capacityBytes * 2}Ki";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
using DistTestCore;
|
||||
using NUnit.Framework;
|
||||
using Utils;
|
||||
|
||||
namespace Tests.DownloadConnectivityTests
|
||||
{
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
using Utils;
|
||||
|
||||
namespace DistTestCore
|
||||
namespace Utils
|
||||
{
|
||||
public class ByteSize
|
||||
{
|
||||
|
||||
public ByteSize(long sizeInBytes)
|
||||
{
|
||||
if (sizeInBytes < 0) throw new ArgumentException("Cannot create ByteSize object with size less than 0. Was: " + sizeInBytes);
|
||||
|
@ -18,6 +15,13 @@ namespace DistTestCore
|
|||
return SizeInBytes / (1024 * 1024);
|
||||
}
|
||||
|
||||
public ByteSize Multiply(double factor)
|
||||
{
|
||||
double bytes = SizeInBytes;
|
||||
double result = Math.Round(bytes * factor);
|
||||
return new ByteSize(Convert.ToInt64(result));
|
||||
}
|
||||
|
||||
public override bool Equals(object? obj)
|
||||
{
|
||||
return obj is ByteSize size && SizeInBytes == size.SizeInBytes;
|
Loading…
Reference in New Issue