seperated out rule and job id generation
This commit is contained in:
@ -19,7 +19,7 @@ from core.correctness.vars import VALID_RECIPE_NAME_CHARS, \
|
||||
SWEEP_JUMP, SWEEP_START, SWEEP_STOP, get_drt_imp_msg
|
||||
from core.correctness.validation import valid_string, check_type, \
|
||||
check_implementation, valid_list, valid_dict
|
||||
from functionality.naming import generate_id
|
||||
from functionality.naming import generate_rule_id
|
||||
|
||||
|
||||
class BaseRecipe:
|
||||
@ -524,7 +524,7 @@ def create_rule(pattern:BasePattern, recipe:BaseRecipe,
|
||||
key = (type(pattern).__name__, type(recipe).__name__)
|
||||
if (key) in all_rules:
|
||||
return all_rules[key](
|
||||
generate_id(prefix="Rule_"),
|
||||
generate_rule_id(),
|
||||
pattern,
|
||||
recipe
|
||||
)
|
||||
|
@ -12,7 +12,7 @@ from core.correctness.vars import EVENT_PATH, EVENT_RULE, EVENT_TYPE, \
|
||||
EVENT_TYPE_WATCHDOG, JOB_CREATE_TIME, JOB_EVENT, JOB_ID, JOB_PATTERN, \
|
||||
JOB_RECIPE, JOB_REQUIREMENTS, JOB_RULE, JOB_STATUS, JOB_TYPE, \
|
||||
STATUS_QUEUED, WATCHDOG_BASE, WATCHDOG_HASH
|
||||
from functionality.naming import generate_id
|
||||
from functionality.naming import generate_job_id
|
||||
|
||||
|
||||
# mig trigger keyword replacements
|
||||
@ -88,7 +88,7 @@ def create_job(job_type:str, event:Dict[str,Any], extras:Dict[Any,Any]={}
|
||||
"""Function to create a MEOW job dictionary."""
|
||||
job_dict = {
|
||||
#TODO compress event?
|
||||
JOB_ID: generate_id(prefix="job_"),
|
||||
JOB_ID: generate_job_id(),
|
||||
JOB_EVENT: event,
|
||||
JOB_TYPE: job_type,
|
||||
JOB_PATTERN: event[EVENT_RULE].pattern.name,
|
||||
|
@ -11,7 +11,7 @@ from core.correctness.vars import CHAR_LOWERCASE, CHAR_UPPERCASE
|
||||
|
||||
|
||||
#TODO Make this guaranteed unique
|
||||
def generate_id(prefix:str="", length:int=16, existing_ids:List[str]=[],
|
||||
def _generate_id(prefix:str="", length:int=16, existing_ids:List[str]=[],
|
||||
charset:str=CHAR_UPPERCASE+CHAR_LOWERCASE, attempts:int=24):
|
||||
random_length = max(length - len(prefix), 0)
|
||||
for _ in range(attempts):
|
||||
@ -21,3 +21,9 @@ def generate_id(prefix:str="", length:int=16, existing_ids:List[str]=[],
|
||||
return id
|
||||
raise ValueError(f"Could not generate ID unique from '{existing_ids}' "
|
||||
f"using values '{charset}' and length of '{length}'.")
|
||||
|
||||
def generate_rule_id():
|
||||
_generate_id(prefix="rule_")
|
||||
|
||||
def generate_job_id():
|
||||
_generate_id(prefix="job_")
|
||||
|
@ -23,7 +23,7 @@ from functionality.meow import create_event, create_job, \
|
||||
KEYWORD_BASE, KEYWORD_DIR, KEYWORD_EXTENSION, KEYWORD_FILENAME, \
|
||||
KEYWORD_JOB, KEYWORD_PATH, KEYWORD_PREFIX, KEYWORD_REL_DIR, \
|
||||
KEYWORD_REL_PATH
|
||||
from functionality.naming import generate_id
|
||||
from functionality.naming import _generate_id
|
||||
from functionality.parameterisation import parameterize_jupyter_notebook, \
|
||||
parameterize_python_script
|
||||
from functionality.process_io import wait
|
||||
@ -565,29 +565,29 @@ class NamingTests(unittest.TestCase):
|
||||
|
||||
# Test that generate_id creates unique ids
|
||||
def testGenerateIDWorking(self)->None:
|
||||
id = generate_id()
|
||||
id = _generate_id()
|
||||
self.assertEqual(len(id), 16)
|
||||
for i in range(len(id)):
|
||||
self.assertIn(id[i], CHAR_UPPERCASE+CHAR_LOWERCASE)
|
||||
|
||||
# In extrememly rare cases this may fail due to randomness in algorithm
|
||||
new_id = generate_id(existing_ids=[id])
|
||||
new_id = _generate_id(existing_ids=[id])
|
||||
self.assertNotEqual(id, new_id)
|
||||
|
||||
another_id = generate_id(length=32)
|
||||
another_id = _generate_id(length=32)
|
||||
self.assertEqual(len(another_id), 32)
|
||||
|
||||
again_id = generate_id(charset="a")
|
||||
again_id = _generate_id(charset="a")
|
||||
for i in range(len(again_id)):
|
||||
self.assertIn(again_id[i], "a")
|
||||
|
||||
with self.assertRaises(ValueError):
|
||||
generate_id(length=2, charset="a", existing_ids=["aa"])
|
||||
_generate_id(length=2, charset="a", existing_ids=["aa"])
|
||||
|
||||
prefix_id = generate_id(length=4, prefix="Test")
|
||||
prefix_id = _generate_id(length=4, prefix="Test")
|
||||
self.assertEqual(prefix_id, "Test")
|
||||
|
||||
prefix_id = generate_id(prefix="Test")
|
||||
prefix_id = _generate_id(prefix="Test")
|
||||
self.assertEqual(len(prefix_id), 16)
|
||||
self.assertTrue(prefix_id.startswith("Test"))
|
||||
|
||||
|
Reference in New Issue
Block a user