Documentation

Index

Constants

View Source
const (
	ConfigOpt                 = "config"
	NamespaceOpt              = "namespace"
	KubeconfigOpt             = "kubeconfig"
	InitTimeoutOpt            = "init-timeout"
	OlmDeployedOpt            = "olm-deployed"
	CSVPathOpt                = "csv-path"
	BasicTestsOpt             = "basic-tests"
	OLMTestsOpt               = "olm-tests"
	NamespacedManifestOpt     = "namespaced-manifest"
	GlobalManifestOpt         = "global-manifest"
	CRManifestOpt             = "cr-manifest"
	ProxyImageOpt             = "proxy-image"
	ProxyPullPolicyOpt        = "proxy-pull-policy"
	CRDsDirOpt                = "crds-dir"
	OutputFormatOpt           = "output"
	PluginDirOpt              = "plugin-dir"
	JSONOutputFormat          = "json"
	HumanReadableOutputFormat = "human-readable"
)

Variables

This section is empty.

Functions

func CalculateResult

CalculateResult returns a ScorecardSuiteResult with the state and Tests fields set based on a slice of ScorecardTestResults

func ScorecardTests

func ScorecardTests(cmd *cobra.Command, args []string) error

func TestResultToScorecardTestResult

func TestResultToScorecardTestResult(tr TestResult) scapiv1alpha1.ScorecardTestResult

TestResultToScorecardTestResult is a helper function for converting from the TestResult type to the ScorecardTestResult type

func TestSuitesToScorecardOutput

func TestSuitesToScorecardOutput(suites []TestSuite, log string) scapiv1alpha1.ScorecardOutput

TestSuitesToScorecardOutput takes an array of test suites and generates a v1alpha1 ScorecardOutput object with the provided name, description, and log

func UpdateState

UpdateState updates the state of a TestResult.

func UpdateSuiteStates

UpdateSuiteStates update the state of each test in a suite and updates the count to the suite's states to match

Types

type AnnotationsContainExamplesTest

type AnnotationsContainExamplesTest struct {
	TestInfo
	OLMTestConfig
}

AnnotationsContainExamplesTest is a scorecard test that verifies that the CSV contains examples via the alm-examples annotation

func NewAnnotationsContainExamplesTest

func NewAnnotationsContainExamplesTest(conf OLMTestConfig) *AnnotationsContainExamplesTest

NewAnnotationsContainExamplesTest returns a new AnnotationsContainExamplesTest object

func (*AnnotationsContainExamplesTest) Run

Run - implements Test interface

type BasicTestConfig

type BasicTestConfig struct {
	Client   client.Client
	CR       *unstructured.Unstructured
	ProxyPod *v1.Pod
}

BasicTestConfig contains all variables required by the BasicTest TestSuite

type CRDsHaveResourcesTest

type CRDsHaveResourcesTest struct {
	TestInfo
	OLMTestConfig
}

CRDsHaveResourcesTest is a scorecard test that verifies that the CSV lists used resources in its owned CRDs secyion

func NewCRDsHaveResourcesTest

func NewCRDsHaveResourcesTest(conf OLMTestConfig) *CRDsHaveResourcesTest

NewCRDsHaveResourcesTest returns a new CRDsHaveResourcesTest object

func (*CRDsHaveResourcesTest) Run

Run - implements Test interface

type CRDsHaveValidationTest

type CRDsHaveValidationTest struct {
	TestInfo
	OLMTestConfig
}

CRDsHaveValidationTest is a scorecard test that verifies that all CRDs have a validation section

func NewCRDsHaveValidationTest

func NewCRDsHaveValidationTest(conf OLMTestConfig) *CRDsHaveValidationTest

NewCRDsHaveValidationTest returns a new CRDsHaveValidationTest object

func (*CRDsHaveValidationTest) Run

Run - implements Test interface

type CheckSpecTest

type CheckSpecTest struct {
	TestInfo
	BasicTestConfig
}

CheckSpecTest is a scorecard test that verifies that the CR has a spec block

func NewCheckSpecTest

func NewCheckSpecTest(conf BasicTestConfig) *CheckSpecTest

NewCheckSpecTest returns a new CheckSpecTest object

func (*CheckSpecTest) Run

func (t *CheckSpecTest) Run(ctx context.Context) *TestResult

Run - implements Test interface

type CheckStatusTest

type CheckStatusTest struct {
	TestInfo
	BasicTestConfig
}

CheckStatusTest is a scorecard test that verifies that the CR has a status block

func NewCheckStatusTest

func NewCheckStatusTest(conf BasicTestConfig) *CheckStatusTest

NewCheckStatusTest returns a new CheckStatusTest object

func (*CheckStatusTest) Run

Run - implements Test interface

type OLMTestConfig

