Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 8 additions & 23 deletions test/integration/packagemanifests_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (

. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/operator-framework/api/pkg/operators/v1alpha1"
)

var _ = Describe("run packagemanifests", func() {
Expand All @@ -29,41 +28,27 @@ var _ = Describe("run packagemanifests", func() {
output string
)

runPackageManifests := runPackageManifestsFor(&tc)
cleanup := cleanupFor(&tc)
isBundle := false
readCSV, writeCSV := readCSVFor(&tc, isBundle), writeCSVFor(&tc, isBundle)

AfterEach(func() {
By("cleaning up")
_, err = cleanup()
_, err = cleanup(&tc)
Expect(err).NotTo(HaveOccurred())
})

It("should handle existing operator deployments correctly", func() {
output, err = cleanup()
output, err = cleanup(&tc)
Expect(err).NotTo(HaveOccurred())
Expect(output).To(ContainSubstring(`package \"memcached-operator\" not found`))
Expect(runPackageManifests("--version", "0.0.1")).To(Succeed())
Expect(runPackageManifests("--version", "0.0.1")).NotTo(Succeed())
_, err = cleanup()
Expect(runPackageManifests(&tc, "--version", "0.0.1")).To(Succeed())
Expect(runPackageManifests(&tc, "--version", "0.0.1")).NotTo(Succeed())
_, err = cleanup(&tc)
Expect(err).NotTo(HaveOccurred())
output, err = cleanup()
output, err = cleanup(&tc)
Expect(err).NotTo(HaveOccurred())
Expect(output).To(ContainSubstring(`package \"memcached-operator\" not found`))
})

It("should succeed with a single operator version in OwnNamespace mode", func() {
csv, err := readCSV("0.0.1")
Expect(err).NotTo(HaveOccurred())
for i, mode := range csv.Spec.InstallModes {
if mode.Type == v1alpha1.InstallModeTypeOwnNamespace {
csv.Spec.InstallModes[i].Supported = true
break
}
}
Expect(writeCSV(csv, "0.0.1")).To(Succeed())
Expect(runPackageManifests("--install-mode", "OwnNamespace", "--version", "0.0.1")).To(Succeed())
Expect(runPackageManifests(&tc, "--install-mode", "OwnNamespace", "--version", "0.0.1")).To(Succeed())
})

It("should successfully deploy the second of two operator versions", func() {
Expand All @@ -82,6 +67,6 @@ var _ = Describe("run packagemanifests", func() {
}
Expect(tc.Make(makeArgs...)).To(Succeed())
}
Expect(runPackageManifests("--version", versions[len(versions)-1])).To(Succeed())
Expect(runPackageManifests(&tc, "--version", versions[len(versions)-1])).To(Succeed())
})
})
88 changes: 43 additions & 45 deletions test/integration/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,14 @@ var _ = BeforeSuite(func() {
Expect(tc.LoadImageToKindCluster()).To(Succeed())
}

By("generating the operator package manifests")
By("generating the operator package manifests and enabling all InstallModes")
Expect(tc.Make("packagemanifests", "IMG="+tc.ImageName)).To(Succeed())
csv, err := readCSV(&tc, "0.0.1", false)
Expect(err).NotTo(HaveOccurred())
for i := range csv.Spec.InstallModes {
csv.Spec.InstallModes[i].Supported = true
}
Expect(writeCSV(&tc, "0.0.1", csv, false)).To(Succeed())

// TODO(estroz): enable when bundles can be tested locally.
//
Expand Down Expand Up @@ -122,60 +128,52 @@ func warn(output string, err error) {
}
}

func runPackageManifestsFor(tc *testutils.TestContext) func(...string) error {
return func(args ...string) error {
allArgs := []string{"run", "packagemanifests", "--timeout", "4m", "--namespace", tc.Kubectl.Namespace}
output, err := tc.Run(exec.Command(tc.BinaryName, append(allArgs, args...)...))
if err == nil {
fmt.Fprintln(GinkgoWriter, string(output))
}
return err
func runPackageManifests(tc *testutils.TestContext, args ...string) error {
allArgs := []string{"run", "packagemanifests", "--timeout", "4m", "--namespace", tc.Kubectl.Namespace}
output, err := tc.Run(exec.Command(tc.BinaryName, append(allArgs, args...)...))
if err == nil {
fmt.Fprintln(GinkgoWriter, string(output))
}
return err
}

func cleanupFor(tc *testutils.TestContext) func() (string, error) {
return func() (string, error) {
allArgs := []string{"cleanup", tc.ProjectName, "--timeout", "4m", "--namespace", tc.Kubectl.Namespace}
output, err := tc.Run(exec.Command(tc.BinaryName, allArgs...))
if err == nil {
fmt.Fprintln(GinkgoWriter, string(output))
}
return string(output), err
func cleanup(tc *testutils.TestContext) (string, error) {
allArgs := []string{"cleanup", tc.ProjectName, "--timeout", "4m", "--namespace", tc.Kubectl.Namespace}
output, err := tc.Run(exec.Command(tc.BinaryName, allArgs...))
if err == nil {
fmt.Fprintln(GinkgoWriter, string(output))
}
return string(output), err
}

func readCSVFor(tc *testutils.TestContext, isBundle bool) func(string) (*v1alpha1.ClusterServiceVersion, error) {
return func(version string) (*v1alpha1.ClusterServiceVersion, error) {
b, err := ioutil.ReadFile(csvPath(tc, version, isBundle))
if err != nil {
return nil, err
}
csv := &v1alpha1.ClusterServiceVersion{}
if err := yaml.Unmarshal(b, csv); err != nil {
return nil, err
}
return csv, nil
func readCSV(tc *testutils.TestContext, version string, isBundle bool) (*v1alpha1.ClusterServiceVersion, error) {
b, err := ioutil.ReadFile(csvPath(tc, version, isBundle))
if err != nil {
return nil, err
}
csv := &v1alpha1.ClusterServiceVersion{}
if err := yaml.Unmarshal(b, csv); err != nil {
return nil, err
}
return csv, nil
}

func writeCSVFor(tc *testutils.TestContext, isBundle bool) func(*v1alpha1.ClusterServiceVersion, string) error {
return func(csv *v1alpha1.ClusterServiceVersion, version string) error {
b, err := yaml.Marshal(csv)
if err != nil {
return err
}
f, err := os.OpenFile(csvPath(tc, version, isBundle), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
return err
}
if _, err := f.Write(b); err != nil {
return err
}
if err := f.Sync(); err != nil {
return err
}
return f.Close()
func writeCSV(tc *testutils.TestContext, version string, csv *v1alpha1.ClusterServiceVersion, isBundle bool) error {
b, err := yaml.Marshal(csv)
if err != nil {
return err
}
f, err := os.OpenFile(csvPath(tc, version, isBundle), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
return err
}
if _, err := f.Write(b); err != nil {
return err
}
if err := f.Sync(); err != nil {
return err
}
return f.Close()
}

func csvPath(tc *testutils.TestContext, version string, isBundle bool) string {
Expand Down