Skip to content

Commit

Permalink
check ServiceCatalog basic usages
Browse files Browse the repository at this point in the history
  • Loading branch information
jianzhangbjz committed Jul 12, 2019
1 parent 6673091 commit b6ca3c2
Show file tree
Hide file tree
Showing 7 changed files with 541 additions and 0 deletions.
161 changes: 161 additions & 0 deletions test/extended/operators/service_catalog.go
@@ -0,0 +1,161 @@
package operators

import (
"fmt"
g "github.com/onsi/ginkgo"
o "github.com/onsi/gomega"
exutil "github.com/openshift/origin/test/extended/util"
e2e "k8s.io/kubernetes/test/e2e/framework"
"path/filepath"
"strings"
"time"
)

var _ = g.Describe("[Feature:Platform] Service Catalog should", func() {
defer g.GinkgoRecover()

var oc = exutil.NewCLI("service-catalog", exutil.KubeConfigPath()).WithoutNamespace()

var (
buildPruningBaseDir = exutil.FixturePath("testdata", "service_catalog")
upsBroker = filepath.Join(buildPruningBaseDir, "ups-broker.yaml")
upsDeployment = filepath.Join(buildPruningBaseDir, "ups-deployment.yaml")
upsService = filepath.Join(buildPruningBaseDir, "ups-service.yaml")
upsInstance = filepath.Join(buildPruningBaseDir, "ups-instance.yaml")
upsBinding = filepath.Join(buildPruningBaseDir, "ups-binding.yaml")
)

enableServiceCatalogResources := [][]string{
{"servicecatalogapiserver", "openshift-service-catalog-apiserver", "apiserver"},
{"servicecatalogcontrollermanager", "openshift-service-catalog-controller-manager", "controller-manager"},
}

// Enable Service Catalog
g.BeforeEach(func() {
g.By("Enable Service Catalog")
for _, v := range enableServiceCatalogResources {
_, err := oc.AsAdmin().Run("patch").Args(v[0], "cluster", "-p", `{"spec":{"managementState":"Managed"}}`, "--type=merge").Output()
if err != nil {
e2e.Failf("Unable to create: %s, error:%v", v[0], err)
}
time.Sleep(60 * time.Second)
output, err := oc.AsAdmin().Run("get").Args("daemonset", "-n", v[1], "-o=jsonpath={.status}").Output()
if err != nil {
e2e.Failf("Unable to get: %s, error:%v", v[0], err)
}
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).NotTo(o.ContainSubstring("numberUnavailable"))
}
}, 120)

// The below steps will cover OCP-24049, author: jiazha@redhat.com
// Disable these servicecatalogoperator resource
g.AfterEach(func() {
g.By("delete this ups broker")
output, err := oc.AsAdmin().Run("get").Args("clusterservicebroker").Output()
if strings.Contains(output, "ups-broker") {
_, err = oc.AsAdmin().Run("delete").Args("clusterservicebroker", "ups-broker").Output()
o.Expect(err).NotTo(o.HaveOccurred())
time.Sleep(20 * time.Second)
output, err = oc.AsAdmin().Run("get").Args("clusterserviceclass").Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).NotTo(o.ContainSubstring("user-provided-service"))
}
for _, v := range enableServiceCatalogResources {
g.By("disable " + v[0])
_, err := oc.AsAdmin().Run("patch").Args(v[0], "cluster", "-p", `{"spec":{"managementState":"Removed"}}`, "--type=merge").Output()
o.Expect(err).NotTo(o.HaveOccurred())
time.Sleep(5 * time.Second)
if v[0] == "servicecatalogapiserver" {
output, err := oc.AsAdmin().Run("get").Args(v[0], "cluster", "-o=jsonpath={.status.conditions}").Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).To(o.ContainSubstring("RemovalRequestIgnored"))
} else {
output, err := oc.AsAdmin().Run("get").Args("ns").Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).NotTo(o.ContainSubstring("openshift-service-catalog-controller-manager"))
}
}
}, 120)

