public void Humanize_PowerOfTen_WithoutSpace_NoB() { Assert.Equal("0", ByteUnits.Humanize(0, spaceBeforeUnit: false, removeByteUnit: true)); Assert.Equal("500", ByteUnits.Humanize(500, spaceBeforeUnit: false)); Assert.Equal("1K", ByteUnits.Humanize(ByteUnits.KiloBytes, spaceBeforeUnit: false, removeByteUnit: true)); Assert.Equal("1.5K", ByteUnits.Humanize(ByteUnits.KiloBytes + ByteUnits.KiloBytes / 2, spaceBeforeUnit: false, removeByteUnit: true)); Assert.Equal("1M", ByteUnits.Humanize(ByteUnits.MegaBytes, spaceBeforeUnit: false, removeByteUnit: true)); Assert.Equal("1.5M", ByteUnits.Humanize(ByteUnits.MegaBytes + ByteUnits.MegaBytes / 2, spaceBeforeUnit: false, removeByteUnit: true)); Assert.Equal("1G", ByteUnits.Humanize(ByteUnits.GigaBytes, spaceBeforeUnit: false, removeByteUnit: true)); Assert.Equal("1.5G", ByteUnits.Humanize(ByteUnits.GigaBytes + ByteUnits.GigaBytes / 2, spaceBeforeUnit: false, removeByteUnit: true)); Assert.Equal("1T", ByteUnits.Humanize(ByteUnits.TeraBytes, spaceBeforeUnit: false, removeByteUnit: true)); Assert.Equal("1.5T", ByteUnits.Humanize(ByteUnits.TeraBytes + ByteUnits.TeraBytes / 2, spaceBeforeUnit: false, removeByteUnit: true)); Assert.Equal("1P", ByteUnits.Humanize(ByteUnits.PetaBytes, spaceBeforeUnit: false, removeByteUnit: true)); Assert.Equal("1.5P", ByteUnits.Humanize(ByteUnits.PetaBytes + ByteUnits.PetaBytes / 2, spaceBeforeUnit: false, removeByteUnit: true)); Assert.Equal("1E", ByteUnits.Humanize(ByteUnits.ExaBytes, spaceBeforeUnit: false, removeByteUnit: true)); Assert.Equal("1.5E", ByteUnits.Humanize(ByteUnits.ExaBytes + ByteUnits.ExaBytes / 2, spaceBeforeUnit: false, removeByteUnit: true)); // Verify that negative numbers are not supported. Assert.Throws <ArgumentException>(() => ByteUnits.Humanize(-1, spaceBeforeUnit: false, removeByteUnit: true)); }
public void Humanize_PowerOfTen_WithSpace() { Assert.Equal("0", ByteUnits.Humanize(0)); Assert.Equal("500", ByteUnits.Humanize(500)); Assert.Equal("1 KB", ByteUnits.Humanize(ByteUnits.KiloBytes)); Assert.Equal("1.5 KB", ByteUnits.Humanize(ByteUnits.KiloBytes + ByteUnits.KiloBytes / 2)); Assert.Equal("1 MB", ByteUnits.Humanize(ByteUnits.MegaBytes)); Assert.Equal("1.5 MB", ByteUnits.Humanize(ByteUnits.MegaBytes + ByteUnits.MegaBytes / 2)); Assert.Equal("1 GB", ByteUnits.Humanize(ByteUnits.GigaBytes)); Assert.Equal("1.5 GB", ByteUnits.Humanize(ByteUnits.GigaBytes + ByteUnits.GigaBytes / 2)); Assert.Equal("1 TB", ByteUnits.Humanize(ByteUnits.TeraBytes)); Assert.Equal("1.5 TB", ByteUnits.Humanize(ByteUnits.TeraBytes + ByteUnits.TeraBytes / 2)); Assert.Equal("1 PB", ByteUnits.Humanize(ByteUnits.PetaBytes)); Assert.Equal("1.5 PB", ByteUnits.Humanize(ByteUnits.PetaBytes + ByteUnits.PetaBytes / 2)); Assert.Equal("1 EB", ByteUnits.Humanize(ByteUnits.ExaBytes)); Assert.Equal("1.5 EB", ByteUnits.Humanize(ByteUnits.ExaBytes + ByteUnits.ExaBytes / 2)); // Verify that negative numbers are not supported. Assert.Throws <ArgumentException>(() => ByteUnits.Humanize(-1)); }
public void Humanize_PowerOfTwo_WithSpace_NoB() { Assert.Equal("0", ByteUnits.Humanize(0, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("500", ByteUnits.Humanize(500, powerOfTwo: true)); Assert.Equal("1000", ByteUnits.Humanize(1000, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("1 Ki", ByteUnits.Humanize(ByteUnits.KibiBytes, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("1.5 Ki", ByteUnits.Humanize(ByteUnits.KibiBytes + ByteUnits.KibiBytes / 2, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("1 Mi", ByteUnits.Humanize(ByteUnits.MebiBytes, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("1.5 Mi", ByteUnits.Humanize(ByteUnits.MebiBytes + ByteUnits.MebiBytes / 2, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("1 Gi", ByteUnits.Humanize(ByteUnits.GibiBytes, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("1.5 Gi", ByteUnits.Humanize(ByteUnits.GibiBytes + ByteUnits.GibiBytes / 2, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("1 Ti", ByteUnits.Humanize(ByteUnits.TebiBytes, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("1.5 Ti", ByteUnits.Humanize(ByteUnits.TebiBytes + ByteUnits.TebiBytes / 2, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("1 Pi", ByteUnits.Humanize(ByteUnits.PebiBytes, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("1.5 Pi", ByteUnits.Humanize(ByteUnits.PebiBytes + ByteUnits.PebiBytes / 2, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("1 Ei", ByteUnits.Humanize(ByteUnits.ExbiBytes, powerOfTwo: true, removeByteUnit: true)); Assert.Equal("1.5 Ei", ByteUnits.Humanize(ByteUnits.ExbiBytes + ByteUnits.ExbiBytes / 2, powerOfTwo: true, removeByteUnit: true)); // Verify that negative numbers are not supported. Assert.Throws <ArgumentException>(() => ByteUnits.Humanize(-1, powerOfTwo: true, removeByteUnit: true)); }
/// <summary> /// Validates the options. /// </summary> /// <param name="clusterDefinition">The cluster definition.</param> /// <exception cref="ClusterDefinitionException">Thrown if the definition is not valid.</exception> internal void Validate(ClusterDefinition clusterDefinition) { Covenant.Requires <ArgumentNullException>(clusterDefinition != null, nameof(clusterDefinition)); var minioOptionsPrefix = $"{nameof(ClusterDefinition.Storage)}.{nameof(ClusterDefinition.Storage.Minio)}"; if (!clusterDefinition.Nodes.Any(n => n.Labels.Minio)) { if (clusterDefinition.Kubernetes.AllowPodsOnControlPlane.GetValueOrDefault() == true) { foreach (var node in clusterDefinition.Nodes) { node.Labels.MinioInternal = true; } } else { foreach (var node in clusterDefinition.Workers) { node.Labels.MinioInternal = true; } } } else { foreach (var node in clusterDefinition.Nodes.Where(n => n.Labels.Minio)) { node.Labels.MinioInternal = true; } } var serverCount = clusterDefinition.Nodes.Where(n => n.Labels.MinioInternal).Count(); if (serverCount * VolumesPerNode < 4) { throw new ClusterDefinitionException($"Minio requires at least [4] volumes within the cluster. Increase [{minioOptionsPrefix}.{nameof(MinioOptions.VolumesPerNode)}] so the number of nodes hosting Minio times [{VolumesPerNode}] is at least [4]."); } var minOsDiskAfterMinio = ByteUnits.Parse(KubeConst.MinimumOsDiskAfterMinio); foreach (var node in clusterDefinition.Nodes.Where(node => node.Labels.MinioInternal)) { var osDisk = ByteUnits.Parse(node.GetDataDiskSize(clusterDefinition)); var minioVolumes = ByteUnits.Parse(VolumeSize) * VolumesPerNode; if (osDisk - minioVolumes < minOsDiskAfterMinio) { throw new ClusterDefinitionException($"Node [{node.Name}] Operating System (boot) disk is too small. Increase this to at least [{ByteUnits.Humanize(minOsDiskAfterMinio + minioVolumes, powerOfTwo: true, spaceBeforeUnit: false)}]."); } } }