Skip to content
Snippets Groups Projects
test_01.py 3.65 KiB
Newer Older
import logging

logger = logging.getLogger("tester")
sh = logging.StreamHandler()
sh.setFormatter(logging.Formatter("{name}-{levelname:8}: {message}", style='{'))
logger.addHandler(sh)
logger.setLevel(logging.DEBUG)

# Put root folder in path
import sys, os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

# test import
logger.info("Testing import")
import ArchiveExtractor

# it should have been automatically initialized, check that extractors are set
logger.info("Testing auto init")
logger.debug(ArchiveExtractor._Extractors)
if None in ArchiveExtractor._Extractors:
    raise RuntimeError("ArchiveExtractor does not seems properly initialized")

# Test init()
logger.info("Testing init")
ArchiveExtractor.init(loglevel='debug')

###############################################################################
# Test findattr
logger.info("Testing findattr()")

attrs = ArchiveExtractor.findattr("*dg*dcct*current*")
logger.debug(attrs)
if len(attrs) < 1:
    raise RuntimeError("Failed to get attributes with findattr")

attrs = ArchiveExtractor.findattr("*dg*dcct*current*", db='T')
logger.debug(attrs)
if len(attrs) < 1:
    raise RuntimeError("Failed to get attributes with findattr")

###############################################################################
# Test infoattr
logger.info("Testing infoattr()")

info = ArchiveExtractor.infoattr(attrs[0], db='T')
logger.debug(info)

###############################################################################
# Test extractions

attr = ArchiveExtractor.findattr("ans/dg*dcct*current*")[0]

logger.info("Testing extract() ; scalar, nearest, timedelta")
val = ArchiveExtractor.extract(attr, "0h")
logger.debug(val)
if val is None:
    raise RuntimeError("Could not perform extraction")

logger.info("Testing extract() ; scalar, between, precise date and timedelta")
val = ArchiveExtractor.extract(attr, "1h", "2023-12-13-00:30",  method='between')
logger.debug(val)
if val is None:
    raise RuntimeError("Could not perform extraction")


logger.info("Testing extract() ; scalar, nearest, specific date")
# Test several formats
for fmt in [
        "2023-08",
        "2024-01-10",
        "2024-01-10-12:00",
        ]:
    logger.debug(fmt)
    val = ArchiveExtractor.extract(attr, fmt)
    logger.debug(val)
    if val is None:
        raise RuntimeError("Could not perform extraction")

logger.info("Testing extract() ; dict, nearest, specific date")
val = ArchiveExtractor.extract({"attr":attr, "attr2":attr}, "2023-06")
logger.debug(val)

logger.info("Testing extract() ; list, nearest, specific date")
val = ArchiveExtractor.extract(ArchiveExtractor.findattr("dg*dcct*current"), "2023-06")
logger.debug(val)


logger.info("Testing extract() ; scalar, between, timedelta")
val = ArchiveExtractor.extract(attr, "3h", method='between')
logger.debug(val)
if val is None:
    raise RuntimeError("Could not perform extraction")

logger.info("Testing extract() ; scalar, between, precise date")
val = ArchiveExtractor.extract(attr, "2023-12-13-00:30", "2023-12-13-01:30", method='between')
logger.debug(val)
if val is None:
    raise RuntimeError("Could not perform extraction")

logger.info("Testing extract() ; spectrum, nearest, precise date")
val = ArchiveExtractor.extract('ANS/DG/BPM-MANAGER/zRefOrbit', "2023-12-13-00:30")
logger.debug(val)
if val is None:
    raise RuntimeError("Could not perform extraction")

logger.info("Testing extract() ; scalar boolean, between, precise date")
val = ArchiveExtractor.extract("ans/dg/fofb-watcher/fofbrunning_x", "2024-01-29-00:30", "2024-01-29-15:30", method='between')
logger.debug(val)
if val is None:
    raise RuntimeError("Could not perform extraction")

logger.info("Test success !")