Files
troubleshoot/pkg/analyze/weave_test.go
Dexter Yan 7e3a59cfc0 feat(analyze): add ExcludeFiles field to textAnazlye (#867)
* feat(analyze): add ExcludeFiles field to textAnazlye

* feat(analyze): fix test for getFiles

* feat(analyze): change function name to  excludeFilePaths

* feat(analyze): fix preflight test fail

* feat(analyze): add tests for excludeFiles

* feat(schemas): run make schemas

* feat(analyze): use getChildCollectedFileContents function prototype

* feat(analyze): reduce time complexity

* feat(longhorn): add getFileContents as getCollectedFileContents
2022-11-28 10:45:10 +13:00

188 lines
3.5 KiB
Go

package analyzer
import (
"testing"
troubleshootv1beta2 "github.com/replicatedhq/troubleshoot/pkg/apis/troubleshoot/v1beta2"
"github.com/stretchr/testify/assert"
)
func TestWeaveReport(t *testing.T) {
var tests = []struct {
name string
report string
expect []*AnalyzeResult
}{
{
name: "sufficient IPs",
expect: []*AnalyzeResult{
{
Title: "Weave Report",
IsPass: true,
Message: "No issues detected in weave report",
},
},
report: `
{
"Router": {
"NickName": "areed-aka-k8ms"
},
"IPAM": {
"RangeNumIPs": 4096,
"ActiveIPs": 21,
"PendingAllocates": null
}
}`,
},
{
name: "insufficient IPs",
expect: []*AnalyzeResult{
{
Title: "Available Pod IPs",
IsWarn: true,
Message: "3900 of 4096 total available IPs have been assigned",
},
},
report: `
{
"Router": {
"NickName": "areed-aka-k8ms"
},
"IPAM": {
"RangeNumIPs": 4096,
"ActiveIPs": 3900,
"PendingAllocates": null
}
}`,
},
{
name: "IPs pending allocation",
expect: []*AnalyzeResult{
{
Title: "Pending IP Allocation",
IsWarn: true,
Message: "Waiting for IPs to become available",
},
},
report: `
{
"Router": {
"NickName": "areed-aka-k8ms"
},
"IPAM": {
"RangeNumIPs": 4096,
"ActiveIPs": 21,
"PendingAllocates": ["10.32.1.15"]
}
}`,
},
{
name: "remote connections established",
expect: []*AnalyzeResult{
{
Title: "Weave Report",
IsPass: true,
Message: "No issues detected in weave report",
},
},
report: `
{
"Router": {
"NickName": "areed-aka-k8ms",
"Connections": [
{
"State": "failed",
"Info": "cannot connect to ourself, retry: never",
"Attrs": {
"name": "fastdp"
}
},
{
"State": "established",
"Info": "encrypted fastdp 1a:5b:a9:53:2b:11(areed-aka-kkz0)",
"Attrs": {
"name": "fastdp"
}
}
]
}
}`,
},
{
name: "pending connection",
expect: []*AnalyzeResult{
{
Title: "Weave Inter-Node Connections",
IsWarn: true,
Message: "Connection from areed-aka-k8ms to areed-aka-kkz0 is pending",
},
},
report: `
{
"Router": {
"NickName": "areed-aka-k8ms",
"Connections": [
{
"State": "pending",
"Info": "encrypted fastdp 1a:5b:a9:53:2b:11(areed-aka-kkz0)",
"Attrs": {
"name": "fastdp"
}
}
]
}
}`,
},
{
name: "sleeve connection",
expect: []*AnalyzeResult{
{
Title: "Weave Inter-Node Connections",
IsWarn: true,
Message: `Connection from areed-aka-k8ms to areed-aka-kkz0 protocol is "sleeve", not fastdp`,
},
},
report: `
{
"Router": {
"NickName": "areed-aka-k8ms",
"Connections": [
{
"State": "established",
"Info": "encrypted sleeve 1a:5b:a9:53:2b:11(areed-aka-kkz0)",
"Attrs": {
"name": "sleeve"
}
}
]
}
}`,
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
var findFiles = func(glob string, _ []string) (map[string][]byte, error) {
return map[string][]byte{
"report1": []byte(test.report),
}, nil
}
analyzer := &troubleshootv1beta2.WeaveReportAnalyze{}
results, err := analyzeWeaveReport(analyzer, findFiles)
assert.NoError(t, err)
assert.Equal(t, test.expect, results)
})
}
}
func TestParseWeaveConnectionInfoHostname(t *testing.T) {
info := "encrypted fastdp 1a:5b:a9:53:2b:11(areed-aka-kkz0)"
got := parseWeaveConnectionInfoHostname(info)
expect := "areed-aka-kkz0"
assert.Equal(t, expect, got)
}