mirror of
https://github.com/siderolabs/talos.git
synced 2025-10-06 13:11:12 +02:00
There were three problems: * cli tests did commands in sequence assuming they all hit the same node, but with load-balancing it's no longer true * restart test was affected, as it hit different node for check after restart, and it succeeded immediately, while on original node process was still starting which resulted in failure in the next tests; replace the check to make sure service is up and healthy, so that test leaves cluster in a good state * restart API response had wrong format (no message returned) which resulted in failures with apid proxy (when used with `-n`) Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
69 lines
1.7 KiB
Go
69 lines
1.7 KiB
Go
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
// +build integration_cli
|
|
|
|
package cli
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"regexp"
|
|
"strings"
|
|
|
|
"github.com/talos-systems/talos/internal/integration/base"
|
|
)
|
|
|
|
// LogsSuite verifies logs command.
|
|
type LogsSuite struct {
|
|
base.CLISuite
|
|
}
|
|
|
|
// SuiteName ...
|
|
func (suite *LogsSuite) SuiteName() string {
|
|
return "cli.LogsSuite"
|
|
}
|
|
|
|
// TestServiceLogs verifies that logs are displayed.
|
|
func (suite *LogsSuite) TestServiceLogs() {
|
|
suite.RunCLI([]string{"logs", "kubelet"}) // default checks for stdout not empty
|
|
}
|
|
|
|
// TestTailLogs verifies that logs can be displayed with tail lines.
|
|
func (suite *LogsSuite) TestTailLogs() {
|
|
nodes := suite.DiscoverNodes()
|
|
suite.Require().NotEmpty(nodes)
|
|
|
|
node := nodes[rand.Intn(len(nodes))]
|
|
|
|
// run some machined API calls to produce enough log lines
|
|
for i := 0; i < 10; i++ {
|
|
suite.RunCLI([]string{"-n", node, "version"})
|
|
}
|
|
|
|
suite.RunCLI([]string{"logs", "apid", "-n", node, "--tail", "5"},
|
|
base.StdoutMatchFunc(func(stdout string) error {
|
|
lines := strings.Count(stdout, "\n")
|
|
if lines != 5 {
|
|
return fmt.Errorf("expected %d lines, found %d lines", 5, lines)
|
|
}
|
|
|
|
return nil
|
|
}))
|
|
}
|
|
|
|
// TestServiceNotFound verifies that logs displays an error if service is not found.
|
|
func (suite *LogsSuite) TestServiceNotFound() {
|
|
suite.RunCLI([]string{"logs", "servicenotfound"},
|
|
base.ShouldFail(),
|
|
base.StdoutEmpty(),
|
|
base.StderrNotEmpty(),
|
|
base.StderrShouldMatch(regexp.MustCompile(`error getting logs:.+ log "servicenotfound" was not registered`)),
|
|
)
|
|
}
|
|
|
|
func init() {
|
|
allSuites = append(allSuites, new(LogsSuite))
|
|
}
|