Spaces:
Sleeping
Sleeping
import os | |
import unittest | |
from pm4py.objects.petri_net.importer import importer as pnml_importer | |
from pm4py.algo.simulation.playout.petri_net import algorithm as simulator | |
from tests.constants import INPUT_DATA_DIR | |
from datetime import datetime | |
class SimulationTest(unittest.TestCase): | |
def test_simulate_petrinet(self): | |
net, im, fm = pnml_importer.apply( | |
os.path.join(INPUT_DATA_DIR, "running-example.pnml")) | |
number_of_traces = 10 | |
eventlog = simulator.apply(net, im, fm, variant=simulator.Variants.BASIC_PLAYOUT, | |
parameters={ | |
simulator.Variants.BASIC_PLAYOUT.value.Parameters.NO_TRACES: number_of_traces}) | |
self.assertEqual(len(eventlog), number_of_traces) | |
case_id_default = 0 | |
last_case_id = case_id_default + number_of_traces - 1 | |
timestamp_default = 10000000 | |
self.assertEqual(eventlog[0].attributes['concept:name'], str(case_id_default)) | |
self.assertEqual(datetime.timestamp(eventlog[0][0]['time:timestamp']), timestamp_default) | |
self.assertEqual(eventlog[-1].attributes['concept:name'], str(last_case_id)) | |
def test_simulate_petrinet_start_params(self): | |
net, im, fm = pnml_importer.apply( | |
os.path.join(INPUT_DATA_DIR, "running-example.pnml")) | |
number_of_traces = 10 | |
timestamp = 50000000 | |
case_id = 5 | |
eventlog = simulator.apply(net, im, fm, variant=simulator.Variants.BASIC_PLAYOUT, | |
parameters={ | |
simulator.Variants.BASIC_PLAYOUT.value.Parameters.NO_TRACES: number_of_traces, | |
simulator.Variants.BASIC_PLAYOUT.value.Parameters.INITIAL_TIMESTAMP: | |
timestamp, | |
simulator.Variants.BASIC_PLAYOUT.value.Parameters.INITIAL_CASE_ID: case_id}) | |
self.assertEqual(len(eventlog), number_of_traces) | |
last_case_id = case_id + number_of_traces - 1 | |
self.assertEqual(eventlog[0].attributes['concept:name'], str(case_id)) | |
self.assertEqual(datetime.timestamp(eventlog[0][0]['time:timestamp']), timestamp) | |
self.assertEqual(eventlog[-1].attributes['concept:name'], str(last_case_id)) | |
if __name__ == "__main__": | |
unittest.main() | |