Skip to content

Commit e10c89d

Browse files
committed
chore(limits): modify limits unit verification
1 parent db75777 commit e10c89d

2 files changed

Lines changed: 20 additions & 18 deletions

File tree

rootfs/api/serializers.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,12 @@
2323

2424
PROCTYPE_MATCH = re.compile(r'^(?P<type>[a-z0-9]+(\-[a-z0-9]+)*)$')
2525
PROCTYPE_MISMATCH_MSG = "Process types can only contain lowercase alphanumeric characters"
26-
MEMLIMIT_MATCH = re.compile(
27-
r'^(?P<mem>([0-9]+(MB|KB|GB|[BKMG])|0))$', re.IGNORECASE)
28-
CPUSHARE_MATCH = re.compile(
29-
r'^(?P<cpu>([-+]?[0-9]*\.?[0-9]+[m]?))$')
26+
MEMLIMIT_MATCH = re.compile(r'^(?P<mem>([1-9][0-9]*[mgMG]))$', re.IGNORECASE)
27+
CPUSHARE_MATCH = re.compile(r'^(?P<cpu>([-+]?[1-9][0-9]*[m]?))$')
3028
TAGVAL_MATCH = re.compile(r'^(?:[a-zA-Z\d][-\.\w]{0,61})?[a-zA-Z\d]$')
3129
CONFIGKEY_MATCH = re.compile(r'^[a-z_]+[a-z0-9_]*$', re.IGNORECASE)
3230
TERMINATION_GRACE_PERIOD_MATCH = re.compile(r'^[0-9]*$')
33-
VOLUME_SIZE_MATCH = re.compile(
34-
r'^(?P<mem>([0-9]+(MB|KB|GB|[BKMG])|0))$', re.IGNORECASE)
31+
VOLUME_SIZE_MATCH = re.compile(r'^(?P<volume>([1-9][0-9]*[mgMG]))$', re.IGNORECASE)
3532
VOLUME_PATH = re.compile(r'^\/(\w+\/?)+$', re.IGNORECASE)
3633

3734
PROBE_SCHEMA = {
@@ -292,7 +289,7 @@ def validate_memory(data):
292289
if not re.match(MEMLIMIT_MATCH, str(value)):
293290
raise serializers.ValidationError(
294291
"Memory limit format: <number><unit>, "
295-
"where unit = B, K, M or G")
292+
"where unit = M or G")
296293

297294
return data
298295

rootfs/api/tests/test_limits.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,30 @@ def tearDown(self):
2727

2828
def test_memlimit_regex(self, mock_requests):
2929
"""Tests the regex for unit format used by "drycc limits:set --memory=<limit>"."""
30-
self.assertTrue(MEMLIMIT_MATCH.match("0"))
31-
self.assertTrue(MEMLIMIT_MATCH.match("200GB"))
32-
self.assertTrue(MEMLIMIT_MATCH.match("20MB"))
33-
self.assertTrue(MEMLIMIT_MATCH.match("20gb"))
34-
self.assertTrue(MEMLIMIT_MATCH.match("0m"))
30+
self.assertTrue(MEMLIMIT_MATCH.match("2G"))
31+
self.assertTrue(MEMLIMIT_MATCH.match("2M"))
32+
self.assertTrue(MEMLIMIT_MATCH.match("20G"))
33+
self.assertTrue(MEMLIMIT_MATCH.match("20M"))
34+
self.assertTrue(MEMLIMIT_MATCH.match("2g"))
35+
self.assertTrue(MEMLIMIT_MATCH.match("2m"))
36+
self.assertTrue(MEMLIMIT_MATCH.match("20g"))
37+
self.assertTrue(MEMLIMIT_MATCH.match("20m"))
38+
self.assertFalse(MEMLIMIT_MATCH.match("0m"))
3539
self.assertFalse(MEMLIMIT_MATCH.match("20MK"))
3640
self.assertFalse(MEMLIMIT_MATCH.match("10"))
3741
self.assertFalse(MEMLIMIT_MATCH.match("20gK"))
3842
self.assertFalse(MEMLIMIT_MATCH.match("mb"))
43+
self.assertFalse(MEMLIMIT_MATCH.match("0"))
3944

4045
def test_cpushare_regex(self, mock_requests):
4146
"""Tests the regex for unit format used by "drycc limits:set --cpu=<limit>"."""
42-
self.assertTrue(CPUSHARE_MATCH.match("0"))
4347
self.assertTrue(CPUSHARE_MATCH.match("500m"))
44-
self.assertTrue(CPUSHARE_MATCH.match("0.5"))
45-
self.assertTrue(CPUSHARE_MATCH.match(".123"))
46-
self.assertTrue(CPUSHARE_MATCH.match("1.123"))
47-
self.assertTrue(CPUSHARE_MATCH.match("200m"))
48-
self.assertTrue(CPUSHARE_MATCH.match("0"))
48+
self.assertTrue(CPUSHARE_MATCH.match("2"))
49+
self.assertTrue(CPUSHARE_MATCH.match("12"))
50+
self.assertFalse(CPUSHARE_MATCH.match("0.5"))
51+
self.assertFalse(CPUSHARE_MATCH.match(".123"))
52+
self.assertFalse(CPUSHARE_MATCH.match("1.123"))
53+
self.assertFalse(CPUSHARE_MATCH.match("0"))
4954
self.assertFalse(CPUSHARE_MATCH.match("20MK"))
5055
self.assertFalse(CPUSHARE_MATCH.match("20gK"))
5156
self.assertFalse(CPUSHARE_MATCH.match("m"))

0 commit comments

Comments
 (0)