process_mining / pm4py /tests /xes_impexp_test.py
linpershey's picture
Add 'pm4py/' from commit '80970016c5e1e79af7c37df0dd88e17587fe7bcf'
b4ba3ec
raw
history blame
3.45 kB
from pm4py.objects.log.importer.xes import importer as xes_importer
from pm4py.objects.log.exporter.xes import exporter as xes_exporter
from tests.constants import INPUT_DATA_DIR, OUTPUT_DATA_DIR, PROBLEMATIC_XES_DIR, COMPRESSED_INPUT_DATA
import logging
import unittest
import importlib.util
import os
class XesImportExportTest(unittest.TestCase):
def test_importExportXEStoXES(self):
# to avoid static method warnings in tests,
# that by construction of the unittest package have to be expressed in such way
self.dummy_variable = "dummy_value"
log = xes_importer.apply(os.path.join(INPUT_DATA_DIR, "running-example.xes"))
xes_exporter.apply(log, os.path.join(OUTPUT_DATA_DIR, "running-example-exported.xes"))
log_imported_after_export = xes_importer.apply(
os.path.join(OUTPUT_DATA_DIR, "running-example-exported.xes"))
self.assertEqual(len(log), len(log_imported_after_export))
os.remove(os.path.join(OUTPUT_DATA_DIR, "running-example-exported.xes"))
def test_importExportProblematicLogs(self):
# to avoid static method warnings in tests,
# that by construction of the unittest package have to be expressed in such way
self.dummy_variable = "dummy_value"
logs = os.listdir(PROBLEMATIC_XES_DIR)
for log_name in logs:
log_full_path = os.path.join(PROBLEMATIC_XES_DIR, log_name)
try:
output_log_path = os.path.join(OUTPUT_DATA_DIR, log_name)
log = xes_importer.apply(log_full_path)
xes_exporter.apply(log, output_log_path)
log_imported_after_export = xes_importer.apply(output_log_path)
self.assertEqual(len(log), len(log_imported_after_export))
os.remove(output_log_path)
except SyntaxError as e:
logging.info("SyntaxError on log " + str(log_name) + ": " + str(e))
def test_importExportXESfromGZIP_imp1(self):
# to avoid static method warnings in tests,
# that by construction of the unittest package have to be expressed in such way
self.dummy_variable = "dummy_value"
log = xes_importer.apply(os.path.join(COMPRESSED_INPUT_DATA, "01_running-example.xes.gz"))
xes_exporter.apply(log, os.path.join(OUTPUT_DATA_DIR, "01-running-example.xes"),
parameters={xes_exporter.Variants.ETREE.value.Parameters.COMPRESS: True})
os.remove(os.path.join(OUTPUT_DATA_DIR, "01-running-example.xes.gz"))
def test_importXESfromGZIP_imp2(self):
# to avoid static method warnings in tests,
# that by construction of the unittest package have to be expressed in such way
self.dummy_variable = "dummy_value"
log = xes_importer.apply(os.path.join(COMPRESSED_INPUT_DATA, "01_running-example.xes.gz"))
del log
def test_rustxes_xes_import(self):
if importlib.util.find_spec("rustxes"):
log = xes_importer.apply(os.path.join(INPUT_DATA_DIR, "receipt.xes"), variant=xes_importer.Variants.RUSTXES)
self.assertEqual(len(log), 1434)
def test_rustxes_xesgz_import(self):
if importlib.util.find_spec("rustxes"):
log = xes_importer.apply(os.path.join(INPUT_DATA_DIR, "bpic2012.xes.gz"), variant=xes_importer.Variants.RUSTXES)
self.assertEqual(len(log), 13087)
if __name__ == "__main__":
unittest.main()