The outcome of Stampede.run/2.
:scenario- the scenario that ran:duration- how long it ran, in milliseconds:metrics- a map from each metric's name to its summary:- timings have
type: :timing,:count,:rate,:min,:mean,:p50,:p90,:p95,:p99and:max, with times in milliseconds - counters have
type: :counter,:countand:rate - checks have
type: :check,:count,:rate,:passed,:failedand:failed_rate, the share of checks that failed
- timings have
:timeline- one point per second of the run, each with the time it ends at (:at, in milliseconds), the number of busy:vus, and the:metricsof that second alone:thresholds- one map per limit, with:metric,:stat,:limit, the:valueit had and whether it:passed?:errors- the iterations that failed, grouped by kind of error, with a:messageand a:count, most frequent first:passed?- whether every threshold passed
Rates are per second.
Summary
Types
@type t() :: %Stampede.Result{ duration: non_neg_integer(), errors: [%{message: String.t(), count: pos_integer()}], metrics: %{optional(String.t()) => map()}, passed?: boolean(), scenario: module(), thresholds: [map()], timeline: [%{at: non_neg_integer(), vus: non_neg_integer(), metrics: map()}] }