mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-02-03 22:18:39 +00:00
Add context parameter to validInterfacesMap for better error handling and logging. Move Windows-specific network adapter validation logic to the ctrld package. Key changes include: - Add context parameter to validInterfacesMap across all platforms - Move Windows validInterfaces to ctrld.ValidInterfaces - Improve error handling for virtual interface detection on Linux - Update all callers to pass appropriate context This change improves error reporting and makes the interface validation code more maintainable across different platforms.
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package cli
|
|
|
|
import (
|
|
"bufio"
|
|
"bytes"
|
|
"context"
|
|
"maps"
|
|
"slices"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/Control-D-Inc/ctrld"
|
|
)
|
|
|
|
func Test_validInterfaces(t *testing.T) {
|
|
verbose = 3
|
|
initConsoleLogging()
|
|
start := time.Now()
|
|
im := ctrld.ValidInterfaces(ctrld.LoggerCtx(context.Background(), mainLog.Load()))
|
|
t.Logf("Using Windows API takes: %d", time.Since(start).Milliseconds())
|
|
ifaces := slices.Collect(maps.Keys(im))
|
|
|
|
start = time.Now()
|
|
ifacesPowershell := validInterfacesPowershell()
|
|
t.Logf("Using Powershell takes: %d", time.Since(start).Milliseconds())
|
|
|
|
slices.Sort(ifaces)
|
|
slices.Sort(ifacesPowershell)
|
|
if !slices.Equal(ifaces, ifacesPowershell) {
|
|
t.Fatalf("result mismatch, want: %v, got: %v", ifacesPowershell, ifaces)
|
|
}
|
|
}
|
|
|
|
func validInterfacesPowershell() []string {
|
|
out, err := powershell("Get-NetAdapter -Physical | Select-Object -ExpandProperty Name")
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
var res []string
|
|
scanner := bufio.NewScanner(bytes.NewReader(out))
|
|
for scanner.Scan() {
|
|
ifaceName := strings.TrimSpace(scanner.Text())
|
|
res = append(res, ifaceName)
|
|
}
|
|
return res
|
|
}
|