g.It("check basic usages: OCP-24062, OCP-24049, OCP-15600", func() {
g.By("Check Service Catalog apiservice")
output, err := oc.AsAdmin().Run("get").Args("apiservices", "v1beta1.servicecatalog.k8s.io", "-o=jsonpath={.status.conditions[0].reason}").Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).To(o.Equal("Passed"))

// The below steps will cover test case: OCP-15600, author: jiazha@redhat.com
g.By("Deploy a fake broker")

upsFiles := []string{upsDeployment, upsService, upsBroker}
e2e.Logf("current namespace:%s", oc.Namespace())
for _, v := range upsFiles {
configFile, err := oc.AsAdmin().Run("process").Args("-f", v, "-p", fmt.Sprintf("NAMESPACE=%s", oc.Namespace())).OutputToFile("config.json")
o.Expect(err).NotTo(o.HaveOccurred())
err = oc.AsAdmin().Run("create").Args("-f", configFile).Execute()
o.Expect(err).NotTo(o.HaveOccurred())
}
time.Sleep(60 * time.Second)
output, err = oc.AsAdmin().Run("get").Args("clusterservicebroker", "ups-broker", "-o=jsonpath={.status.conditions[0].type}").Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).To(o.Equal("Ready"))

g.By("create a ups instance")
configFile, err := oc.AsAdmin().Run("process").Args("-f", upsInstance, "-p", fmt.Sprintf("NAMESPACE=%s", oc.Namespace())).OutputToFile("config.json")
err = oc.AsAdmin().Run("create").Args("-f", configFile).Execute()
o.Expect(err).NotTo(o.HaveOccurred())
time.Sleep(20 * time.Second)
output, err = oc.AsAdmin().Run("get").Args("serviceinstance", "-n", oc.Namespace(), "ups-instance", "-o=jsonpath={.status.conditions[0].reason}").Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).To(o.Equal("ProvisionedSuccessfully"))

g.By("bind to this instance")
configFile, err = oc.AsAdmin().Run("process").Args("-f", upsBinding, "-p", fmt.Sprintf("NAMESPACE=%s", oc.Namespace())).OutputToFile("config.json")
err = oc.AsAdmin().Run("create").Args("-f", configFile).Execute()
o.Expect(err).NotTo(o.HaveOccurred())
time.Sleep(20 * time.Second)
output, err = oc.AsAdmin().Run("get").Args("servicebinding", "-n", oc.Namespace(), "ups-binding", "-o=jsonpath={.status.conditions[0].reason}").Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).To(o.Equal("InjectedBindResult"))
output, err = oc.AsAdmin().Run("get").Args("secret", "-n", oc.Namespace()).Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).To(o.ContainSubstring("my-secret"))

g.By("unbind from this instance")
output, err = oc.AsAdmin().Run("delete").Args("servicebinding", "-n", oc.Namespace(), "ups-binding").Output()
o.Expect(err).NotTo(o.HaveOccurred())
time.Sleep(20 * time.Second)
output, err = oc.AsAdmin().Run("get").Args("servicebinding", "-n", oc.Namespace()).Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).NotTo(o.ContainSubstring("ups-binding"))
output, err = oc.AsAdmin().Run("get").Args("secret", "-n", oc.Namespace()).Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).NotTo(o.ContainSubstring("my-secret"))

g.By("delete this ups instance")
_, err = oc.AsAdmin().Run("delete").Args("serviceinstance", "-n", oc.Namespace(), "ups-instance").Output()
o.Expect(err).NotTo(o.HaveOccurred())
time.Sleep(20 * time.Second)
output, err = oc.AsAdmin().Run("get").Args("serviceinstance", "-n", oc.Namespace()).Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).NotTo(o.ContainSubstring("ups-instance"))

// The below steps will cover OCP-24062, author: jiazha@redhat.com
// TODO: once https://bugzilla.redhat.com/show_bug.cgi?id=1712297 fix, we should cover the `Force` managementState
// Unmanage these servicecatalogoperator resource
g.By("set Service Catalog to Unmanaged")
for _, v := range enableServiceCatalogResources {
_, err := oc.AsAdmin().Run("patch").Args(v[0], "cluster", "-p", `{"spec":{"managementState":"Unmanaged"}}`, "--type=merge").Output()
o.Expect(err).NotTo(o.HaveOccurred())
time.Sleep(5 * time.Second)
output, err := oc.AsAdmin().Run("patch").Args("daemonset", v[2], "-n", v[1], "-p", `{"spec":{"template":{"spec":{"priorityClassName":"test"}}}}`).Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).To(o.ContainSubstring("patched"))
time.Sleep(1 * time.Minute)
output, err = oc.AsAdmin().Run("get").Args("daemonset", v[2], "-n", v[1], "-o=jsonpath={.spec.template.spec.priorityClassName}").Output()
o.Expect(err).NotTo(o.HaveOccurred())
o.Expect(output).To(o.Equal("test"))
}
})

})

0 comments on commit b6ca3c2

Please sign in to comment.