m/cli/metroctl: refactor, use tabular layout
This lays out the files to make it more obvious what command each file
implements, and uses the newly implemented tabular formatting for
listing/describing nodes.
Change-Id: I90feeae67de0f78090dd5440cbad4cb9aa6bb6bc
Reviewed-on: https://review.monogon.dev/c/monogon/+/1392
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/cli/metroctl/test/test.go b/metropolis/cli/metroctl/test/test.go
index a88a2e0..5468834 100644
--- a/metropolis/cli/metroctl/test/test.go
+++ b/metropolis/cli/metroctl/test/test.go
@@ -1,6 +1,7 @@
package test
import (
+ "bufio"
"context"
"encoding/pem"
"fmt"
@@ -222,20 +223,31 @@
}
// Try matching metroctl output against the advertised format.
- ob, err := os.ReadFile("describe.txt")
+ f, err := os.Open("describe.txt")
if err != nil {
- return fmt.Errorf("while reading metroctl output: %v", err)
+ return fmt.Errorf("while opening metroctl output: %v", err)
}
+ scanner := bufio.NewScanner(f)
+ if !scanner.Scan() {
+ return fmt.Errorf("expected header line")
+ }
+ if !scanner.Scan() {
+ return fmt.Errorf("expected result line")
+ }
+ line := scanner.Text()
+ t.Logf("Line: %q", line)
+
var onid, ostate, onaddr, onstatus, onroles string
var ontimeout int
- _, err = fmt.Sscanf(string(ob[:]), "%s\t%s\t%s\t%s\t%s\t%ds\n", &onid, &ostate, &onaddr, &onstatus, &onroles, &ontimeout)
+
+ _, err = fmt.Sscanf(line, "%s%s%s%s%s%ds", &onid, &ostate, &onaddr, &onstatus, &onroles, &ontimeout)
if err != nil {
return fmt.Errorf("while parsing metroctl output: %v", err)
}
if onid != nid {
return fmt.Errorf("node id mismatch")
}
- if ostate != "NODE_STATE_UP" {
+ if ostate != "UP" {
return fmt.Errorf("node state mismatch")
}
if onaddr != naddr {