adding format_quantity tests
This commit is contained in:
parent
76ffd7139b
commit
d1deeebf7e
@ -13,13 +13,15 @@
|
||||
# under the License.
|
||||
|
||||
import unittest
|
||||
from decimal import Decimal
|
||||
from os import path
|
||||
|
||||
import yaml
|
||||
|
||||
from kubernetes import utils, client
|
||||
from kubernetes import client, utils
|
||||
from kubernetes.client.rest import ApiException
|
||||
from kubernetes.e2e_test import base
|
||||
from kubernetes.utils import quantity
|
||||
|
||||
|
||||
class TestUtils(unittest.TestCase):
|
||||
@ -563,3 +565,70 @@ class TestUtils(unittest.TestCase):
|
||||
name="mock-pod-1", namespace=self.test_namespace, body={})
|
||||
app_api.delete_namespaced_deployment(
|
||||
name="mock", namespace=self.test_namespace, body={})
|
||||
|
||||
|
||||
class TestUtilsUnitTests(unittest.TestCase):
|
||||
|
||||
def test_format_quantity(self):
|
||||
"""Unit test for quantity.format_quantity. Testing the different SI suffixes and
|
||||
function should return the expected string"""
|
||||
|
||||
# == unknown suffixes ==
|
||||
self.assertRaises(
|
||||
ValueError, lambda: quantity.format_quantity(Decimal(1_000), "kb")
|
||||
)
|
||||
self.assertRaises(
|
||||
ValueError, lambda: quantity.format_quantity(Decimal(1_000), "ki")
|
||||
)
|
||||
self.assertRaises(
|
||||
ValueError, lambda: quantity.format_quantity(Decimal(1_000), "foo")
|
||||
)
|
||||
|
||||
# == no suffix ==
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1_000), ""), "1000")
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1_000), None), "1000")
|
||||
|
||||
# == base 1024 ==
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1024), "Ki"), "1Ki")
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1024**2), "Mi"), "1Mi")
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1024**3), "Gi"), "1Gi")
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1024**4), "Ti"), "1Ti")
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1024**5), "Pi"), "1Pi")
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1024**6), "Ei"), "1Ei")
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1024**2), "Ki"), "1024Ki")
|
||||
self.assertEqual(quantity.format_quantity(Decimal((1024**3) / 2), "Gi"), "0.5Gi")
|
||||
# Decimal((1024**3)/3) are 0.3333333333333333148296162562Gi; expecting to
|
||||
# be quantized to 0.3Gi
|
||||
self.assertEqual(
|
||||
quantity.format_quantity(
|
||||
Decimal(
|
||||
(1024**3) / 3),
|
||||
"Gi",
|
||||
quantize=Decimal(.5)),
|
||||
"0.3Gi")
|
||||
|
||||
# == base 1000 ==
|
||||
self.assertEqual(quantity.format_quantity(Decimal(0.000_000_001), "n"), "1n")
|
||||
self.assertEqual(quantity.format_quantity(Decimal(0.000_001), "u"), "1u")
|
||||
self.assertEqual(quantity.format_quantity(Decimal(0.001), "m"), "1m")
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1_000), "k"), "1k")
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1_000_000), "M"), "1M")
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1_000_000_000), "G"), "1G")
|
||||
self.assertEqual(
|
||||
quantity.format_quantity(Decimal(1_000_000_000_000), "T"), "1T"
|
||||
)
|
||||
self.assertEqual(
|
||||
quantity.format_quantity(Decimal(1_000_000_000_000_000), "P"), "1P"
|
||||
)
|
||||
self.assertEqual(
|
||||
quantity.format_quantity(Decimal(1_000_000_000_000_000_000), "E"), "1E"
|
||||
)
|
||||
self.assertEqual(quantity.format_quantity(Decimal(1_000_000), "k"), "1000k")
|
||||
# Decimal(1_000_000/3) are 333.3333333333333139307796955k; expecting to
|
||||
# be quantized to 333k
|
||||
self.assertEqual(
|
||||
quantity.format_quantity(
|
||||
Decimal(1_000_000 / 3), "k", quantize=Decimal(1000)
|
||||
),
|
||||
"333k",
|
||||
)
|
||||
|
||||
@ -120,6 +120,9 @@ def format_quantity(quantity_value, suffix, quantize=None) -> str:
|
||||
ValueError if the SI suffix is not supported.
|
||||
"""
|
||||
|
||||
if not suffix:
|
||||
return str(quantity_value)
|
||||
|
||||
if suffix.endswith("i"):
|
||||
base = 1024
|
||||
elif len(suffix) == 1:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user