mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-12 01:27:07 +02:00
Move rook-ceph CSI tests as go tests. This allows us to add more CSI tests in the future. Fixes: #9135 Signed-off-by: Noel Georgi <git@frezbo.dev>
90 lines
2.4 KiB
Go
90 lines
2.4 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_k8s
|
|
|
|
package k8s
|
|
|
|
import (
|
|
"context"
|
|
_ "embed"
|
|
"time"
|
|
|
|
"github.com/siderolabs/talos/internal/integration/base"
|
|
)
|
|
|
|
//go:embed testdata/rook-ceph-cluster-values.yaml
|
|
var rookCephClusterValues []byte
|
|
|
|
// RookSuite tests deploying Rook.
|
|
type RookSuite struct {
|
|
base.K8sSuite
|
|
}
|
|
|
|
// SuiteName returns the name of the suite.
|
|
func (suite *RookSuite) SuiteName() string {
|
|
return "k8s.RookSuite"
|
|
}
|
|
|
|
// TestDeploy tests deploying Rook and running a simple test.
|
|
func (suite *RookSuite) TestDeploy() {
|
|
if suite.Cluster == nil {
|
|
suite.T().Skip("without full cluster state reaching out to the node IP is not reliable")
|
|
}
|
|
|
|
if suite.CSITestName != "rook-ceph" {
|
|
suite.T().Skip("skipping rook-ceph test as it is not enabled")
|
|
}
|
|
|
|
timeout, err := time.ParseDuration(suite.CSITestTimeout)
|
|
if err != nil {
|
|
suite.T().Fatalf("failed to parse timeout: %v", err)
|
|
}
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), timeout)
|
|
suite.T().Cleanup(cancel)
|
|
|
|
if err := suite.HelmInstall(
|
|
ctx,
|
|
"rook-ceph",
|
|
"https://charts.rook.io/release",
|
|
RookCephHelmChartVersion,
|
|
"rook-ceph",
|
|
"rook-ceph",
|
|
nil,
|
|
); err != nil {
|
|
suite.T().Fatalf("failed to install Rook chart: %v", err)
|
|
}
|
|
|
|
if err := suite.HelmInstall(
|
|
ctx,
|
|
"rook-ceph",
|
|
"https://charts.rook.io/release",
|
|
RookCephHelmChartVersion,
|
|
"rook-ceph-cluster",
|
|
"rook-ceph-cluster",
|
|
rookCephClusterValues,
|
|
); err != nil {
|
|
suite.T().Fatalf("failed to install Rook chart: %v", err)
|
|
}
|
|
|
|
if err := suite.WaitForResource(ctx, "rook-ceph", "ceph.rook.io", "CephCluster", "v1", "rook-ceph", "{.status.phase}", "Ready"); err != nil {
|
|
suite.T().Fatalf("failed to wait for CephCluster to be Ready: %v", err)
|
|
}
|
|
|
|
if err := suite.WaitForResource(ctx, "rook-ceph", "ceph.rook.io", "CephCluster", "v1", "rook-ceph", "{.status.state}", "Created"); err != nil {
|
|
suite.T().Fatalf("failed to wait for CephCluster to be Created: %v", err)
|
|
}
|
|
|
|
if err := suite.WaitForResource(ctx, "rook-ceph", "ceph.rook.io", "CephCluster", "v1", "rook-ceph", "{.status.ceph.health}", "HEALTH_OK"); err != nil {
|
|
suite.T().Fatalf("failed to wait for CephCluster to be HEALTH_OK: %v", err)
|
|
}
|
|
|
|
suite.Require().NoError(suite.RunFIOTest(ctx, "ceph-block", "10G"))
|
|
}
|
|
|
|
func init() {
|
|
allSuites = append(allSuites, new(RookSuite))
|
|
}
|