Skip to content

Commit

Permalink
Merge pull request #13 from tomvil/add_componentsCollector_tests
Browse files Browse the repository at this point in the history
Add componentsCollector tests
  • Loading branch information
tomvil authored Oct 28, 2024
2 parents 70c2afb + 5054c74 commit dd4454e
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 0 deletions.
66 changes: 66 additions & 0 deletions collectors/collector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,42 @@ func TestMain(m *testing.M) {
}
})

mux.HandleFunc("/wanguard-api/v1/bgp_connectors", func(w http.ResponseWriter, r *http.Request) {
if _, err := w.Write([]byte(bgpConnectorsPayload())); err != nil {
log.Errorln(err.Error())
}
})

mux.HandleFunc("/wanguard-api/v1/bgp_connectors/1/status", func(w http.ResponseWriter, r *http.Request) {
if _, err := w.Write([]byte(`{"status": "Active"}`)); err != nil {
log.Errorln(err.Error())
}
})

mux.HandleFunc("/wanguard-api/v1/filters", func(w http.ResponseWriter, r *http.Request) {
if _, err := w.Write([]byte(filtersPayload())); err != nil {
log.Errorln(err.Error())
}
})

mux.HandleFunc("/wanguard-api/v1/packet_filters/1/status", func(w http.ResponseWriter, r *http.Request) {
if _, err := w.Write([]byte(`{"status": "Active"}`)); err != nil {
log.Errorln(err.Error())
}
})

mux.HandleFunc("/wanguard-api/v1/sensors", func(w http.ResponseWriter, r *http.Request) {
if _, err := w.Write([]byte(sensorsPayload())); err != nil {
log.Errorln(err.Error())
}
})

mux.HandleFunc("/wanguard-api/v1/flow_sensors/1/status", func(w http.ResponseWriter, r *http.Request) {
if _, err := w.Write([]byte(`{"status": "Active"}`)); err != nil {
log.Errorln(err.Error())
}
})

server := httptest.NewServer(mux)
defer server.Close()

Expand Down Expand Up @@ -87,3 +123,33 @@ func firewallRulesPayload() string {
}
]`
}

func bgpConnectorsPayload() string {
return `[
{
"bgp_connector_id": "1",
"bgp_connector_name": "BGP Connector 1",
"href": "/wanguard-api/v1/bgp_connectors/1"
}
]`
}

func filtersPayload() string {
return `[
{
"packet_filter_id": "1",
"filter_name": "Packet Filter 1",
"href": "/wanguard-api/v1/packet_filters/1"
}
]`
}

func sensorsPayload() string {
return `[
{
"flow_sensor_id": "1",
"sensor_name": "Flow Sensor 1",
"href": "/wanguard-api/v1/flow_sensors/1"
}
]`
}
37 changes: 37 additions & 0 deletions collectors/components_collecor_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package collectors

import (
"os"
"strings"
"testing"

"github.com/prometheus/client_golang/prometheus/testutil"
wgc "github.com/tomvil/wanguard_exporter/client"
)

func TestComponentsCollector(t *testing.T) {
wgcClient := wgc.NewClient(os.Getenv("TEST_SERVER_URL"), "u", "p")
ComponentsCollector := NewComponentsCollector(wgcClient)

metricsCount := testutil.CollectAndCount(ComponentsCollector)
if metricsCount != 3 {
t.Errorf("Expected 3 metric, got %d", metricsCount)
}

expectedMetrics := componentsExpectedMetrics()
err := testutil.CollectAndCompare(ComponentsCollector, strings.NewReader(expectedMetrics),
"wanguard_component_status")
if err != nil {
t.Errorf("Expected no error, got %s", err)
}
}

func componentsExpectedMetrics() string {
return `
# HELP wanguard_component_status Status of the component
# TYPE wanguard_component_status gauge
wanguard_component_status{component_category="bgp_connector",component_name="BGP Connector 1"} 1
wanguard_component_status{component_category="filter",component_name="Packet Filter 1"} 1
wanguard_component_status{component_category="sensor",component_name="Flow Sensor 1"} 1
`
}

0 comments on commit dd4454e

Please # to comment.