feat(meshviewer): Add gateway tq and clients owe (#225)
Signed-off-by: Florian Maurer <f.maurer@outlook.de>
This commit is contained in:
parent
c3588c9e05
commit
22f67e2d4d
|
@ -19,7 +19,7 @@ type WifiLink struct {
|
||||||
// BatmanLink struct
|
// BatmanLink struct
|
||||||
type BatmanLink struct {
|
type BatmanLink struct {
|
||||||
Lastseen float64 `json:"lastseen"`
|
Lastseen float64 `json:"lastseen"`
|
||||||
Tq int `json:"tq"`
|
TQ int `json:"tq"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// BabelLink struct
|
// BabelLink struct
|
||||||
|
|
|
@ -18,6 +18,7 @@ type Statistics struct {
|
||||||
GatewayIPv4 string `json:"gateway,omitempty"`
|
GatewayIPv4 string `json:"gateway,omitempty"`
|
||||||
GatewayIPv6 string `json:"gateway6,omitempty"`
|
GatewayIPv6 string `json:"gateway6,omitempty"`
|
||||||
GatewayNexthop string `json:"gateway_nexthop,omitempty"`
|
GatewayNexthop string `json:"gateway_nexthop,omitempty"`
|
||||||
|
GatewayTQ float64 `json:"gateway_tq,omitempty"`
|
||||||
Processes struct {
|
Processes struct {
|
||||||
Total uint32 `json:"total"`
|
Total uint32 `json:"total"`
|
||||||
Running uint32 `json:"running"`
|
Running uint32 `json:"running"`
|
||||||
|
@ -63,9 +64,9 @@ type Clients struct {
|
||||||
Wifi uint32 `json:"wifi"`
|
Wifi uint32 `json:"wifi"`
|
||||||
Wifi24 uint32 `json:"wifi24"`
|
Wifi24 uint32 `json:"wifi24"`
|
||||||
Wifi5 uint32 `json:"wifi5"`
|
Wifi5 uint32 `json:"wifi5"`
|
||||||
Owe uint32 `json:"owe"`
|
OWE uint32 `json:"owe"`
|
||||||
Owe24 uint32 `json:"owe24"`
|
OWE24 uint32 `json:"owe24"`
|
||||||
Owe5 uint32 `json:"owe5"`
|
OWE5 uint32 `json:"owe5"`
|
||||||
Total uint32 `json:"total"`
|
Total uint32 `json:"total"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,9 +20,9 @@ func TestStatistics(t *testing.T) {
|
||||||
assert.Equal(uint32(35), obj.Clients.Wifi)
|
assert.Equal(uint32(35), obj.Clients.Wifi)
|
||||||
assert.Equal(uint32(30), obj.Clients.Wifi24)
|
assert.Equal(uint32(30), obj.Clients.Wifi24)
|
||||||
assert.Equal(uint32(8), obj.Clients.Wifi5)
|
assert.Equal(uint32(8), obj.Clients.Wifi5)
|
||||||
assert.Equal(uint32(10), obj.Clients.Owe)
|
assert.Equal(uint32(10), obj.Clients.OWE)
|
||||||
assert.Equal(uint32(5), obj.Clients.Owe24)
|
assert.Equal(uint32(5), obj.Clients.OWE24)
|
||||||
assert.Equal(uint32(6), obj.Clients.Owe5)
|
assert.Equal(uint32(6), obj.Clients.OWE5)
|
||||||
}
|
}
|
||||||
|
|
||||||
func testfile(name string, obj interface{}) {
|
func testfile(name string, obj interface{}) {
|
||||||
|
|
|
@ -41,9 +41,9 @@ func GlobalStatsFields(name string, stats *runtime.GlobalStats) []graphigo.Metri
|
||||||
{Name: name + ".clients.wifi", Value: stats.ClientsWifi},
|
{Name: name + ".clients.wifi", Value: stats.ClientsWifi},
|
||||||
{Name: name + ".clients.wifi24", Value: stats.ClientsWifi24},
|
{Name: name + ".clients.wifi24", Value: stats.ClientsWifi24},
|
||||||
{Name: name + ".clients.wifi5", Value: stats.ClientsWifi5},
|
{Name: name + ".clients.wifi5", Value: stats.ClientsWifi5},
|
||||||
{Name: name + ".clients.owe", Value: stats.ClientsOwe},
|
{Name: name + ".clients.owe", Value: stats.ClientsOWE},
|
||||||
{Name: name + ".clients.owe24", Value: stats.ClientsOwe24},
|
{Name: name + ".clients.owe24", Value: stats.ClientsOWE24},
|
||||||
{Name: name + ".clients.owe5", Value: stats.ClientsOwe5},
|
{Name: name + ".clients.owe5", Value: stats.ClientsOWE5},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -112,9 +112,9 @@ func (c *Connection) InsertNode(node *runtime.Node) {
|
||||||
addField("clients.wifi", stats.Clients.Wifi)
|
addField("clients.wifi", stats.Clients.Wifi)
|
||||||
addField("clients.wifi24", stats.Clients.Wifi24)
|
addField("clients.wifi24", stats.Clients.Wifi24)
|
||||||
addField("clients.wifi5", stats.Clients.Wifi5)
|
addField("clients.wifi5", stats.Clients.Wifi5)
|
||||||
addField("clients.owe", stats.Clients.Owe)
|
addField("clients.owe", stats.Clients.OWE)
|
||||||
addField("clients.owe24", stats.Clients.Owe24)
|
addField("clients.owe24", stats.Clients.OWE24)
|
||||||
addField("clients.owe5", stats.Clients.Owe5)
|
addField("clients.owe5", stats.Clients.OWE5)
|
||||||
addField("clients.total", stats.Clients.Total)
|
addField("clients.total", stats.Clients.Total)
|
||||||
addField("memory.buffers", stats.Memory.Buffers)
|
addField("memory.buffers", stats.Memory.Buffers)
|
||||||
addField("memory.cached", stats.Memory.Cached)
|
addField("memory.cached", stats.Memory.Cached)
|
||||||
|
|
|
@ -48,9 +48,9 @@ func GlobalStatsFields(stats *runtime.GlobalStats) map[string]interface{} {
|
||||||
"clients.wifi": stats.ClientsWifi,
|
"clients.wifi": stats.ClientsWifi,
|
||||||
"clients.wifi24": stats.ClientsWifi24,
|
"clients.wifi24": stats.ClientsWifi24,
|
||||||
"clients.wifi5": stats.ClientsWifi5,
|
"clients.wifi5": stats.ClientsWifi5,
|
||||||
"clients.owe": stats.ClientsOwe,
|
"clients.owe": stats.ClientsOWE,
|
||||||
"clients.owe24": stats.ClientsOwe24,
|
"clients.owe24": stats.ClientsOWE24,
|
||||||
"clients.owe5": stats.ClientsOwe5,
|
"clients.owe5": stats.ClientsOWE5,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,9 +43,9 @@ func (conn *Connection) InsertNode(node *runtime.Node) {
|
||||||
"clients.wifi": stats.Clients.Wifi,
|
"clients.wifi": stats.Clients.Wifi,
|
||||||
"clients.wifi24": stats.Clients.Wifi24,
|
"clients.wifi24": stats.Clients.Wifi24,
|
||||||
"clients.wifi5": stats.Clients.Wifi5,
|
"clients.wifi5": stats.Clients.Wifi5,
|
||||||
"clients.owe": stats.Clients.Owe,
|
"clients.owe": stats.Clients.OWE,
|
||||||
"clients.owe24": stats.Clients.Owe24,
|
"clients.owe24": stats.Clients.OWE24,
|
||||||
"clients.owe5": stats.Clients.Owe5,
|
"clients.owe5": stats.Clients.OWE5,
|
||||||
"clients.total": stats.Clients.Total,
|
"clients.total": stats.Clients.Total,
|
||||||
"memory.buffers": stats.Memory.Buffers,
|
"memory.buffers": stats.Memory.Buffers,
|
||||||
"memory.cached": stats.Memory.Cached,
|
"memory.cached": stats.Memory.Cached,
|
||||||
|
|
|
@ -83,7 +83,7 @@ func TestToInflux(t *testing.T) {
|
||||||
"a-interface-mac": {
|
"a-interface-mac": {
|
||||||
Neighbours: map[string]data.BatmanLink{
|
Neighbours: map[string]data.BatmanLink{
|
||||||
"BAFF1E5": {
|
"BAFF1E5": {
|
||||||
Tq: 204,
|
TQ: 204,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -38,12 +38,12 @@ func TestTransform(t *testing.T) {
|
||||||
Batadv: map[string]data.BatadvNeighbours{
|
Batadv: map[string]data.BatadvNeighbours{
|
||||||
"node:a:mac:wifi": {
|
"node:a:mac:wifi": {
|
||||||
Neighbours: map[string]data.BatmanLink{
|
Neighbours: map[string]data.BatmanLink{
|
||||||
"node:b:mac:wifi": {Tq: 153},
|
"node:b:mac:wifi": {TQ: 153},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"node:a:mac:lan": {
|
"node:a:mac:lan": {
|
||||||
Neighbours: map[string]data.BatmanLink{
|
Neighbours: map[string]data.BatmanLink{
|
||||||
"node:b:mac:lan": {Tq: 51},
|
"node:b:mac:lan": {TQ: 51},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -73,7 +73,7 @@ func TestTransform(t *testing.T) {
|
||||||
Batadv: map[string]data.BatadvNeighbours{
|
Batadv: map[string]data.BatadvNeighbours{
|
||||||
"node:c:mac:lan": {
|
"node:c:mac:lan": {
|
||||||
Neighbours: map[string]data.BatmanLink{
|
Neighbours: map[string]data.BatmanLink{
|
||||||
"node:b:mac:lan": {Tq: 102},
|
"node:b:mac:lan": {TQ: 102},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -104,12 +104,12 @@ func TestTransform(t *testing.T) {
|
||||||
Batadv: map[string]data.BatadvNeighbours{
|
Batadv: map[string]data.BatadvNeighbours{
|
||||||
"node:b:mac:lan": {
|
"node:b:mac:lan": {
|
||||||
Neighbours: map[string]data.BatmanLink{
|
Neighbours: map[string]data.BatmanLink{
|
||||||
"node:c:mac:lan": {Tq: 204},
|
"node:c:mac:lan": {TQ: 204},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"node:b:mac:wifi": {
|
"node:b:mac:wifi": {
|
||||||
Neighbours: map[string]data.BatmanLink{
|
Neighbours: map[string]data.BatmanLink{
|
||||||
"node:a:mac:wifi": {Tq: 204},
|
"node:a:mac:wifi": {TQ: 204},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -140,12 +140,12 @@ func TestTransform(t *testing.T) {
|
||||||
Batadv: map[string]data.BatadvNeighbours{
|
Batadv: map[string]data.BatadvNeighbours{
|
||||||
"node:d:mac:lan": {
|
"node:d:mac:lan": {
|
||||||
Neighbours: map[string]data.BatmanLink{
|
Neighbours: map[string]data.BatmanLink{
|
||||||
"node:c:mac:lan": {Tq: 204},
|
"node:c:mac:lan": {TQ: 204},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"node:d:mac:wifi": {
|
"node:d:mac:wifi": {
|
||||||
Neighbours: map[string]data.BatmanLink{
|
Neighbours: map[string]data.BatmanLink{
|
||||||
"node:a:mac:wifi": {Tq: 204},
|
"node:a:mac:wifi": {TQ: 204},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -22,6 +22,9 @@ type Node struct {
|
||||||
ClientsWifi24 uint32 `json:"clients_wifi24"`
|
ClientsWifi24 uint32 `json:"clients_wifi24"`
|
||||||
ClientsWifi5 uint32 `json:"clients_wifi5"`
|
ClientsWifi5 uint32 `json:"clients_wifi5"`
|
||||||
ClientsOthers uint32 `json:"clients_other"`
|
ClientsOthers uint32 `json:"clients_other"`
|
||||||
|
ClientsOWE uint32 `json:"clients_owe"`
|
||||||
|
ClientsOWE24 uint32 `json:"clients_owe24"`
|
||||||
|
ClientsOWE5 uint32 `json:"clients_owe5"`
|
||||||
RootFSUsage float64 `json:"rootfs_usage"`
|
RootFSUsage float64 `json:"rootfs_usage"`
|
||||||
LoadAverage float64 `json:"loadavg"`
|
LoadAverage float64 `json:"loadavg"`
|
||||||
MemoryUsage *float64 `json:"memory_usage,omitempty"`
|
MemoryUsage *float64 `json:"memory_usage,omitempty"`
|
||||||
|
@ -29,6 +32,7 @@ type Node struct {
|
||||||
GatewayNexthop string `json:"gateway_nexthop,omitempty"`
|
GatewayNexthop string `json:"gateway_nexthop,omitempty"`
|
||||||
GatewayIPv4 string `json:"gateway,omitempty"`
|
GatewayIPv4 string `json:"gateway,omitempty"`
|
||||||
GatewayIPv6 string `json:"gateway6,omitempty"`
|
GatewayIPv6 string `json:"gateway6,omitempty"`
|
||||||
|
GatewayTQ float64 `json:"gateway_tq,omitempty"`
|
||||||
NodeID string `json:"node_id"`
|
NodeID string `json:"node_id"`
|
||||||
MAC string `json:"mac"`
|
MAC string `json:"mac"`
|
||||||
Addresses []string `json:"addresses"`
|
Addresses []string `json:"addresses"`
|
||||||
|
@ -117,6 +121,9 @@ func NewNode(nodes *runtime.Nodes, n *runtime.Node) *Node {
|
||||||
node.Clients = statistic.Clients.Total
|
node.Clients = statistic.Clients.Total
|
||||||
node.ClientsWifi24 = statistic.Clients.Wifi24
|
node.ClientsWifi24 = statistic.Clients.Wifi24
|
||||||
node.ClientsWifi5 = statistic.Clients.Wifi5
|
node.ClientsWifi5 = statistic.Clients.Wifi5
|
||||||
|
node.ClientsOWE = statistic.Clients.OWE
|
||||||
|
node.ClientsOWE24 = statistic.Clients.OWE24
|
||||||
|
node.ClientsOWE5 = statistic.Clients.OWE5
|
||||||
|
|
||||||
clientsWifi := node.ClientsWifi24 + node.ClientsWifi5
|
clientsWifi := node.ClientsWifi24 + node.ClientsWifi5
|
||||||
if node.Clients == 0 {
|
if node.Clients == 0 {
|
||||||
|
|
|
@ -97,7 +97,7 @@ func (builder *graphBuilder) readNodes(nodes map[string]*runtime.Node) {
|
||||||
for targetAddress, link := range batadvNeighbours.Neighbours {
|
for targetAddress, link := range batadvNeighbours.Neighbours {
|
||||||
if targetID, found := builder.macToID[targetAddress]; found {
|
if targetID, found := builder.macToID[targetAddress]; found {
|
||||||
_, vpn := vpnInterface[sourceMAC]
|
_, vpn := vpnInterface[sourceMAC]
|
||||||
builder.addLink(targetID, sourceID, link.Tq, vpn)
|
builder.addLink(targetID, sourceID, link.TQ, vpn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -159,7 +159,7 @@ func (builder *graphBuilder) extract() ([]*GraphNode, []*GraphLink) {
|
||||||
return cache.Nodes, links
|
return cache.Nodes, links
|
||||||
}
|
}
|
||||||
|
|
||||||
func (builder *graphBuilder) addLink(targetID string, sourceID string, linkTq int, vpn bool) {
|
func (builder *graphBuilder) addLink(targetID string, sourceID string, linkTQ int, vpn bool) {
|
||||||
// Sort IDs to generate the key
|
// Sort IDs to generate the key
|
||||||
var key string
|
var key string
|
||||||
if strings.Compare(sourceID, targetID) > 0 {
|
if strings.Compare(sourceID, targetID) > 0 {
|
||||||
|
@ -169,8 +169,8 @@ func (builder *graphBuilder) addLink(targetID string, sourceID string, linkTq in
|
||||||
}
|
}
|
||||||
|
|
||||||
var tq float32
|
var tq float32
|
||||||
if linkTq > 0 {
|
if linkTQ > 0 {
|
||||||
tq = float32(1.0 / (float32(linkTq) / 255.0))
|
tq = float32(1.0 / (float32(linkTQ) / 255.0))
|
||||||
}
|
}
|
||||||
|
|
||||||
if link, ok := builder.links[key]; !ok {
|
if link, ok := builder.links[key]; !ok {
|
||||||
|
|
|
@ -30,8 +30,10 @@ type Statistics struct {
|
||||||
MemoryUsage *float64 `json:"memory_usage,omitempty"`
|
MemoryUsage *float64 `json:"memory_usage,omitempty"`
|
||||||
Uptime float64 `json:"uptime,omitempty"`
|
Uptime float64 `json:"uptime,omitempty"`
|
||||||
Idletime float64 `json:"idletime,omitempty"`
|
Idletime float64 `json:"idletime,omitempty"`
|
||||||
|
GatewayNexthop string `json:"gateway_nexthop,omitempty"`
|
||||||
GatewayIPv4 string `json:"gateway,omitempty"`
|
GatewayIPv4 string `json:"gateway,omitempty"`
|
||||||
GatewayIPv6 string `json:"gateway6,omitempty"`
|
GatewayIPv6 string `json:"gateway6,omitempty"`
|
||||||
|
GatewayTQ float64 `json:"gateway_tq,omitempty"`
|
||||||
Processes struct {
|
Processes struct {
|
||||||
Total uint32 `json:"total"`
|
Total uint32 `json:"total"`
|
||||||
Running uint32 `json:"running"`
|
Running uint32 `json:"running"`
|
||||||
|
@ -52,6 +54,7 @@ func NewStatistics(stats *data.Statistics, isOnline bool) *Statistics {
|
||||||
NodeID: stats.NodeID,
|
NodeID: stats.NodeID,
|
||||||
GatewayIPv4: stats.GatewayIPv4,
|
GatewayIPv4: stats.GatewayIPv4,
|
||||||
GatewayIPv6: stats.GatewayIPv6,
|
GatewayIPv6: stats.GatewayIPv6,
|
||||||
|
GatewayTQ: stats.GatewayTQ,
|
||||||
RootFsUsage: stats.RootFsUsage,
|
RootFsUsage: stats.RootFsUsage,
|
||||||
LoadAverage: stats.LoadAverage,
|
LoadAverage: stats.LoadAverage,
|
||||||
Uptime: stats.Uptime,
|
Uptime: stats.Uptime,
|
||||||
|
|
|
@ -47,12 +47,12 @@ func TestOutput(t *testing.T) {
|
||||||
Batadv: map[string]data.BatadvNeighbours{
|
Batadv: map[string]data.BatadvNeighbours{
|
||||||
"node:a:mac:wifi": {
|
"node:a:mac:wifi": {
|
||||||
Neighbours: map[string]data.BatmanLink{
|
Neighbours: map[string]data.BatmanLink{
|
||||||
"node:b:mac:wifi": {Tq: 153},
|
"node:b:mac:wifi": {TQ: 153},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"node:a:mac:lan": {
|
"node:a:mac:lan": {
|
||||||
Neighbours: map[string]data.BatmanLink{
|
Neighbours: map[string]data.BatmanLink{
|
||||||
"node:b:mac:lan": {Tq: 51},
|
"node:b:mac:lan": {TQ: 51},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -124,7 +124,7 @@ func (nodes *Nodes) NodeLinks(node *Node) (result []Link) {
|
||||||
SourceAddress: sourceMAC,
|
SourceAddress: sourceMAC,
|
||||||
TargetID: neighbourID,
|
TargetID: neighbourID,
|
||||||
TargetAddress: neighbourMAC,
|
TargetAddress: neighbourMAC,
|
||||||
TQ: float32(link.Tq) / 255.0,
|
TQ: float32(link.TQ) / 255.0,
|
||||||
}
|
}
|
||||||
|
|
||||||
if neighbour.Nodeinfo != nil {
|
if neighbour.Nodeinfo != nil {
|
||||||
|
|
|
@ -214,7 +214,7 @@ func TestLinksNodes(t *testing.T) {
|
||||||
"f4:f2:6d:d7:a3:0b": {
|
"f4:f2:6d:d7:a3:0b": {
|
||||||
Neighbours: map[string]data.BatmanLink{
|
Neighbours: map[string]data.BatmanLink{
|
||||||
"f4:f2:6d:d7:a3:0a": {
|
"f4:f2:6d:d7:a3:0a": {
|
||||||
Tq: 204, Lastseen: 0.42,
|
TQ: 204, Lastseen: 0.42,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -15,9 +15,9 @@ type GlobalStats struct {
|
||||||
ClientsWifi uint32
|
ClientsWifi uint32
|
||||||
ClientsWifi24 uint32
|
ClientsWifi24 uint32
|
||||||
ClientsWifi5 uint32
|
ClientsWifi5 uint32
|
||||||
ClientsOwe uint32
|
ClientsOWE uint32
|
||||||
ClientsOwe24 uint32
|
ClientsOWE24 uint32
|
||||||
ClientsOwe5 uint32
|
ClientsOWE5 uint32
|
||||||
Gateways uint32
|
Gateways uint32
|
||||||
Nodes uint32
|
Nodes uint32
|
||||||
|
|
||||||
|
@ -83,9 +83,9 @@ func (s *GlobalStats) Add(node *Node) {
|
||||||
s.ClientsWifi24 += stats.Clients.Wifi24
|
s.ClientsWifi24 += stats.Clients.Wifi24
|
||||||
s.ClientsWifi5 += stats.Clients.Wifi5
|
s.ClientsWifi5 += stats.Clients.Wifi5
|
||||||
s.ClientsWifi += stats.Clients.Wifi
|
s.ClientsWifi += stats.Clients.Wifi
|
||||||
s.ClientsOwe24 += stats.Clients.Owe24
|
s.ClientsOWE24 += stats.Clients.OWE24
|
||||||
s.ClientsOwe5 += stats.Clients.Owe5
|
s.ClientsOWE5 += stats.Clients.OWE5
|
||||||
s.ClientsOwe += stats.Clients.Owe
|
s.ClientsOWE += stats.Clients.OWE
|
||||||
}
|
}
|
||||||
if node.IsGateway() {
|
if node.IsGateway() {
|
||||||
s.Gateways++
|
s.Gateways++
|
||||||
|
|
Loading…
Reference in New Issue