type OLMTestConfig struct {
	Client   client.Client
	CR       *unstructured.Unstructured
	CSV      *olmapiv1alpha1.ClusterServiceVersion
	CRDsDir  string
	ProxyPod *v1.Pod
}

OLMTestConfig contains all variables required by the OLMTest TestSuite

type SpecDescriptorsTest

type SpecDescriptorsTest struct {
	TestInfo
	OLMTestConfig
}

SpecDescriptorsTest is a scorecard test that verifies that all spec fields have descriptors

func NewSpecDescriptorsTest

func NewSpecDescriptorsTest(conf OLMTestConfig) *SpecDescriptorsTest

NewSpecDescriptorsTest returns a new SpecDescriptorsTest object

func (*SpecDescriptorsTest) Run

Run - implements Test interface

type StatusDescriptorsTest

type StatusDescriptorsTest struct {
	TestInfo
	OLMTestConfig
}

StatusDescriptorsTest is a scorecard test that verifies that all status fields have descriptors

func NewStatusDescriptorsTest

func NewStatusDescriptorsTest(conf OLMTestConfig) *StatusDescriptorsTest

NewStatusDescriptorsTest returns a new StatusDescriptorsTest object

func (*StatusDescriptorsTest) Run

Run - implements Test interface

type Test

type Test interface {
	GetName() string
	GetDescription() string
	IsCumulative() bool
	Run(context.Context) *TestResult
}

Test provides methods for running scorecard tests

type TestInfo

type TestInfo struct {
	Name        string
	Description string
	// If a test is set to cumulative, the scores of multiple runs of the same test on separate CRs are added together for the total score.
	// If cumulative is false, if any test failed, the total score is 0/1. Otherwise 1/1.
	Cumulative bool
}

TestInfo contains information about the scorecard test

func (TestInfo) GetDescription

func (i TestInfo) GetDescription() string

GetDescription returns the test description

func (TestInfo) GetName

func (i TestInfo) GetName() string

GetName return the test name

func (TestInfo) IsCumulative

func (i TestInfo) IsCumulative() bool

IsCumulative returns true if the test's scores are intended to be cumulative

type TestResult

type TestResult struct {
	State         scapiv1alpha1.State
	Test          Test
	EarnedPoints  int
	MaximumPoints int
	Suggestions   []string
	Errors        []error
}

TestResult contains a test's points, suggestions, and errors

func ResultsCumulative

func ResultsCumulative(results []TestResult) (TestResult, error)

ResultsCumulative takes multiple TestResults and returns a single TestResult with MaximumPoints equal to the sum of the MaximumPoints of the input and EarnedPoints as the sum of EarnedPoints of the input

func ResultsPassFail

func ResultsPassFail(results []TestResult) (TestResult, error)

ResultsPassFail combines multiple test results and returns a single test results with 1 maximum point and either 0 or 1 earned points

type TestSuite

type TestSuite struct {
	TestInfo
	Tests       []Test
	TestResults []TestResult
	Weights     map[string]float64
	Log         string
}

TestSuite contains a list of tests and results, along with the relative weights of each test. Also can optionally contain a log

func MergeSuites

func MergeSuites(suites []TestSuite) ([]TestSuite, error)

MergeSuites takes an array of TestSuites and combines all suites with the same name

func NewBasicTestSuite

func NewBasicTestSuite(conf BasicTestConfig) *TestSuite

NewBasicTestSuite returns a new TestSuite object containing basic, functional operator tests

func NewOLMTestSuite

func NewOLMTestSuite(conf OLMTestConfig) *TestSuite

NewOLMTestSuite returns a new TestSuite object containing CSV best practice checks

func NewTestSuite

func NewTestSuite(name, description string) *TestSuite

NewTestSuite returns a new TestSuite with a given name and description

func (*TestSuite) AddTest

func (ts *TestSuite) AddTest(t Test, weight float64)

AddTest adds a new Test to a TestSuite along with a relative weight for the new Test

func (*TestSuite) Run

func (ts *TestSuite) Run(ctx context.Context)

Run runs all Tests in a TestSuite

func (*TestSuite) TotalScore

func (ts *TestSuite) TotalScore() (score int)

TotalScore calculates and returns the total score of all run Tests in a TestSuite

type WritingIntoCRsHasEffectTest

type WritingIntoCRsHasEffectTest struct {
	TestInfo
	BasicTestConfig
}

WritingIntoCRsHasEffectTest is a scorecard test that verifies that the operator is making PUT and/or POST requests to the API server

func NewWritingIntoCRsHasEffectTest

func NewWritingIntoCRsHasEffectTest(conf BasicTestConfig) *WritingIntoCRsHasEffectTest

NewWritingIntoCRsHasEffectTest returns a new WritingIntoCRsHasEffectTest object

func (*WritingIntoCRsHasEffectTest) Run

Run - implements Test interface