diff --git a/econt_sw/testing/utils/asic_signals.py b/econt_sw/testing/utils/asic_signals.py index a4081a5..24680b8 100644 --- a/econt_sw/testing/utils/asic_signals.py +++ b/econt_sw/testing/utils/asic_signals.py @@ -4,6 +4,21 @@ import logging + +""" function to handle loading config multiple times""" + +def singleton(class_instance): + instances = {} + + def get_instance(*args, **kwargs): + key = (class_instance, tuple(args), tuple(kwargs.items())) + if key not in instances: + instances[key] = class_instance(*args, **kwargs) + return instances[key] + + return get_instance + +@singleton class ASICSignals: """ Class for handling uhal ASIC signals diff --git a/econt_sw/testing/utils/fast_command.py b/econt_sw/testing/utils/fast_command.py index 6163919..83793b3 100644 --- a/econt_sw/testing/utils/fast_command.py +++ b/econt_sw/testing/utils/fast_command.py @@ -4,6 +4,19 @@ import logging +""" Function to prevent initializing over and over """ +def singleton(class_instance): + instances = {} + + def get_instance(*args, **kwargs): + key = (class_instance, tuple(args), tuple(kwargs.items())) + if key not in instances: + instances[key] = class_instance(*args, **kwargs) + return instances[key] + + return get_instance + +@singleton class FastCommands: """Class to handle sending fast command signals over uhal""" diff --git a/econt_sw/testing/utils/io.py b/econt_sw/testing/utils/io.py index 22e74e6..897cf72 100644 --- a/econt_sw/testing/utils/io.py +++ b/econt_sw/testing/utils/io.py @@ -5,6 +5,19 @@ import logging +""" Function to prevent initializing over and over """ +def singleton(class_instance): + instances = {} + + def get_instance(*args, **kwargs): + key = (class_instance, tuple(args), tuple(kwargs.items())) + if key not in instances: + instances[key] = class_instance(*args, **kwargs) + return instances[key] + + return get_instance + +@singleton class IOBlock: """ Class to handle IO blocks via uhal """ diff --git a/econt_sw/testing/utils/link_capture.py b/econt_sw/testing/utils/link_capture.py index d13bdb1..05b85f5 100644 --- a/econt_sw/testing/utils/link_capture.py +++ b/econt_sw/testing/utils/link_capture.py @@ -5,6 +5,19 @@ import logging +""" Function to prevent initializing over and over """ +def singleton(class_instance): + instances = {} + + def get_instance(*args, **kwargs): + key = (class_instance, tuple(args), tuple(kwargs.items())) + if key not in instances: + instances[key] = class_instance(*args, **kwargs) + return instances[key] + + return get_instance + +@singleton class LinkCapture: """Class to handle multiple link captures (lcs) over uhal. Always needs the link-capture name.""" diff --git a/econt_sw/testing/utils/pll_lock_count.py b/econt_sw/testing/utils/pll_lock_count.py index d5d3203..d07229f 100644 --- a/econt_sw/testing/utils/pll_lock_count.py +++ b/econt_sw/testing/utils/pll_lock_count.py @@ -7,6 +7,19 @@ logger.setLevel(logging.INFO) from time import sleep +""" Function to prevent initializing over and over """ +def singleton(class_instance): + instances = {} + + def get_instance(*args, **kwargs): + key = (class_instance, tuple(args), tuple(kwargs.items())) + if key not in instances: + instances[key] = class_instance(*args, **kwargs) + return instances[key] + + return get_instance + +@singleton class PLLLockCount: """Class to monitor PLL_LOCK_B transition counters on FPGA""" diff --git a/econt_sw/testing/utils/stream_compare.py b/econt_sw/testing/utils/stream_compare.py index 2c39801..788e819 100644 --- a/econt_sw/testing/utils/stream_compare.py +++ b/econt_sw/testing/utils/stream_compare.py @@ -6,6 +6,19 @@ import logging +""" Function to prevent initializing over and over """ +def singleton(class_instance): + instances = {} + + def get_instance(*args, **kwargs): + key = (class_instance, tuple(args), tuple(kwargs.items())) + if key not in instances: + instances[key] = class_instance(*args, **kwargs) + return instances[key] + + return get_instance + +@singleton class StreamCompare(): """Class to handle stream compare via uhal""" def __init__(self,logLevel="",logLevelLogger=10): diff --git a/econt_sw/testing/utils/test_vectors.py b/econt_sw/testing/utils/test_vectors.py index d71265c..1ace47a 100644 --- a/econt_sw/testing/utils/test_vectors.py +++ b/econt_sw/testing/utils/test_vectors.py @@ -6,6 +6,19 @@ import logging +""" Function to prevent initializing over and over """ +def singleton(class_instance): + instances = {} + + def get_instance(*args, **kwargs): + key = (class_instance, tuple(args), tuple(kwargs.items())) + if key not in instances: + instances[key] = class_instance(*args, **kwargs) + return instances[key] + + return get_instance + +@singleton class TestVectors(): """ Class to handle test vectors """ def __init__(self,tv='testvectors',logLevel="",logLevelLogger=20):