# `Beamchmark.Suite`
[🔗](https://github.com/membraneframework/beamchmark/blob/v1.4.2/lib/beamchmark/suite.ex#L1)

The module defines a struct representing a single run of benchmark. It is also responsible for running the
benchmark and saving/loading the results.

The results are serialized and stored in `output_dir / scenario name / delay_duration` directory, where
`scenario name` is the name of module implementing scenario (without separating dots) and `output_dir`,
`delay`, `duration` are fetched from the suite's configuration.

# `t`

```elixir
@type t() :: %Beamchmark.Suite{
  configuration: Beamchmark.Suite.Configuration.t(),
  measurements: Beamchmark.Suite.Measurements.t() | nil,
  scenario: Beamchmark.Scenario.t() | nil,
  system_info: Beamchmark.Suite.SystemInfo.t()
}
```

# `init`

```elixir
@spec init(Beamchmark.Suite.Configuration.t()) :: t()
```

# `init`

```elixir
@spec init(Beamchmark.Scenario.t(), Beamchmark.Suite.Configuration.t()) :: t()
```

# `run`

```elixir
@spec run(t()) :: t()
```

# `save`

```elixir
@spec save(t()) :: :ok
```

# `try_load_base`

```elixir
@spec try_load_base(t()) :: {:ok, t()} | {:error, File.posix()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
