MCPcopy Index your code
hub / github.com/coder/coder / TestExperimentsMetric

Function TestExperimentsMetric

coderd/prometheusmetrics/prometheusmetrics_test.go:776–860  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

774}
775
776func TestExperimentsMetric(t *testing.T) {
777 t.Parallel()
778
779 if len(codersdk.ExperimentsSafe) == 0 {
780 t.Skip("No experiments are currently defined; skipping test.")
781 }
782
783 tests := []struct {
784 name string
785 experiments codersdk.Experiments
786 expected map[codersdk.Experiment]float64
787 }{
788 {
789 name: "Enabled experiment is exported in metrics",
790 experiments: codersdk.Experiments{
791 codersdk.ExperimentsSafe[0],
792 },
793 expected: map[codersdk.Experiment]float64{
794 codersdk.ExperimentsSafe[0]: 1,
795 },
796 },
797 {
798 name: "Disabled experiment is exported in metrics",
799 experiments: codersdk.Experiments{},
800 expected: map[codersdk.Experiment]float64{
801 codersdk.ExperimentsSafe[0]: 0,
802 },
803 },
804 {
805 name: "Unknown experiment is not exported in metrics",
806 experiments: codersdk.Experiments{codersdk.Experiment("bob")},
807 expected: map[codersdk.Experiment]float64{},
808 },
809 }
810
811 for _, tc := range tests {
812 t.Run(tc.name, func(t *testing.T) {
813 t.Parallel()
814 reg := prometheus.NewRegistry()
815
816 require.NoError(t, prometheusmetrics.Experiments(reg, tc.experiments))
817
818 out, err := reg.Gather()
819 require.NoError(t, err)
820 require.Lenf(t, out, 1, "unexpected number of registered metrics")
821
822 seen := make(map[codersdk.Experiment]float64)
823
824 for _, metric := range out[0].GetMetric() {
825 require.Equal(t, "coderd_experiments", out[0].GetName())
826
827 labels := metric.GetLabel()
828 require.Lenf(t, labels, 1, "unexpected number of labels")
829
830 experiment := codersdk.Experiment(labels[0].GetValue())
831 value := metric.GetGauge().GetValue()
832
833 seen[experiment] = value

Callers

nothing calls this directly

Calls 8

ExperimentTypeAlias · 0.92
ExperimentsFunction · 0.92
SkipMethod · 0.80
RunMethod · 0.65
LogfMethod · 0.65
EqualMethod · 0.45
GetNameMethod · 0.45
GetValueMethod · 0.45

Tested by

no test coverage detected