mirror of
				https://github.com/siderolabs/talos.git
				synced 2025-11-04 10:21:13 +01:00 
			
		
		
		
	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>
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			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))
 | 
						|
}
 |