Pm4ExUnit (pm4exunit v26.11.12)

Copy Markdown

Process Mining, Conformance Checking, and Temporal SLA Verification for ExUnit. The Elixir native counterpart to pm4pytest.

Usage in ExUnit Tests:

defmodule MyProcessTest do
  use ExUnit.Case
  use Pm4ExUnit

  test "order saga satisfies FSM conformance", %{pm4_session: session} do
    session |> emit_event("e1", :order_created)
    session |> emit_event("e2", :payment_processed)
    session |> emit_event("e3", :order_fulfilled)

    assert_conformance(session, [
      [:order_created, :payment_processed, :order_fulfilled]
    ], min_fitness: 1.0)
  end

  test "sla latency gate", %{pm4_session: session} do
    t0 = DateTime.utc_now()
    t1 = DateTime.add(t0, 2, :second)

    session |> emit_event("e1", :start_scan, timestamp: t0)
    session |> emit_event("e2", :finish_scan, timestamp: t1)

    assert_sla(session, :start_scan, :finish_scan, max_seconds: 5.0)
  end
end