Andrey Smirnov 0afd0f651b chore: provide provisioned cluster info to integration test
Integration test can optionally consume cluster state as generated by
the call to `osctl cluster create` and use it to discover nodes in
integration tests.

This means that now CLI tests can use that as discovery source, and
API/K8s tests by default as well.

Flat list of nodes is to be replaced by something more complex in the
next iteration, but it's good for this PR.

As a demo, add CLI test with multiple nodes (dmesg).

Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
2020-01-31 18:21:30 +03:00

52 lines
1.2 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"
"regexp"
"strings"
"github.com/talos-systems/talos/internal/integration/base"
)
// DmesgSuite verifies dmesg command
type DmesgSuite struct {
base.CLISuite
}
// SuiteName ...
func (suite *DmesgSuite) SuiteName() string {
return "cli.DmesgSuite"
}
// TestHasOutput verifies that dmesg is displayed.
func (suite *DmesgSuite) TestHasOutput() {
suite.RunOsctl([]string{"dmesg"}) // default checks for stdout not empty
}
// TestClusterHasOutput verifies that each node in the cluster has some output
func (suite *DmesgSuite) TestClusterHasOutput() {
nodes := suite.DiscoverNodes()
suite.Require().NotEmpty(nodes)
matchers := make([]base.RunOption, 0, len(nodes))
for _, node := range nodes {
matchers = append(matchers,
base.StdoutShouldMatch(
regexp.MustCompile(fmt.Sprintf(`(?m)^%s:`, regexp.QuoteMeta(node)))))
}
suite.RunOsctl([]string{"--nodes", strings.Join(nodes, ","), "dmesg"},
matchers...)
}
func init() {
allSuites = append(allSuites, new(DmesgSuite))
}