mirror of
https://github.com/replicatedhq/troubleshoot.git
synced 2026-04-15 07:16:34 +00:00
* 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
188 lines
3.5 KiB
Go
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)
|
|
|
|
}
|