Skip to content

Commit

Permalink
Merge pull request #17 from tomvil/add_sensorsCollector_tests
Browse files Browse the repository at this point in the history
Add sensorsCollector tests
  • Loading branch information
tomvil authored Oct 29, 2024
2 parents 8a41ec9 + d4aa496 commit f3ea52c
Show file tree
Hide file tree
Showing 2 changed files with 137 additions and 0 deletions.
42 changes: 42 additions & 0 deletions collectors/collector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,12 @@ func TestMain(m *testing.M) {
}
})

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

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

Expand Down Expand Up @@ -257,3 +263,39 @@ func actionsPayload() string {
}
]`
}

func sensorLiveStatsPayload() string {
return `[
{
"status": "Active",
"sensor": {
"sensor_interface_name": "Interface 1",
"sensor_interface_id": "1",
"sensor_interface_color": "#439F0A",
"href": "/wanguard-api/v1/flow_sensors/1/interfaces/1"
},
"internal_ips": "1",
"external_ips": "0",
"packets/s_in": "100",
"packets/s_out": "100",
"bits/s_in": "1000",
"bits/s_out": "1000",
"dropped_in": "0",
"dropped_out": "0",
"usage_in": "1",
"usage_out": "1",
"load": "0.00",
"cpu%": "0.00",
"ram": 128,
"start_time": {
"iso_8601": "2024-10-28 00:00:01",
"unixtime": "1730107187"
},
"server": {
"server_id": "1",
"server_name": "Server 1",
"href": "/wanguard-api/v1/servers/1"
}
}
]`
}
95 changes: 95 additions & 0 deletions collectors/sensors_collector_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
package collectors

import (
"os"
"strings"
"testing"

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

func TestSensorsCollector(t *testing.T) {
wgcClient := wgc.NewClient(os.Getenv("TEST_SERVER_URL"), "u", "p")
SensorsCollector := NewSensorsCollector(wgcClient)

metricsCount := testutil.CollectAndCount(SensorsCollector)
if metricsCount != 13 {
t.Errorf("Expected 13 metrics, got %d", metricsCount)
}

expectedMetrics := sensorsExpectedMetrics()
err := testutil.CollectAndCompare(SensorsCollector, strings.NewReader(expectedMetrics),
"wanguard_sensor_internal_ips",
"wanguard_sensor_external_ips",
"wanguard_sensor_packets_per_second_in",
"wanguard_sensor_packets_per_second_out",
"wanguard_sensor_bits_per_second_in",
"wanguard_sensor_bits_per_second_out",
"wanguard_sensor_dropped_in",
"wanguard_sensor_dropped_out",
"wanguard_sensor_usage_in",
"wanguard_sensor_usage_out",
"wanguard_sensor_load",
"wanguard_sensor_cpu",
"wanguard_sensor_ram")
if err != nil {
t.Errorf("Expected no error, got %s", err)
}
}

func sensorsExpectedMetrics() string {
return `
# HELP wanguard_sensor_bits_per_second_in Incoming bits per second
# TYPE wanguard_sensor_bits_per_second_in gauge
wanguard_sensor_bits_per_second_in{sensor_id="1",sensor_name="Interface 1"} 1000
# HELP wanguard_sensor_bits_per_second_out Outgoing bits per second
# TYPE wanguard_sensor_bits_per_second_out gauge
wanguard_sensor_bits_per_second_out{sensor_id="1",sensor_name="Interface 1"} 1000
# HELP wanguard_sensor_cpu Sensors CPU usage
# TYPE wanguard_sensor_cpu gauge
wanguard_sensor_cpu{sensor_id="1",sensor_name="Interface 1"} 0
# HELP wanguard_sensor_dropped_in Total number of dropped packets in
# TYPE wanguard_sensor_dropped_in gauge
wanguard_sensor_dropped_in{sensor_id="1",sensor_name="Interface 1"} 0
# HELP wanguard_sensor_dropped_out Total number of dropped packets out
# TYPE wanguard_sensor_dropped_out gauge
wanguard_sensor_dropped_out{sensor_id="1",sensor_name="Interface 1"} 0
# HELP wanguard_sensor_external_ips Total number of external ip addresses
# TYPE wanguard_sensor_external_ips gauge
wanguard_sensor_external_ips{sensor_id="1",sensor_name="Interface 1"} 0
# HELP wanguard_sensor_internal_ips Total number of internal ip addresses
# TYPE wanguard_sensor_internal_ips gauge
wanguard_sensor_internal_ips{sensor_id="1",sensor_name="Interface 1"} 1
# HELP wanguard_sensor_load Sensors load
# TYPE wanguard_sensor_load gauge
wanguard_sensor_load{sensor_id="1",sensor_name="Interface 1"} 0
# HELP wanguard_sensor_packets_per_second_in Incoming packets per second
# TYPE wanguard_sensor_packets_per_second_in gauge
wanguard_sensor_packets_per_second_in{sensor_id="1",sensor_name="Interface 1"} 100
# HELP wanguard_sensor_packets_per_second_out Incoming packets per second
# TYPE wanguard_sensor_packets_per_second_out gauge
wanguard_sensor_packets_per_second_out{sensor_id="1",sensor_name="Interface 1"} 100
# HELP wanguard_sensor_ram Sensors ram usage
# TYPE wanguard_sensor_ram gauge
wanguard_sensor_ram{sensor_id="1",sensor_name="Interface 1"} 128
# HELP wanguard_sensor_usage_in Interface incoming traffic usage
# TYPE wanguard_sensor_usage_in gauge
wanguard_sensor_usage_in{sensor_id="1",sensor_name="Interface 1"} 1
# HELP wanguard_sensor_usage_out Interface outgoing traffic usage
# TYPE wanguard_sensor_usage_out gauge
wanguard_sensor_usage_out{sensor_id="1",sensor_name="Interface 1"} 1
`
}

0 comments on commit f3ea52c

Please # to comment.