Spaces:
Runtime error
Runtime error
| 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() | |