mirror of
				https://github.com/siderolabs/talos.git
				synced 2025-10-31 00:11:36 +01:00 
			
		
		
		
	The code for collecting Talos `support.zip` was extracted there. Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.1 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/.
 | |
| 
 | |
| //go:build integration_cli
 | |
| 
 | |
| package cli
 | |
| 
 | |
| import (
 | |
| 	"archive/zip"
 | |
| 	"fmt"
 | |
| 	"path/filepath"
 | |
| 	"strings"
 | |
| 
 | |
| 	"github.com/siderolabs/talos/internal/integration/base"
 | |
| 	"github.com/siderolabs/talos/pkg/machinery/config/machine"
 | |
| )
 | |
| 
 | |
| // SupportSuite verifies support command.
 | |
| type SupportSuite struct {
 | |
| 	base.CLISuite
 | |
| }
 | |
| 
 | |
| // SuiteName ...
 | |
| func (suite *SupportSuite) SuiteName() string {
 | |
| 	return "cli.SupportSuite"
 | |
| }
 | |
| 
 | |
| // TestSupport does successful support run.
 | |
| func (suite *SupportSuite) TestSupport() {
 | |
| 	tempDir := suite.T().TempDir()
 | |
| 
 | |
| 	output := filepath.Join(tempDir, "support.zip")
 | |
| 
 | |
| 	node := suite.RandomDiscoveredNodeInternalIP(machine.TypeControlPlane)
 | |
| 
 | |
| 	suite.RunCLI([]string{"support", "--nodes", node, "-w", "5", "-O", output},
 | |
| 		base.StderrNotEmpty(),
 | |
| 	)
 | |
| 
 | |
| 	archive, err := zip.OpenReader(output)
 | |
| 	suite.Require().NoError(err)
 | |
| 
 | |
| 	defer archive.Close() //nolint:errcheck
 | |
| 
 | |
| 	files := map[string]struct{}{}
 | |
| 
 | |
| 	for _, f := range archive.File {
 | |
| 		files[f.Name] = struct{}{}
 | |
| 
 | |
| 		if strings.HasSuffix(f.Name, "dmesg.log") {
 | |
| 			suite.Require().Greater(f.UncompressedSize64, uint64(0), "dmesg log is empty")
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	for _, name := range []string{
 | |
| 		"dmesg.log",
 | |
| 		"service-logs/apid.log",
 | |
| 		"service-logs/apid.state",
 | |
| 		"service-logs/machined.log",
 | |
| 		"service-logs/machined.state",
 | |
| 		"service-logs/kubelet.log",
 | |
| 		"service-logs/kubelet.state",
 | |
| 		"resources/kernelparamstatuses.runtime.talos.dev.yaml",
 | |
| 		"kubernetes-logs/kube-system/kube-apiserver.log",
 | |
| 		"controller-runtime.log",
 | |
| 		"mounts",
 | |
| 		"processes",
 | |
| 		"io",
 | |
| 		"summary",
 | |
| 	} {
 | |
| 		n := fmt.Sprintf("%s/%s", node, name)
 | |
| 		suite.Require().Contains(files, n, "File %s doesn't exist in the support bundle", n)
 | |
| 	}
 | |
| 
 | |
| 	for _, name := range []string{
 | |
| 		"kubernetesResources/nodes.yaml",
 | |
| 		"kubernetesResources/systemPods.yaml",
 | |
| 	} {
 | |
| 		suite.Require().Contains(files, name, "File %s doesn't exist in the support bundle", name)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func init() {
 | |
| 	allSuites = append(allSuites, new(SupportSuite))
 | |
| }
 |