defmodule Chaperon.API.OptionParser do @moduledoc """ HTTP API option parser behaviour that can be implemented to customize, extend and modify any incoming web request options to be used when scheduling new load tests. Is expected to return a load test configuration to be run and used by `Chaperon.Master.schedule_load_test/1`. """ @callback parse_options(%{options: Map.t(), test: String.t()}) :: {:ok, Chaperon.LoadTest.lt_conf(), Map.t()} | {:ok, [{Chaperon.LoadTest.lt_conf(), Map.t()}]} | {:error, String.t()} end defmodule Chaperon.API.OptionParser.Default do @moduledoc """ Default option parser that uses the given `test` and `options` values to be used as the load test module to run with the given runtime options. """ alias Chaperon.API.OptionParser @behaviour OptionParser @impl OptionParser def parse_options(args) do lt_mod = args[:test] |> String.split(".") |> Module.concat() options = args[:options] {:ok, lt_mod, options} end end