[TRA-4189] Traffic Volume in GB for General Status and telemetry (#696)

This commit is contained in:
Gustavo Massaneiro
2022-01-26 05:49:42 -03:00
committed by GitHub
parent a9a61edd50
commit 843ac722c9
4 changed files with 43 additions and 6 deletions

View File

@@ -117,8 +117,6 @@ func startReadingChannel(outputItems <-chan *tapApi.OutputChannelItem, extension
} }
for item := range outputItems { for item := range outputItems {
providers.EntryAdded()
extension := extensionsMap[item.Protocol.Name] extension := extensionsMap[item.Protocol.Name]
resolvedSource, resolvedDestionation := resolveIP(item.ConnectionInfo) resolvedSource, resolvedDestionation := resolveIP(item.ConnectionInfo)
mizuEntry := extension.Dissector.Analyze(item, resolvedSource, resolvedDestionation) mizuEntry := extension.Dissector.Analyze(item, resolvedSource, resolvedDestionation)
@@ -147,6 +145,9 @@ func startReadingChannel(outputItems <-chan *tapApi.OutputChannelItem, extension
if err != nil { if err != nil {
panic(err) panic(err)
} }
providers.EntryAdded(len(data))
connection.SendText(string(data)) connection.SendText(string(data))
servicemap.GetInstance().NewTCPEntry(mizuEntry.Source, mizuEntry.Destination, &item.Protocol) servicemap.GetInstance().NewTCPEntry(mizuEntry.Source, mizuEntry.Destination, &item.Protocol)

View File

@@ -7,6 +7,7 @@ import (
type GeneralStats struct { type GeneralStats struct {
EntriesCount int EntriesCount int
EntriesVolumeInGB float64
FirstEntryTimestamp int FirstEntryTimestamp int
LastEntryTimestamp int LastEntryTimestamp int
} }
@@ -21,8 +22,9 @@ func GetGeneralStats() GeneralStats {
return generalStats return generalStats
} }
func EntryAdded() { func EntryAdded(size int) {
generalStats.EntriesCount++ generalStats.EntriesCount++
generalStats.EntriesVolumeInGB += float64(size) / (1 << 30)
currentTimestamp := int(time.Now().Unix()) currentTimestamp := int(time.Now().Unix())
@@ -32,5 +34,3 @@ func EntryAdded() {
generalStats.LastEntryTimestamp = currentTimestamp generalStats.LastEntryTimestamp = currentTimestamp
} }

View File

@@ -12,6 +12,10 @@ func TestNoEntryAddedCount(t *testing.T) {
if entriesStats.EntriesCount != 0 { if entriesStats.EntriesCount != 0 {
t.Errorf("unexpected result - expected: %v, actual: %v", 0, entriesStats.EntriesCount) t.Errorf("unexpected result - expected: %v, actual: %v", 0, entriesStats.EntriesCount)
} }
if entriesStats.EntriesVolumeInGB != 0 {
t.Errorf("unexpected result - expected: %v, actual: %v", 0, entriesStats.EntriesVolumeInGB)
}
} }
func TestEntryAddedCount(t *testing.T) { func TestEntryAddedCount(t *testing.T) {
@@ -20,7 +24,7 @@ func TestEntryAddedCount(t *testing.T) {
for _, entriesCount := range tests { for _, entriesCount := range tests {
t.Run(fmt.Sprintf("%d", entriesCount), func(t *testing.T) { t.Run(fmt.Sprintf("%d", entriesCount), func(t *testing.T) {
for i := 0; i < entriesCount; i++ { for i := 0; i < entriesCount; i++ {
providers.EntryAdded() providers.EntryAdded(0)
} }
entriesStats := providers.GetGeneralStats() entriesStats := providers.GetGeneralStats()
@@ -29,7 +33,38 @@ func TestEntryAddedCount(t *testing.T) {
t.Errorf("unexpected result - expected: %v, actual: %v", entriesCount, entriesStats.EntriesCount) t.Errorf("unexpected result - expected: %v, actual: %v", entriesCount, entriesStats.EntriesCount)
} }
if entriesStats.EntriesVolumeInGB != 0 {
t.Errorf("unexpected result - expected: %v, actual: %v", 0, entriesStats.EntriesVolumeInGB)
}
t.Cleanup(providers.ResetGeneralStats) t.Cleanup(providers.ResetGeneralStats)
}) })
} }
} }
func TestEntryAddedVolume(t *testing.T) {
// 6 bytes + 4 bytes
tests := [][]byte{[]byte("volume"), []byte("test")}
var expectedEntriesCount int
var expectedVolumeInGB float64
for _, data := range tests {
t.Run(fmt.Sprintf("%d", len(data)), func(t *testing.T) {
expectedEntriesCount++
expectedVolumeInGB += float64(len(data)) / (1 << 30)
providers.EntryAdded(len(data))
entriesStats := providers.GetGeneralStats()
if entriesStats.EntriesCount != expectedEntriesCount {
t.Errorf("unexpected result - expected: %v, actual: %v", expectedEntriesCount, entriesStats.EntriesCount)
}
if entriesStats.EntriesVolumeInGB != expectedVolumeInGB {
t.Errorf("unexpected result - expected: %v, actual: %v", expectedVolumeInGB, entriesStats.EntriesVolumeInGB)
}
})
}
}

View File

@@ -53,6 +53,7 @@ func ReportTapTelemetry(apiProvider *apiserver.Provider, args interface{}, start
"args": string(argsBytes), "args": string(argsBytes),
"executionTimeInSeconds": int(time.Since(startTime).Seconds()), "executionTimeInSeconds": int(time.Since(startTime).Seconds()),
"apiCallsCount": generalStats["EntriesCount"], "apiCallsCount": generalStats["EntriesCount"],
"trafficVolumeInGB": generalStats["EntriesVolumeInGB"],
} }
if err := sendTelemetry(argsMap); err != nil { if err := sendTelemetry(argsMap); err != nil {