From f7600aa3ac2994c0b4fd2bc5a42dff2a7053a336 Mon Sep 17 00:00:00 2001 From: uwefreidank <49634966+uwefreidank@users.noreply.github.com> Date: Wed, 27 Mar 2024 13:46:52 +0100 Subject: [PATCH] Add unit and integration test environment (#44) * add test environment add 1st unit test add 1st integration test * add license header * Delete unnecessarily docu * revert build.yaml * add license header to counterfeiter generating * add license header * remove duplicate constants * check metrics port * remove netstat * try metrics-port 8088 * disable test in dockerfile * disable metrics for envtest * revert removal of envtest in dockerfile --------- Co-authored-by: TheBigElmo <50952498+TheBigElmo@users.noreply.github.com> Co-authored-by: d039803 --- .vscode/launch.json | 15 +- Makefile | 14 +- go.mod | 12 +- go.sum | 148 +--- internal/binding/binding_test.go | 39 + .../space_controller_integration_test.go | 236 ++++++ internal/facade/client.go | 2 + internal/facade/counterfeiter.go | 9 + .../facadefakes/fake_organization_client.go | 593 +++++++++++++ .../facade/facadefakes/fake_space_client.go | 785 ++++++++++++++++++ .../facadefakes/fake_space_health_checker.go | 116 +++ internal/facade/health.go | 1 + tools/tools.go | 15 + 13 files changed, 1858 insertions(+), 127 deletions(-) create mode 100644 internal/binding/binding_test.go create mode 100644 internal/controllers/space_controller_integration_test.go create mode 100644 internal/facade/counterfeiter.go create mode 100644 internal/facade/facadefakes/fake_organization_client.go create mode 100644 internal/facade/facadefakes/fake_space_client.go create mode 100644 internal/facade/facadefakes/fake_space_health_checker.go create mode 100644 tools/tools.go diff --git a/.vscode/launch.json b/.vscode/launch.json index 69234fc..e522454 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -17,6 +17,19 @@ "--cluster-resource-namespace=default", "--sap-binding-metadata" ] - } + }, + { + "name": "Run integration test", + "type": "go", + "request": "launch", + "mode": "test", + "program": "${workspaceFolder}/internal/controllers", + "console": "internalConsole", + "env": { + "KUBEBUILDER_ASSETS": "${workspaceFolder}/bin/k8s/current", + }, + "args": [], + "showLog": true + }, ] } diff --git a/Makefile b/Makefile index 6c3c259..9a62deb 100644 --- a/Makefile +++ b/Makefile @@ -44,8 +44,9 @@ manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and Cust rm -rf crds && cp -r config/crd/bases crds .PHONY: generate -generate: controller-gen client-gen informer-gen lister-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations. +generate: controller-gen client-gen informer-gen lister-gen counterfeiter-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations. $(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./api/..." + PATH="$(PATH):$(LOCALBIN)" go generate ./... ./hack/gen-typed-client .PHONY: fmt @@ -60,6 +61,10 @@ vet: ## Run go vet against code. test: manifests generate fmt vet envtest ## Run tests. KUBEBUILDER_ASSETS="$(LOCALBIN)/k8s/current" go test ./... -coverprofile cover.out +.PHONY: test-fast ## Run tests without build. +test-fast: envtest ## Run tests. + KUBEBUILDER_ASSETS="$(LOCALBIN)/k8s/current" go test ./... -coverprofile cover.out -ginkgo.v + ##@ Build .PHONY: build @@ -131,6 +136,7 @@ $(LOCALBIN): ## Tool Binaries KUSTOMIZE ?= $(LOCALBIN)/kustomize CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen +COUNTERFEITER_GEN ?= $(LOCALBIN)/counterfeiter-gen ENVTEST ?= $(LOCALBIN)/setup-envtest CLIENT_GEN ?= $(shell pwd)/bin/client-gen INFORMER_GEN ?= $(shell pwd)/bin/informer-gen @@ -140,6 +146,7 @@ LISTER_GEN ?= $(shell pwd)/bin/lister-gen KUSTOMIZE_VERSION ?= v3.8.7 CONTROLLER_TOOLS_VERSION ?= v0.9.2 CODE_GENERATOR_VERSION ?= v0.23.4 +COUNTERFEITER_VERSION ?= v6.8.1 KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" .PHONY: kustomize @@ -152,6 +159,11 @@ controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessar $(CONTROLLER_GEN): $(LOCALBIN) test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION) +.PHONY: counterfeiter-gen +counterfeiter-gen: $(COUNTERFEITER_GEN) ## Download controller-gen locally if necessary. +$(COUNTERFEITER_GEN): $(LOCALBIN) + test -s $(COUNTERFEITER_GEN) || GOBIN=$(LOCALBIN) go install github.com/maxbrunsfeld/counterfeiter/v6@$(COUNTERFEITER_VERSION) + .PHONY: envtest envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. $(ENVTEST): $(LOCALBIN) diff --git a/go.mod b/go.mod index 4b8dcc7..86a7720 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,9 @@ go 1.21 require ( github.com/cloudfoundry-community/go-cfclient/v3 v3.0.0-alpha.5 + github.com/maxbrunsfeld/counterfeiter/v6 v6.8.1 + github.com/onsi/ginkgo/v2 v2.15.0 + github.com/onsi/gomega v1.31.1 github.com/pkg/errors v0.9.1 k8s.io/api v0.29.0 k8s.io/apiextensions-apiserver v0.29.0 @@ -27,19 +30,20 @@ require ( github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect + github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect github.com/google/uuid v1.3.0 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect @@ -55,12 +59,14 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect - golang.org/x/net v0.19.0 // indirect + golang.org/x/mod v0.14.0 // indirect + golang.org/x/net v0.20.0 // indirect golang.org/x/oauth2 v0.12.0 // indirect golang.org/x/sys v0.16.0 // indirect - golang.org/x/term v0.15.0 // indirect + golang.org/x/term v0.16.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect + golang.org/x/tools v0.17.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.31.0 // indirect diff --git a/go.sum b/go.sum index a1fff81..5e90dbd 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,10 @@ -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= -github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cloudfoundry-community/go-cfclient/v3 v3.0.0-alpha.5 h1:D6Kc4/ockmFHKNKUSeMNt3G82rddwZV6xWbjIXv8oaE= github.com/cloudfoundry-community/go-cfclient/v3 v3.0.0-alpha.5/go.mod h1:hFja9UPzLkfNxTF8EM0sqs7K+J2BCoLcjNmrMbP24xY= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q= @@ -13,29 +13,17 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE= -github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= -github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/evanphx/json-patch/v5 v5.8.0 h1:lRj6N9Nci7MvzrXuX6HFzU8XjmhPiXPlsKEy1u0KQro= github.com/evanphx/json-patch/v5 v5.8.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= -github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab h1:xveKWz2iaueeTaUgdetzel+U7exyigDYBryyVfV/rZk= @@ -52,7 +40,6 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= @@ -60,7 +47,6 @@ github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -71,16 +57,15 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJY github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -92,10 +77,10 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11 h1:YFh+sjyJTMQSYjKwM4dFKhJPJC/wfo98tPUc17HdoYw= github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11/go.mod h1:Ah2dBMoxZEqk118as2T4u4fjfXarE0pPnMJaArZQZsI= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= +github.com/maxbrunsfeld/counterfeiter/v6 v6.8.1 h1:NicmruxkeqHjDv03SfSxqmaLuisddudfP3h5wdXFbhM= +github.com/maxbrunsfeld/counterfeiter/v6 v6.8.1/go.mod h1:eyp4DdUJAKkr9tvxR3jWhw2mDK7CWABMG5r9uyaKC7I= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -103,62 +88,46 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= -github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= +github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= +github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= github.com/oxtoacart/bpool v0.0.0-20150712133111-4e1c5567d7c2 h1:CXwSGu/LYmbjEab5aMCs5usQRVBGThelUKBNnoSOuso= github.com/oxtoacart/bpool v0.0.0-20150712133111-4e1c5567d7c2/go.mod h1:L3UMQOThbttwfYRNFOWLLVXMhk5Lkio4GGOtw5UrxS0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= -github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= -github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= -github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= -github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= -github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg= -github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/sclevine/spec v1.4.0 h1:z/Q9idDcay5m5irkZ28M7PtQM4aOISzOpj4bUPkDee8= +github.com/sclevine/spec v1.4.0/go.mod h1:LvpgJaFyvQzRvc1kaDs0bulYwzC70PbiYjC4QnFHkOM= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= -go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= -go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -166,73 +135,45 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.13.0 h1:Nvo8UFsZ8X3BhAC9699Z1j7XQ3rsZnUUm7jfBEk1ueY= -golang.org/x/net v0.13.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= -golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= -golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= -golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= -golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= -golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= +golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -243,12 +184,9 @@ google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6 google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= @@ -260,61 +198,27 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw= -k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg= -k8s.io/api v0.28.3 h1:Gj1HtbSdB4P08C8rs9AR94MfSGpRhJgsS+GF9V26xMM= -k8s.io/api v0.28.3/go.mod h1:MRCV/jr1dW87/qJnZ57U5Pak65LGmQVkKTzf3AtKFHc= k8s.io/api v0.29.0 h1:NiCdQMY1QOp1H8lfRyeEf8eOwV6+0xA6XEE44ohDX2A= k8s.io/api v0.29.0/go.mod h1:sdVmXoz2Bo/cb77Pxi71IPTSErEW32xa4aXwKH7gfBA= -k8s.io/apiextensions-apiserver v0.28.2 h1:J6/QRWIKV2/HwBhHRVITMLYoypCoPY1ftigDM0Kn+QU= -k8s.io/apiextensions-apiserver v0.28.2/go.mod h1:5tnkxLGa9nefefYzWuAlWZ7RZYuN/765Au8cWLA6SRg= -k8s.io/apiextensions-apiserver v0.28.3 h1:Od7DEnhXHnHPZG+W9I97/fSQkVpVPQx2diy+2EtmY08= -k8s.io/apiextensions-apiserver v0.28.3/go.mod h1:NE1XJZ4On0hS11aWWJUTNkmVB03j9LM7gJSisbRt8Lc= k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0= k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc= -k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ= -k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU= -k8s.io/apimachinery v0.28.3 h1:B1wYx8txOaCQG0HmYF6nbpU8dg6HvA06x5tEffvOe7A= -k8s.io/apimachinery v0.28.3/go.mod h1:uQTKmIqs+rAYaq+DFaoD2X7pcjLOqbQX2AOiO0nIpb8= k8s.io/apimachinery v0.29.0 h1:+ACVktwyicPz0oc6MTMLwa2Pw3ouLAfAon1wPLtG48o= k8s.io/apimachinery v0.29.0/go.mod h1:eVBxQ/cwiJxH58eK/jd/vAk4mrxmVlnpBH5J2GbMeis= -k8s.io/client-go v0.28.2 h1:DNoYI1vGq0slMBN/SWKMZMw0Rq+0EQW6/AK4v9+3VeY= -k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY= -k8s.io/client-go v0.28.3 h1:2OqNb72ZuTZPKCl+4gTKvqao0AMOl9f3o2ijbAj3LI4= -k8s.io/client-go v0.28.3/go.mod h1:LTykbBp9gsA7SwqirlCXBWtK0guzfhpoW4qSm7i9dxo= k8s.io/client-go v0.29.0 h1:KmlDtFcrdUzOYrBhXHgKw5ycWzc3ryPX5mQe0SkG3y8= k8s.io/client-go v0.29.0/go.mod h1:yLkXH4HKMAywcrD82KMSmfYg2DlE8mepPR4JGSo5n38= -k8s.io/component-base v0.28.2 h1:Yc1yU+6AQSlpJZyvehm/NkJBII72rzlEsd6MkBQ+G0E= -k8s.io/component-base v0.28.2/go.mod h1:4IuQPQviQCg3du4si8GpMrhAIegxpsgPngPRR/zWpzc= -k8s.io/component-base v0.28.3 h1:rDy68eHKxq/80RiMb2Ld/tbH8uAE75JdCqJyi6lXMzI= -k8s.io/component-base v0.28.3/go.mod h1:fDJ6vpVNSk6cRo5wmDa6eKIG7UlIQkaFmZN2fYgIUD8= k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s= k8s.io/component-base v0.29.0/go.mod h1:sADonFTQ9Zc9yFLghpDpmNXEdHyQmFIGbiuZbqAXQ1M= -k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= -k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= -k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ= -k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM= k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= -k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk= -k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU= -sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU= -sigs.k8s.io/controller-runtime v0.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigwG62c4= -sigs.k8s.io/controller-runtime v0.16.3/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0= sigs.k8s.io/controller-runtime v0.17.0 h1:fjJQf8Ukya+VjogLO6/bNX9HE6Y2xpsO5+fyS26ur/s= sigs.k8s.io/controller-runtime v0.17.0/go.mod h1:+MngTvIQQQhfXtwfdGw/UOQ/aIaqsYywfCINOtwMO/s= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/internal/binding/binding_test.go b/internal/binding/binding_test.go new file mode 100644 index 0000000..6bbe046 --- /dev/null +++ b/internal/binding/binding_test.go @@ -0,0 +1,39 @@ +/* +SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and cf-service-operator contributors +SPDX-License-Identifier: Apache-2.0 +*/ +package binding + +import ( + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + "github.com/sap/cf-service-operator/api/v1alpha1" +) + +var _ = Describe("Binding Test", func() { + Context("When providing CR for service instance", func() { + It("should create new CF binding", func() { + binding := NewBinding(&v1alpha1.ServiceInstance{ + Spec: v1alpha1.ServiceInstanceSpec{ + Name: "name", + ServiceOfferingName: "offering", + ServicePlanName: "plan", + }, + }, nil, nil) + Expect(binding.metadata).ToNot(BeNil()) + Expect(binding.metadata["type"]).To(Equal("offering")) + Expect(binding.metadata["label"]).To(Equal("offering")) + Expect(binding.metadata["plan"]).To(Equal("plan")) + Expect(binding.metadata["instance_name"]).To(Equal("name")) + Expect(binding.metadata["instance_guid"]).To(Equal("")) + }) + }) + +}) + +func TestInternal(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Binding Test Suite") +} diff --git a/internal/controllers/space_controller_integration_test.go b/internal/controllers/space_controller_integration_test.go new file mode 100644 index 0000000..9edc1fa --- /dev/null +++ b/internal/controllers/space_controller_integration_test.go @@ -0,0 +1,236 @@ +/* +SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and cf-service-operator contributors +SPDX-License-Identifier: Apache-2.0 +*/ +package controllers + +import ( + "context" + "fmt" + "path/filepath" + "testing" + "time" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + "github.com/sap/cf-service-operator/api/v1alpha1" + "github.com/sap/cf-service-operator/internal/facade" + "github.com/sap/cf-service-operator/internal/facade/facadefakes" + "k8s.io/client-go/kubernetes/scheme" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/envtest" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" + + corev1 "k8s.io/api/core/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/rest" + metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" +) + +const ( + testNamespace = "cf-env-test" + testSpace = "test-space" + testSecret = "test-secret" + testOrganization = "test-organization" + testGuid = "test-guid" +) + +// timeout used for waiting on changes of custom resource (overridden by environment variable TEST_TIMEOUT) +var timeout = 3 * time.Second + +// interval used for polling custom resource +var interval = 500 * time.Millisecond + +var ( + k8sConfig *rest.Config + k8sClient client.Client + testCluster *envtest.Environment + k8sManager ctrl.Manager + cancelManager context.CancelFunc + fakeOrgClient *facadefakes.FakeOrganizationClient + fakeSpaceHealthChecker *facadefakes.FakeSpaceHealthChecker +) + +func TestSpaceController(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Space Controller Test Suite") +} + +// ----------------------------------------------------------------------------------------------- +// Suite +// ----------------------------------------------------------------------------------------------- + +var _ = BeforeSuite(func() { + By("bootstrapping test environment") + + var err error + + // enable logging of operator + logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true))) + + By("spin-up new cluster") + testCluster = &envtest.Environment{ + CRDDirectoryPaths: []string{filepath.Join("..", "..", "crds")}, + } + k8sConfig, err = testCluster.Start() + Expect(err).ToNot(HaveOccurred()) + Expect(k8sConfig).ToNot(BeNil()) + + By("creating K8s client") + Expect(v1alpha1.AddToScheme(scheme.Scheme)).To(Succeed()) + k8sClient, err = client.New(k8sConfig, client.Options{Scheme: scheme.Scheme}) + Expect(err).ToNot(HaveOccurred()) + Expect(k8sClient).ToNot(BeNil()) + + By("creating K8s manager") + k8sManager, err = ctrl.NewManager(k8sConfig, ctrl.Options{ + Scheme: scheme.Scheme, + Metrics: metricsserver.Options{ + BindAddress: "0", + }, + HealthProbeBindAddress: "0", + }) + Expect(err).ToNot(HaveOccurred()) + + By("adding controllers") + fakeOrgClient = &facadefakes.FakeOrganizationClient{} + fakeSpaceHealthChecker = &facadefakes.FakeSpaceHealthChecker{} + spaceReconciler := &SpaceReconciler{ + Kind: "Space", + Client: k8sManager.GetClient(), + Scheme: k8sManager.GetScheme(), + ClientBuilder: func(organizationName string, url string, username string, password string) (facade.OrganizationClient, error) { + return fakeOrgClient, nil + }, + HealthCheckerBuilder: func(spaceGuid string, url string, username string, password string) (facade.SpaceHealthChecker, error) { + return fakeSpaceHealthChecker, nil + }, + // see main.go for more parameters + } + Expect(spaceReconciler.SetupWithManager(k8sManager)).To(Succeed()) + + By("starting manager") + ctx, cancel := context.WithCancel(context.Background()) + cancelManager = cancel + go func() { + defer GinkgoRecover() + Expect(k8sManager.Start(ctx)).To(Succeed()) + }() +}) + +// ----------------------------------------------------------------------------------------------- + +var _ = AfterSuite(func() { + By("tearing down the test environment") + if cancelManager != nil { + cancelManager() + } + if testCluster != nil { + Expect(testCluster.Stop()).To(Succeed()) + } +}) + +// ----------------------------------------------------------------------------------------------- +// Tests +// ----------------------------------------------------------------------------------------------- + +var _ = Describe("Space Controller Integration Tests", func() { + Describe("Reconcile", func() { + ctx := context.Background() + + BeforeEach(func() { + Expect(k8sClient).ToNot(BeNil()) + + By("creating namespace") + namespace := &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{ + Name: testNamespace, + }, + } + err := k8sClient.Create(ctx, namespace) + if err != nil && !apierrors.IsAlreadyExists(err) { + Fail(err.Error()) + Fail("failed to create namespace") + } + + // Create secret (that will be read during reconcile) + secret := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: testSecret, + Namespace: testNamespace, + }, + Data: map[string][]byte{ + "username": []byte("test-username"), + "password": []byte("test-password"), + "url": []byte("https://api.cf.sap.hana.ondemand.com"), + }, + } + Expect(k8sClient.Create(ctx, secret)).To(Succeed()) + }) + + It("should create space", func() { + By("creating space CR") + var dummySpace = &facade.Space{Guid: testGuid, Name: testSpace, Owner: "me", Generation: 1} + fakeOrgClient.CreateSpaceReturns(nil) + fakeOrgClient.GetSpaceReturns(dummySpace, nil) + fakeOrgClient.GetSpaceReturnsOnCall(0, nil, nil) // only the 1st call returns no space, that controller will create the space. + fakeSpaceHealthChecker.CheckReturns(nil) + var sleep = 0 + // sleep = 500 // with Debugger + if sleep > 0 { + createSpaceCR(ctx) + time.Sleep(time.Duration(sleep) * time.Second) + } else { + spaceCR := createSpaceCR(ctx) + waitForSpaceCR(ctx, client.ObjectKeyFromObject(spaceCR)) + } + Expect(fakeOrgClient.CreateSpaceCallCount()).To(Equal(1)) + }) + }) + +}) + +// ----------------------------------------------------------------------------------------------- +// Helper Functions +// ----------------------------------------------------------------------------------------------- + +func createSpaceCR(ctx context.Context) *v1alpha1.Space { + spaceCR := &v1alpha1.Space{ + ObjectMeta: metav1.ObjectMeta{ + Name: testSpace, + Namespace: testNamespace, + }, + Spec: v1alpha1.SpaceSpec{ + AuthSecretName: testSecret, + OrganizationName: testOrganization, + }, + } + Expect(k8sClient.Create(ctx, spaceCR)).To(Succeed()) + + return spaceCR +} + +// ----------------------------------------------------------------------------------------------- + +func waitForSpaceCR(ctx context.Context, spaceKey client.ObjectKey) *v1alpha1.Space { + spaceCR := &v1alpha1.Space{} + expState := v1alpha1.SpaceStateReady + + Eventually(func() error { + By("waiting for status 'Ready' of space CR") + err := k8sClient.Get(ctx, spaceKey, spaceCR) + fmt.Println("*** Status is ", spaceCR.Status.State) + if err != nil { + return err + } + if spaceCR.Status.State != expState { + return fmt.Errorf("expected state %s but got %s", expState, spaceCR.Status.State) + } + return nil // success + }, timeout, interval).Should(Succeed(), "space CR should have been started") + + return spaceCR +} diff --git a/internal/facade/client.go b/internal/facade/client.go index d14185a..0e89b9c 100644 --- a/internal/facade/client.go +++ b/internal/facade/client.go @@ -62,6 +62,7 @@ const ( BindingStateDeleted BindingState = "Deleted" ) +//counterfeiter:generate . OrganizationClient type OrganizationClient interface { GetSpace(ctx context.Context, owner string) (*Space, error) CreateSpace(ctx context.Context, name string, owner string, generation int64) error @@ -74,6 +75,7 @@ type OrganizationClient interface { type OrganizationClientBuilder func(string, string, string, string) (OrganizationClient, error) +//counterfeiter:generate . SpaceClient type SpaceClient interface { GetInstance(ctx context.Context, owner string) (*Instance, error) CreateInstance(ctx context.Context, name string, servicePlanGuid string, parameters map[string]interface{}, tags []string, owner string, generation int64) error diff --git a/internal/facade/counterfeiter.go b/internal/facade/counterfeiter.go new file mode 100644 index 0000000..f238cb2 --- /dev/null +++ b/internal/facade/counterfeiter.go @@ -0,0 +1,9 @@ +/* +SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and cf-service-operator contributors +SPDX-License-Identifier: Apache-2.0 +*/ + +package facade + +// required once per package that contains interfaces to be mocked +//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -generate -header ../../hack/boilerplate.go.txt diff --git a/internal/facade/facadefakes/fake_organization_client.go b/internal/facade/facadefakes/fake_organization_client.go new file mode 100644 index 0000000..c5df333 --- /dev/null +++ b/internal/facade/facadefakes/fake_organization_client.go @@ -0,0 +1,593 @@ +/* +SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and cf-service-operator contributors +SPDX-License-Identifier: Apache-2.0 +*/ +// Code generated by counterfeiter. DO NOT EDIT. +package facadefakes + +import ( + "context" + "sync" + + "github.com/sap/cf-service-operator/internal/facade" +) + +type FakeOrganizationClient struct { + AddAuditorStub func(context.Context, string, string) error + addAuditorMutex sync.RWMutex + addAuditorArgsForCall []struct { + arg1 context.Context + arg2 string + arg3 string + } + addAuditorReturns struct { + result1 error + } + addAuditorReturnsOnCall map[int]struct { + result1 error + } + AddDeveloperStub func(context.Context, string, string) error + addDeveloperMutex sync.RWMutex + addDeveloperArgsForCall []struct { + arg1 context.Context + arg2 string + arg3 string + } + addDeveloperReturns struct { + result1 error + } + addDeveloperReturnsOnCall map[int]struct { + result1 error + } + AddManagerStub func(context.Context, string, string) error + addManagerMutex sync.RWMutex + addManagerArgsForCall []struct { + arg1 context.Context + arg2 string + arg3 string + } + addManagerReturns struct { + result1 error + } + addManagerReturnsOnCall map[int]struct { + result1 error + } + CreateSpaceStub func(context.Context, string, string, int64) error + createSpaceMutex sync.RWMutex + createSpaceArgsForCall []struct { + arg1 context.Context + arg2 string + arg3 string + arg4 int64 + } + createSpaceReturns struct { + result1 error + } + createSpaceReturnsOnCall map[int]struct { + result1 error + } + DeleteSpaceStub func(context.Context, string) error + deleteSpaceMutex sync.RWMutex + deleteSpaceArgsForCall []struct { + arg1 context.Context + arg2 string + } + deleteSpaceReturns struct { + result1 error + } + deleteSpaceReturnsOnCall map[int]struct { + result1 error + } + GetSpaceStub func(context.Context, string) (*facade.Space, error) + getSpaceMutex sync.RWMutex + getSpaceArgsForCall []struct { + arg1 context.Context + arg2 string + } + getSpaceReturns struct { + result1 *facade.Space + result2 error + } + getSpaceReturnsOnCall map[int]struct { + result1 *facade.Space + result2 error + } + UpdateSpaceStub func(context.Context, string, string, int64) error + updateSpaceMutex sync.RWMutex + updateSpaceArgsForCall []struct { + arg1 context.Context + arg2 string + arg3 string + arg4 int64 + } + updateSpaceReturns struct { + result1 error + } + updateSpaceReturnsOnCall map[int]struct { + result1 error + } + invocations map[string][][]interface{} + invocationsMutex sync.RWMutex +} + +func (fake *FakeOrganizationClient) AddAuditor(arg1 context.Context, arg2 string, arg3 string) error { + fake.addAuditorMutex.Lock() + ret, specificReturn := fake.addAuditorReturnsOnCall[len(fake.addAuditorArgsForCall)] + fake.addAuditorArgsForCall = append(fake.addAuditorArgsForCall, struct { + arg1 context.Context + arg2 string + arg3 string + }{arg1, arg2, arg3}) + stub := fake.AddAuditorStub + fakeReturns := fake.addAuditorReturns + fake.recordInvocation("AddAuditor", []interface{}{arg1, arg2, arg3}) + fake.addAuditorMutex.Unlock() + if stub != nil { + return stub(arg1, arg2, arg3) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeOrganizationClient) AddAuditorCallCount() int { + fake.addAuditorMutex.RLock() + defer fake.addAuditorMutex.RUnlock() + return len(fake.addAuditorArgsForCall) +} + +func (fake *FakeOrganizationClient) AddAuditorCalls(stub func(context.Context, string, string) error) { + fake.addAuditorMutex.Lock() + defer fake.addAuditorMutex.Unlock() + fake.AddAuditorStub = stub +} + +func (fake *FakeOrganizationClient) AddAuditorArgsForCall(i int) (context.Context, string, string) { + fake.addAuditorMutex.RLock() + defer fake.addAuditorMutex.RUnlock() + argsForCall := fake.addAuditorArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 +} + +func (fake *FakeOrganizationClient) AddAuditorReturns(result1 error) { + fake.addAuditorMutex.Lock() + defer fake.addAuditorMutex.Unlock() + fake.AddAuditorStub = nil + fake.addAuditorReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeOrganizationClient) AddAuditorReturnsOnCall(i int, result1 error) { + fake.addAuditorMutex.Lock() + defer fake.addAuditorMutex.Unlock() + fake.AddAuditorStub = nil + if fake.addAuditorReturnsOnCall == nil { + fake.addAuditorReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.addAuditorReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeOrganizationClient) AddDeveloper(arg1 context.Context, arg2 string, arg3 string) error { + fake.addDeveloperMutex.Lock() + ret, specificReturn := fake.addDeveloperReturnsOnCall[len(fake.addDeveloperArgsForCall)] + fake.addDeveloperArgsForCall = append(fake.addDeveloperArgsForCall, struct { + arg1 context.Context + arg2 string + arg3 string + }{arg1, arg2, arg3}) + stub := fake.AddDeveloperStub + fakeReturns := fake.addDeveloperReturns + fake.recordInvocation("AddDeveloper", []interface{}{arg1, arg2, arg3}) + fake.addDeveloperMutex.Unlock() + if stub != nil { + return stub(arg1, arg2, arg3) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeOrganizationClient) AddDeveloperCallCount() int { + fake.addDeveloperMutex.RLock() + defer fake.addDeveloperMutex.RUnlock() + return len(fake.addDeveloperArgsForCall) +} + +func (fake *FakeOrganizationClient) AddDeveloperCalls(stub func(context.Context, string, string) error) { + fake.addDeveloperMutex.Lock() + defer fake.addDeveloperMutex.Unlock() + fake.AddDeveloperStub = stub +} + +func (fake *FakeOrganizationClient) AddDeveloperArgsForCall(i int) (context.Context, string, string) { + fake.addDeveloperMutex.RLock() + defer fake.addDeveloperMutex.RUnlock() + argsForCall := fake.addDeveloperArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 +} + +func (fake *FakeOrganizationClient) AddDeveloperReturns(result1 error) { + fake.addDeveloperMutex.Lock() + defer fake.addDeveloperMutex.Unlock() + fake.AddDeveloperStub = nil + fake.addDeveloperReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeOrganizationClient) AddDeveloperReturnsOnCall(i int, result1 error) { + fake.addDeveloperMutex.Lock() + defer fake.addDeveloperMutex.Unlock() + fake.AddDeveloperStub = nil + if fake.addDeveloperReturnsOnCall == nil { + fake.addDeveloperReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.addDeveloperReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeOrganizationClient) AddManager(arg1 context.Context, arg2 string, arg3 string) error { + fake.addManagerMutex.Lock() + ret, specificReturn := fake.addManagerReturnsOnCall[len(fake.addManagerArgsForCall)] + fake.addManagerArgsForCall = append(fake.addManagerArgsForCall, struct { + arg1 context.Context + arg2 string + arg3 string + }{arg1, arg2, arg3}) + stub := fake.AddManagerStub + fakeReturns := fake.addManagerReturns + fake.recordInvocation("AddManager", []interface{}{arg1, arg2, arg3}) + fake.addManagerMutex.Unlock() + if stub != nil { + return stub(arg1, arg2, arg3) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeOrganizationClient) AddManagerCallCount() int { + fake.addManagerMutex.RLock() + defer fake.addManagerMutex.RUnlock() + return len(fake.addManagerArgsForCall) +} + +func (fake *FakeOrganizationClient) AddManagerCalls(stub func(context.Context, string, string) error) { + fake.addManagerMutex.Lock() + defer fake.addManagerMutex.Unlock() + fake.AddManagerStub = stub +} + +func (fake *FakeOrganizationClient) AddManagerArgsForCall(i int) (context.Context, string, string) { + fake.addManagerMutex.RLock() + defer fake.addManagerMutex.RUnlock() + argsForCall := fake.addManagerArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 +} + +func (fake *FakeOrganizationClient) AddManagerReturns(result1 error) { + fake.addManagerMutex.Lock() + defer fake.addManagerMutex.Unlock() + fake.AddManagerStub = nil + fake.addManagerReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeOrganizationClient) AddManagerReturnsOnCall(i int, result1 error) { + fake.addManagerMutex.Lock() + defer fake.addManagerMutex.Unlock() + fake.AddManagerStub = nil + if fake.addManagerReturnsOnCall == nil { + fake.addManagerReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.addManagerReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeOrganizationClient) CreateSpace(arg1 context.Context, arg2 string, arg3 string, arg4 int64) error { + fake.createSpaceMutex.Lock() + ret, specificReturn := fake.createSpaceReturnsOnCall[len(fake.createSpaceArgsForCall)] + fake.createSpaceArgsForCall = append(fake.createSpaceArgsForCall, struct { + arg1 context.Context + arg2 string + arg3 string + arg4 int64 + }{arg1, arg2, arg3, arg4}) + stub := fake.CreateSpaceStub + fakeReturns := fake.createSpaceReturns + fake.recordInvocation("CreateSpace", []interface{}{arg1, arg2, arg3, arg4}) + fake.createSpaceMutex.Unlock() + if stub != nil { + return stub(arg1, arg2, arg3, arg4) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeOrganizationClient) CreateSpaceCallCount() int { + fake.createSpaceMutex.RLock() + defer fake.createSpaceMutex.RUnlock() + return len(fake.createSpaceArgsForCall) +} + +func (fake *FakeOrganizationClient) CreateSpaceCalls(stub func(context.Context, string, string, int64) error) { + fake.createSpaceMutex.Lock() + defer fake.createSpaceMutex.Unlock() + fake.CreateSpaceStub = stub +} + +func (fake *FakeOrganizationClient) CreateSpaceArgsForCall(i int) (context.Context, string, string, int64) { + fake.createSpaceMutex.RLock() + defer fake.createSpaceMutex.RUnlock() + argsForCall := fake.createSpaceArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4 +} + +func (fake *FakeOrganizationClient) CreateSpaceReturns(result1 error) { + fake.createSpaceMutex.Lock() + defer fake.createSpaceMutex.Unlock() + fake.CreateSpaceStub = nil + fake.createSpaceReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeOrganizationClient) CreateSpaceReturnsOnCall(i int, result1 error) { + fake.createSpaceMutex.Lock() + defer fake.createSpaceMutex.Unlock() + fake.CreateSpaceStub = nil + if fake.createSpaceReturnsOnCall == nil { + fake.createSpaceReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.createSpaceReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeOrganizationClient) DeleteSpace(arg1 context.Context, arg2 string) error { + fake.deleteSpaceMutex.Lock() + ret, specificReturn := fake.deleteSpaceReturnsOnCall[len(fake.deleteSpaceArgsForCall)] + fake.deleteSpaceArgsForCall = append(fake.deleteSpaceArgsForCall, struct { + arg1 context.Context + arg2 string + }{arg1, arg2}) + stub := fake.DeleteSpaceStub + fakeReturns := fake.deleteSpaceReturns + fake.recordInvocation("DeleteSpace", []interface{}{arg1, arg2}) + fake.deleteSpaceMutex.Unlock() + if stub != nil { + return stub(arg1, arg2) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeOrganizationClient) DeleteSpaceCallCount() int { + fake.deleteSpaceMutex.RLock() + defer fake.deleteSpaceMutex.RUnlock() + return len(fake.deleteSpaceArgsForCall) +} + +func (fake *FakeOrganizationClient) DeleteSpaceCalls(stub func(context.Context, string) error) { + fake.deleteSpaceMutex.Lock() + defer fake.deleteSpaceMutex.Unlock() + fake.DeleteSpaceStub = stub +} + +func (fake *FakeOrganizationClient) DeleteSpaceArgsForCall(i int) (context.Context, string) { + fake.deleteSpaceMutex.RLock() + defer fake.deleteSpaceMutex.RUnlock() + argsForCall := fake.deleteSpaceArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2 +} + +func (fake *FakeOrganizationClient) DeleteSpaceReturns(result1 error) { + fake.deleteSpaceMutex.Lock() + defer fake.deleteSpaceMutex.Unlock() + fake.DeleteSpaceStub = nil + fake.deleteSpaceReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeOrganizationClient) DeleteSpaceReturnsOnCall(i int, result1 error) { + fake.deleteSpaceMutex.Lock() + defer fake.deleteSpaceMutex.Unlock() + fake.DeleteSpaceStub = nil + if fake.deleteSpaceReturnsOnCall == nil { + fake.deleteSpaceReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.deleteSpaceReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeOrganizationClient) GetSpace(arg1 context.Context, arg2 string) (*facade.Space, error) { + fake.getSpaceMutex.Lock() + ret, specificReturn := fake.getSpaceReturnsOnCall[len(fake.getSpaceArgsForCall)] + fake.getSpaceArgsForCall = append(fake.getSpaceArgsForCall, struct { + arg1 context.Context + arg2 string + }{arg1, arg2}) + stub := fake.GetSpaceStub + fakeReturns := fake.getSpaceReturns + fake.recordInvocation("GetSpace", []interface{}{arg1, arg2}) + fake.getSpaceMutex.Unlock() + if stub != nil { + return stub(arg1, arg2) + } + if specificReturn { + return ret.result1, ret.result2 + } + return fakeReturns.result1, fakeReturns.result2 +} + +func (fake *FakeOrganizationClient) GetSpaceCallCount() int { + fake.getSpaceMutex.RLock() + defer fake.getSpaceMutex.RUnlock() + return len(fake.getSpaceArgsForCall) +} + +func (fake *FakeOrganizationClient) GetSpaceCalls(stub func(context.Context, string) (*facade.Space, error)) { + fake.getSpaceMutex.Lock() + defer fake.getSpaceMutex.Unlock() + fake.GetSpaceStub = stub +} + +func (fake *FakeOrganizationClient) GetSpaceArgsForCall(i int) (context.Context, string) { + fake.getSpaceMutex.RLock() + defer fake.getSpaceMutex.RUnlock() + argsForCall := fake.getSpaceArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2 +} + +func (fake *FakeOrganizationClient) GetSpaceReturns(result1 *facade.Space, result2 error) { + fake.getSpaceMutex.Lock() + defer fake.getSpaceMutex.Unlock() + fake.GetSpaceStub = nil + fake.getSpaceReturns = struct { + result1 *facade.Space + result2 error + }{result1, result2} +} + +func (fake *FakeOrganizationClient) GetSpaceReturnsOnCall(i int, result1 *facade.Space, result2 error) { + fake.getSpaceMutex.Lock() + defer fake.getSpaceMutex.Unlock() + fake.GetSpaceStub = nil + if fake.getSpaceReturnsOnCall == nil { + fake.getSpaceReturnsOnCall = make(map[int]struct { + result1 *facade.Space + result2 error + }) + } + fake.getSpaceReturnsOnCall[i] = struct { + result1 *facade.Space + result2 error + }{result1, result2} +} + +func (fake *FakeOrganizationClient) UpdateSpace(arg1 context.Context, arg2 string, arg3 string, arg4 int64) error { + fake.updateSpaceMutex.Lock() + ret, specificReturn := fake.updateSpaceReturnsOnCall[len(fake.updateSpaceArgsForCall)] + fake.updateSpaceArgsForCall = append(fake.updateSpaceArgsForCall, struct { + arg1 context.Context + arg2 string + arg3 string + arg4 int64 + }{arg1, arg2, arg3, arg4}) + stub := fake.UpdateSpaceStub + fakeReturns := fake.updateSpaceReturns + fake.recordInvocation("UpdateSpace", []interface{}{arg1, arg2, arg3, arg4}) + fake.updateSpaceMutex.Unlock() + if stub != nil { + return stub(arg1, arg2, arg3, arg4) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeOrganizationClient) UpdateSpaceCallCount() int { + fake.updateSpaceMutex.RLock() + defer fake.updateSpaceMutex.RUnlock() + return len(fake.updateSpaceArgsForCall) +} + +func (fake *FakeOrganizationClient) UpdateSpaceCalls(stub func(context.Context, string, string, int64) error) { + fake.updateSpaceMutex.Lock() + defer fake.updateSpaceMutex.Unlock() + fake.UpdateSpaceStub = stub +} + +func (fake *FakeOrganizationClient) UpdateSpaceArgsForCall(i int) (context.Context, string, string, int64) { + fake.updateSpaceMutex.RLock() + defer fake.updateSpaceMutex.RUnlock() + argsForCall := fake.updateSpaceArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4 +} + +func (fake *FakeOrganizationClient) UpdateSpaceReturns(result1 error) { + fake.updateSpaceMutex.Lock() + defer fake.updateSpaceMutex.Unlock() + fake.UpdateSpaceStub = nil + fake.updateSpaceReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeOrganizationClient) UpdateSpaceReturnsOnCall(i int, result1 error) { + fake.updateSpaceMutex.Lock() + defer fake.updateSpaceMutex.Unlock() + fake.UpdateSpaceStub = nil + if fake.updateSpaceReturnsOnCall == nil { + fake.updateSpaceReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.updateSpaceReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeOrganizationClient) Invocations() map[string][][]interface{} { + fake.invocationsMutex.RLock() + defer fake.invocationsMutex.RUnlock() + fake.addAuditorMutex.RLock() + defer fake.addAuditorMutex.RUnlock() + fake.addDeveloperMutex.RLock() + defer fake.addDeveloperMutex.RUnlock() + fake.addManagerMutex.RLock() + defer fake.addManagerMutex.RUnlock() + fake.createSpaceMutex.RLock() + defer fake.createSpaceMutex.RUnlock() + fake.deleteSpaceMutex.RLock() + defer fake.deleteSpaceMutex.RUnlock() + fake.getSpaceMutex.RLock() + defer fake.getSpaceMutex.RUnlock() + fake.updateSpaceMutex.RLock() + defer fake.updateSpaceMutex.RUnlock() + copiedInvocations := map[string][][]interface{}{} + for key, value := range fake.invocations { + copiedInvocations[key] = value + } + return copiedInvocations +} + +func (fake *FakeOrganizationClient) recordInvocation(key string, args []interface{}) { + fake.invocationsMutex.Lock() + defer fake.invocationsMutex.Unlock() + if fake.invocations == nil { + fake.invocations = map[string][][]interface{}{} + } + if fake.invocations[key] == nil { + fake.invocations[key] = [][]interface{}{} + } + fake.invocations[key] = append(fake.invocations[key], args) +} + +var _ facade.OrganizationClient = new(FakeOrganizationClient) diff --git a/internal/facade/facadefakes/fake_space_client.go b/internal/facade/facadefakes/fake_space_client.go new file mode 100644 index 0000000..33dc43e --- /dev/null +++ b/internal/facade/facadefakes/fake_space_client.go @@ -0,0 +1,785 @@ +/* +SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and cf-service-operator contributors +SPDX-License-Identifier: Apache-2.0 +*/ +// Code generated by counterfeiter. DO NOT EDIT. +package facadefakes + +import ( + "context" + "sync" + + "github.com/sap/cf-service-operator/internal/facade" +) + +type FakeSpaceClient struct { + CreateBindingStub func(context.Context, string, string, map[string]interface{}, string, int64) error + createBindingMutex sync.RWMutex + createBindingArgsForCall []struct { + arg1 context.Context + arg2 string + arg3 string + arg4 map[string]interface{} + arg5 string + arg6 int64 + } + createBindingReturns struct { + result1 error + } + createBindingReturnsOnCall map[int]struct { + result1 error + } + CreateInstanceStub func(context.Context, string, string, map[string]interface{}, []string, string, int64) error + createInstanceMutex sync.RWMutex + createInstanceArgsForCall []struct { + arg1 context.Context + arg2 string + arg3 string + arg4 map[string]interface{} + arg5 []string + arg6 string + arg7 int64 + } + createInstanceReturns struct { + result1 error + } + createInstanceReturnsOnCall map[int]struct { + result1 error + } + DeleteBindingStub func(context.Context, string) error + deleteBindingMutex sync.RWMutex + deleteBindingArgsForCall []struct { + arg1 context.Context + arg2 string + } + deleteBindingReturns struct { + result1 error + } + deleteBindingReturnsOnCall map[int]struct { + result1 error + } + DeleteInstanceStub func(context.Context, string) error + deleteInstanceMutex sync.RWMutex + deleteInstanceArgsForCall []struct { + arg1 context.Context + arg2 string + } + deleteInstanceReturns struct { + result1 error + } + deleteInstanceReturnsOnCall map[int]struct { + result1 error + } + FindServicePlanStub func(context.Context, string, string, string) (string, error) + findServicePlanMutex sync.RWMutex + findServicePlanArgsForCall []struct { + arg1 context.Context + arg2 string + arg3 string + arg4 string + } + findServicePlanReturns struct { + result1 string + result2 error + } + findServicePlanReturnsOnCall map[int]struct { + result1 string + result2 error + } + GetBindingStub func(context.Context, string) (*facade.Binding, error) + getBindingMutex sync.RWMutex + getBindingArgsForCall []struct { + arg1 context.Context + arg2 string + } + getBindingReturns struct { + result1 *facade.Binding + result2 error + } + getBindingReturnsOnCall map[int]struct { + result1 *facade.Binding + result2 error + } + GetInstanceStub func(context.Context, string) (*facade.Instance, error) + getInstanceMutex sync.RWMutex + getInstanceArgsForCall []struct { + arg1 context.Context + arg2 string + } + getInstanceReturns struct { + result1 *facade.Instance + result2 error + } + getInstanceReturnsOnCall map[int]struct { + result1 *facade.Instance + result2 error + } + UpdateBindingStub func(context.Context, string, int64) error + updateBindingMutex sync.RWMutex + updateBindingArgsForCall []struct { + arg1 context.Context + arg2 string + arg3 int64 + } + updateBindingReturns struct { + result1 error + } + updateBindingReturnsOnCall map[int]struct { + result1 error + } + UpdateInstanceStub func(context.Context, string, string, string, map[string]interface{}, []string, int64) error + updateInstanceMutex sync.RWMutex + updateInstanceArgsForCall []struct { + arg1 context.Context + arg2 string + arg3 string + arg4 string + arg5 map[string]interface{} + arg6 []string + arg7 int64 + } + updateInstanceReturns struct { + result1 error + } + updateInstanceReturnsOnCall map[int]struct { + result1 error + } + invocations map[string][][]interface{} + invocationsMutex sync.RWMutex +} + +func (fake *FakeSpaceClient) CreateBinding(arg1 context.Context, arg2 string, arg3 string, arg4 map[string]interface{}, arg5 string, arg6 int64) error { + fake.createBindingMutex.Lock() + ret, specificReturn := fake.createBindingReturnsOnCall[len(fake.createBindingArgsForCall)] + fake.createBindingArgsForCall = append(fake.createBindingArgsForCall, struct { + arg1 context.Context + arg2 string + arg3 string + arg4 map[string]interface{} + arg5 string + arg6 int64 + }{arg1, arg2, arg3, arg4, arg5, arg6}) + stub := fake.CreateBindingStub + fakeReturns := fake.createBindingReturns + fake.recordInvocation("CreateBinding", []interface{}{arg1, arg2, arg3, arg4, arg5, arg6}) + fake.createBindingMutex.Unlock() + if stub != nil { + return stub(arg1, arg2, arg3, arg4, arg5, arg6) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeSpaceClient) CreateBindingCallCount() int { + fake.createBindingMutex.RLock() + defer fake.createBindingMutex.RUnlock() + return len(fake.createBindingArgsForCall) +} + +func (fake *FakeSpaceClient) CreateBindingCalls(stub func(context.Context, string, string, map[string]interface{}, string, int64) error) { + fake.createBindingMutex.Lock() + defer fake.createBindingMutex.Unlock() + fake.CreateBindingStub = stub +} + +func (fake *FakeSpaceClient) CreateBindingArgsForCall(i int) (context.Context, string, string, map[string]interface{}, string, int64) { + fake.createBindingMutex.RLock() + defer fake.createBindingMutex.RUnlock() + argsForCall := fake.createBindingArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4, argsForCall.arg5, argsForCall.arg6 +} + +func (fake *FakeSpaceClient) CreateBindingReturns(result1 error) { + fake.createBindingMutex.Lock() + defer fake.createBindingMutex.Unlock() + fake.CreateBindingStub = nil + fake.createBindingReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceClient) CreateBindingReturnsOnCall(i int, result1 error) { + fake.createBindingMutex.Lock() + defer fake.createBindingMutex.Unlock() + fake.CreateBindingStub = nil + if fake.createBindingReturnsOnCall == nil { + fake.createBindingReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.createBindingReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceClient) CreateInstance(arg1 context.Context, arg2 string, arg3 string, arg4 map[string]interface{}, arg5 []string, arg6 string, arg7 int64) error { + var arg5Copy []string + if arg5 != nil { + arg5Copy = make([]string, len(arg5)) + copy(arg5Copy, arg5) + } + fake.createInstanceMutex.Lock() + ret, specificReturn := fake.createInstanceReturnsOnCall[len(fake.createInstanceArgsForCall)] + fake.createInstanceArgsForCall = append(fake.createInstanceArgsForCall, struct { + arg1 context.Context + arg2 string + arg3 string + arg4 map[string]interface{} + arg5 []string + arg6 string + arg7 int64 + }{arg1, arg2, arg3, arg4, arg5Copy, arg6, arg7}) + stub := fake.CreateInstanceStub + fakeReturns := fake.createInstanceReturns + fake.recordInvocation("CreateInstance", []interface{}{arg1, arg2, arg3, arg4, arg5Copy, arg6, arg7}) + fake.createInstanceMutex.Unlock() + if stub != nil { + return stub(arg1, arg2, arg3, arg4, arg5, arg6, arg7) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeSpaceClient) CreateInstanceCallCount() int { + fake.createInstanceMutex.RLock() + defer fake.createInstanceMutex.RUnlock() + return len(fake.createInstanceArgsForCall) +} + +func (fake *FakeSpaceClient) CreateInstanceCalls(stub func(context.Context, string, string, map[string]interface{}, []string, string, int64) error) { + fake.createInstanceMutex.Lock() + defer fake.createInstanceMutex.Unlock() + fake.CreateInstanceStub = stub +} + +func (fake *FakeSpaceClient) CreateInstanceArgsForCall(i int) (context.Context, string, string, map[string]interface{}, []string, string, int64) { + fake.createInstanceMutex.RLock() + defer fake.createInstanceMutex.RUnlock() + argsForCall := fake.createInstanceArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4, argsForCall.arg5, argsForCall.arg6, argsForCall.arg7 +} + +func (fake *FakeSpaceClient) CreateInstanceReturns(result1 error) { + fake.createInstanceMutex.Lock() + defer fake.createInstanceMutex.Unlock() + fake.CreateInstanceStub = nil + fake.createInstanceReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceClient) CreateInstanceReturnsOnCall(i int, result1 error) { + fake.createInstanceMutex.Lock() + defer fake.createInstanceMutex.Unlock() + fake.CreateInstanceStub = nil + if fake.createInstanceReturnsOnCall == nil { + fake.createInstanceReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.createInstanceReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceClient) DeleteBinding(arg1 context.Context, arg2 string) error { + fake.deleteBindingMutex.Lock() + ret, specificReturn := fake.deleteBindingReturnsOnCall[len(fake.deleteBindingArgsForCall)] + fake.deleteBindingArgsForCall = append(fake.deleteBindingArgsForCall, struct { + arg1 context.Context + arg2 string + }{arg1, arg2}) + stub := fake.DeleteBindingStub + fakeReturns := fake.deleteBindingReturns + fake.recordInvocation("DeleteBinding", []interface{}{arg1, arg2}) + fake.deleteBindingMutex.Unlock() + if stub != nil { + return stub(arg1, arg2) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeSpaceClient) DeleteBindingCallCount() int { + fake.deleteBindingMutex.RLock() + defer fake.deleteBindingMutex.RUnlock() + return len(fake.deleteBindingArgsForCall) +} + +func (fake *FakeSpaceClient) DeleteBindingCalls(stub func(context.Context, string) error) { + fake.deleteBindingMutex.Lock() + defer fake.deleteBindingMutex.Unlock() + fake.DeleteBindingStub = stub +} + +func (fake *FakeSpaceClient) DeleteBindingArgsForCall(i int) (context.Context, string) { + fake.deleteBindingMutex.RLock() + defer fake.deleteBindingMutex.RUnlock() + argsForCall := fake.deleteBindingArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2 +} + +func (fake *FakeSpaceClient) DeleteBindingReturns(result1 error) { + fake.deleteBindingMutex.Lock() + defer fake.deleteBindingMutex.Unlock() + fake.DeleteBindingStub = nil + fake.deleteBindingReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceClient) DeleteBindingReturnsOnCall(i int, result1 error) { + fake.deleteBindingMutex.Lock() + defer fake.deleteBindingMutex.Unlock() + fake.DeleteBindingStub = nil + if fake.deleteBindingReturnsOnCall == nil { + fake.deleteBindingReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.deleteBindingReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceClient) DeleteInstance(arg1 context.Context, arg2 string) error { + fake.deleteInstanceMutex.Lock() + ret, specificReturn := fake.deleteInstanceReturnsOnCall[len(fake.deleteInstanceArgsForCall)] + fake.deleteInstanceArgsForCall = append(fake.deleteInstanceArgsForCall, struct { + arg1 context.Context + arg2 string + }{arg1, arg2}) + stub := fake.DeleteInstanceStub + fakeReturns := fake.deleteInstanceReturns + fake.recordInvocation("DeleteInstance", []interface{}{arg1, arg2}) + fake.deleteInstanceMutex.Unlock() + if stub != nil { + return stub(arg1, arg2) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeSpaceClient) DeleteInstanceCallCount() int { + fake.deleteInstanceMutex.RLock() + defer fake.deleteInstanceMutex.RUnlock() + return len(fake.deleteInstanceArgsForCall) +} + +func (fake *FakeSpaceClient) DeleteInstanceCalls(stub func(context.Context, string) error) { + fake.deleteInstanceMutex.Lock() + defer fake.deleteInstanceMutex.Unlock() + fake.DeleteInstanceStub = stub +} + +func (fake *FakeSpaceClient) DeleteInstanceArgsForCall(i int) (context.Context, string) { + fake.deleteInstanceMutex.RLock() + defer fake.deleteInstanceMutex.RUnlock() + argsForCall := fake.deleteInstanceArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2 +} + +func (fake *FakeSpaceClient) DeleteInstanceReturns(result1 error) { + fake.deleteInstanceMutex.Lock() + defer fake.deleteInstanceMutex.Unlock() + fake.DeleteInstanceStub = nil + fake.deleteInstanceReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceClient) DeleteInstanceReturnsOnCall(i int, result1 error) { + fake.deleteInstanceMutex.Lock() + defer fake.deleteInstanceMutex.Unlock() + fake.DeleteInstanceStub = nil + if fake.deleteInstanceReturnsOnCall == nil { + fake.deleteInstanceReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.deleteInstanceReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceClient) FindServicePlan(arg1 context.Context, arg2 string, arg3 string, arg4 string) (string, error) { + fake.findServicePlanMutex.Lock() + ret, specificReturn := fake.findServicePlanReturnsOnCall[len(fake.findServicePlanArgsForCall)] + fake.findServicePlanArgsForCall = append(fake.findServicePlanArgsForCall, struct { + arg1 context.Context + arg2 string + arg3 string + arg4 string + }{arg1, arg2, arg3, arg4}) + stub := fake.FindServicePlanStub + fakeReturns := fake.findServicePlanReturns + fake.recordInvocation("FindServicePlan", []interface{}{arg1, arg2, arg3, arg4}) + fake.findServicePlanMutex.Unlock() + if stub != nil { + return stub(arg1, arg2, arg3, arg4) + } + if specificReturn { + return ret.result1, ret.result2 + } + return fakeReturns.result1, fakeReturns.result2 +} + +func (fake *FakeSpaceClient) FindServicePlanCallCount() int { + fake.findServicePlanMutex.RLock() + defer fake.findServicePlanMutex.RUnlock() + return len(fake.findServicePlanArgsForCall) +} + +func (fake *FakeSpaceClient) FindServicePlanCalls(stub func(context.Context, string, string, string) (string, error)) { + fake.findServicePlanMutex.Lock() + defer fake.findServicePlanMutex.Unlock() + fake.FindServicePlanStub = stub +} + +func (fake *FakeSpaceClient) FindServicePlanArgsForCall(i int) (context.Context, string, string, string) { + fake.findServicePlanMutex.RLock() + defer fake.findServicePlanMutex.RUnlock() + argsForCall := fake.findServicePlanArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4 +} + +func (fake *FakeSpaceClient) FindServicePlanReturns(result1 string, result2 error) { + fake.findServicePlanMutex.Lock() + defer fake.findServicePlanMutex.Unlock() + fake.FindServicePlanStub = nil + fake.findServicePlanReturns = struct { + result1 string + result2 error + }{result1, result2} +} + +func (fake *FakeSpaceClient) FindServicePlanReturnsOnCall(i int, result1 string, result2 error) { + fake.findServicePlanMutex.Lock() + defer fake.findServicePlanMutex.Unlock() + fake.FindServicePlanStub = nil + if fake.findServicePlanReturnsOnCall == nil { + fake.findServicePlanReturnsOnCall = make(map[int]struct { + result1 string + result2 error + }) + } + fake.findServicePlanReturnsOnCall[i] = struct { + result1 string + result2 error + }{result1, result2} +} + +func (fake *FakeSpaceClient) GetBinding(arg1 context.Context, arg2 string) (*facade.Binding, error) { + fake.getBindingMutex.Lock() + ret, specificReturn := fake.getBindingReturnsOnCall[len(fake.getBindingArgsForCall)] + fake.getBindingArgsForCall = append(fake.getBindingArgsForCall, struct { + arg1 context.Context + arg2 string + }{arg1, arg2}) + stub := fake.GetBindingStub + fakeReturns := fake.getBindingReturns + fake.recordInvocation("GetBinding", []interface{}{arg1, arg2}) + fake.getBindingMutex.Unlock() + if stub != nil { + return stub(arg1, arg2) + } + if specificReturn { + return ret.result1, ret.result2 + } + return fakeReturns.result1, fakeReturns.result2 +} + +func (fake *FakeSpaceClient) GetBindingCallCount() int { + fake.getBindingMutex.RLock() + defer fake.getBindingMutex.RUnlock() + return len(fake.getBindingArgsForCall) +} + +func (fake *FakeSpaceClient) GetBindingCalls(stub func(context.Context, string) (*facade.Binding, error)) { + fake.getBindingMutex.Lock() + defer fake.getBindingMutex.Unlock() + fake.GetBindingStub = stub +} + +func (fake *FakeSpaceClient) GetBindingArgsForCall(i int) (context.Context, string) { + fake.getBindingMutex.RLock() + defer fake.getBindingMutex.RUnlock() + argsForCall := fake.getBindingArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2 +} + +func (fake *FakeSpaceClient) GetBindingReturns(result1 *facade.Binding, result2 error) { + fake.getBindingMutex.Lock() + defer fake.getBindingMutex.Unlock() + fake.GetBindingStub = nil + fake.getBindingReturns = struct { + result1 *facade.Binding + result2 error + }{result1, result2} +} + +func (fake *FakeSpaceClient) GetBindingReturnsOnCall(i int, result1 *facade.Binding, result2 error) { + fake.getBindingMutex.Lock() + defer fake.getBindingMutex.Unlock() + fake.GetBindingStub = nil + if fake.getBindingReturnsOnCall == nil { + fake.getBindingReturnsOnCall = make(map[int]struct { + result1 *facade.Binding + result2 error + }) + } + fake.getBindingReturnsOnCall[i] = struct { + result1 *facade.Binding + result2 error + }{result1, result2} +} + +func (fake *FakeSpaceClient) GetInstance(arg1 context.Context, arg2 string) (*facade.Instance, error) { + fake.getInstanceMutex.Lock() + ret, specificReturn := fake.getInstanceReturnsOnCall[len(fake.getInstanceArgsForCall)] + fake.getInstanceArgsForCall = append(fake.getInstanceArgsForCall, struct { + arg1 context.Context + arg2 string + }{arg1, arg2}) + stub := fake.GetInstanceStub + fakeReturns := fake.getInstanceReturns + fake.recordInvocation("GetInstance", []interface{}{arg1, arg2}) + fake.getInstanceMutex.Unlock() + if stub != nil { + return stub(arg1, arg2) + } + if specificReturn { + return ret.result1, ret.result2 + } + return fakeReturns.result1, fakeReturns.result2 +} + +func (fake *FakeSpaceClient) GetInstanceCallCount() int { + fake.getInstanceMutex.RLock() + defer fake.getInstanceMutex.RUnlock() + return len(fake.getInstanceArgsForCall) +} + +func (fake *FakeSpaceClient) GetInstanceCalls(stub func(context.Context, string) (*facade.Instance, error)) { + fake.getInstanceMutex.Lock() + defer fake.getInstanceMutex.Unlock() + fake.GetInstanceStub = stub +} + +func (fake *FakeSpaceClient) GetInstanceArgsForCall(i int) (context.Context, string) { + fake.getInstanceMutex.RLock() + defer fake.getInstanceMutex.RUnlock() + argsForCall := fake.getInstanceArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2 +} + +func (fake *FakeSpaceClient) GetInstanceReturns(result1 *facade.Instance, result2 error) { + fake.getInstanceMutex.Lock() + defer fake.getInstanceMutex.Unlock() + fake.GetInstanceStub = nil + fake.getInstanceReturns = struct { + result1 *facade.Instance + result2 error + }{result1, result2} +} + +func (fake *FakeSpaceClient) GetInstanceReturnsOnCall(i int, result1 *facade.Instance, result2 error) { + fake.getInstanceMutex.Lock() + defer fake.getInstanceMutex.Unlock() + fake.GetInstanceStub = nil + if fake.getInstanceReturnsOnCall == nil { + fake.getInstanceReturnsOnCall = make(map[int]struct { + result1 *facade.Instance + result2 error + }) + } + fake.getInstanceReturnsOnCall[i] = struct { + result1 *facade.Instance + result2 error + }{result1, result2} +} + +func (fake *FakeSpaceClient) UpdateBinding(arg1 context.Context, arg2 string, arg3 int64) error { + fake.updateBindingMutex.Lock() + ret, specificReturn := fake.updateBindingReturnsOnCall[len(fake.updateBindingArgsForCall)] + fake.updateBindingArgsForCall = append(fake.updateBindingArgsForCall, struct { + arg1 context.Context + arg2 string + arg3 int64 + }{arg1, arg2, arg3}) + stub := fake.UpdateBindingStub + fakeReturns := fake.updateBindingReturns + fake.recordInvocation("UpdateBinding", []interface{}{arg1, arg2, arg3}) + fake.updateBindingMutex.Unlock() + if stub != nil { + return stub(arg1, arg2, arg3) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeSpaceClient) UpdateBindingCallCount() int { + fake.updateBindingMutex.RLock() + defer fake.updateBindingMutex.RUnlock() + return len(fake.updateBindingArgsForCall) +} + +func (fake *FakeSpaceClient) UpdateBindingCalls(stub func(context.Context, string, int64) error) { + fake.updateBindingMutex.Lock() + defer fake.updateBindingMutex.Unlock() + fake.UpdateBindingStub = stub +} + +func (fake *FakeSpaceClient) UpdateBindingArgsForCall(i int) (context.Context, string, int64) { + fake.updateBindingMutex.RLock() + defer fake.updateBindingMutex.RUnlock() + argsForCall := fake.updateBindingArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 +} + +func (fake *FakeSpaceClient) UpdateBindingReturns(result1 error) { + fake.updateBindingMutex.Lock() + defer fake.updateBindingMutex.Unlock() + fake.UpdateBindingStub = nil + fake.updateBindingReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceClient) UpdateBindingReturnsOnCall(i int, result1 error) { + fake.updateBindingMutex.Lock() + defer fake.updateBindingMutex.Unlock() + fake.UpdateBindingStub = nil + if fake.updateBindingReturnsOnCall == nil { + fake.updateBindingReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.updateBindingReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceClient) UpdateInstance(arg1 context.Context, arg2 string, arg3 string, arg4 string, arg5 map[string]interface{}, arg6 []string, arg7 int64) error { + var arg6Copy []string + if arg6 != nil { + arg6Copy = make([]string, len(arg6)) + copy(arg6Copy, arg6) + } + fake.updateInstanceMutex.Lock() + ret, specificReturn := fake.updateInstanceReturnsOnCall[len(fake.updateInstanceArgsForCall)] + fake.updateInstanceArgsForCall = append(fake.updateInstanceArgsForCall, struct { + arg1 context.Context + arg2 string + arg3 string + arg4 string + arg5 map[string]interface{} + arg6 []string + arg7 int64 + }{arg1, arg2, arg3, arg4, arg5, arg6Copy, arg7}) + stub := fake.UpdateInstanceStub + fakeReturns := fake.updateInstanceReturns + fake.recordInvocation("UpdateInstance", []interface{}{arg1, arg2, arg3, arg4, arg5, arg6Copy, arg7}) + fake.updateInstanceMutex.Unlock() + if stub != nil { + return stub(arg1, arg2, arg3, arg4, arg5, arg6, arg7) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeSpaceClient) UpdateInstanceCallCount() int { + fake.updateInstanceMutex.RLock() + defer fake.updateInstanceMutex.RUnlock() + return len(fake.updateInstanceArgsForCall) +} + +func (fake *FakeSpaceClient) UpdateInstanceCalls(stub func(context.Context, string, string, string, map[string]interface{}, []string, int64) error) { + fake.updateInstanceMutex.Lock() + defer fake.updateInstanceMutex.Unlock() + fake.UpdateInstanceStub = stub +} + +func (fake *FakeSpaceClient) UpdateInstanceArgsForCall(i int) (context.Context, string, string, string, map[string]interface{}, []string, int64) { + fake.updateInstanceMutex.RLock() + defer fake.updateInstanceMutex.RUnlock() + argsForCall := fake.updateInstanceArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4, argsForCall.arg5, argsForCall.arg6, argsForCall.arg7 +} + +func (fake *FakeSpaceClient) UpdateInstanceReturns(result1 error) { + fake.updateInstanceMutex.Lock() + defer fake.updateInstanceMutex.Unlock() + fake.UpdateInstanceStub = nil + fake.updateInstanceReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceClient) UpdateInstanceReturnsOnCall(i int, result1 error) { + fake.updateInstanceMutex.Lock() + defer fake.updateInstanceMutex.Unlock() + fake.UpdateInstanceStub = nil + if fake.updateInstanceReturnsOnCall == nil { + fake.updateInstanceReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.updateInstanceReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceClient) Invocations() map[string][][]interface{} { + fake.invocationsMutex.RLock() + defer fake.invocationsMutex.RUnlock() + fake.createBindingMutex.RLock() + defer fake.createBindingMutex.RUnlock() + fake.createInstanceMutex.RLock() + defer fake.createInstanceMutex.RUnlock() + fake.deleteBindingMutex.RLock() + defer fake.deleteBindingMutex.RUnlock() + fake.deleteInstanceMutex.RLock() + defer fake.deleteInstanceMutex.RUnlock() + fake.findServicePlanMutex.RLock() + defer fake.findServicePlanMutex.RUnlock() + fake.getBindingMutex.RLock() + defer fake.getBindingMutex.RUnlock() + fake.getInstanceMutex.RLock() + defer fake.getInstanceMutex.RUnlock() + fake.updateBindingMutex.RLock() + defer fake.updateBindingMutex.RUnlock() + fake.updateInstanceMutex.RLock() + defer fake.updateInstanceMutex.RUnlock() + copiedInvocations := map[string][][]interface{}{} + for key, value := range fake.invocations { + copiedInvocations[key] = value + } + return copiedInvocations +} + +func (fake *FakeSpaceClient) recordInvocation(key string, args []interface{}) { + fake.invocationsMutex.Lock() + defer fake.invocationsMutex.Unlock() + if fake.invocations == nil { + fake.invocations = map[string][][]interface{}{} + } + if fake.invocations[key] == nil { + fake.invocations[key] = [][]interface{}{} + } + fake.invocations[key] = append(fake.invocations[key], args) +} + +var _ facade.SpaceClient = new(FakeSpaceClient) diff --git a/internal/facade/facadefakes/fake_space_health_checker.go b/internal/facade/facadefakes/fake_space_health_checker.go new file mode 100644 index 0000000..0ac62e2 --- /dev/null +++ b/internal/facade/facadefakes/fake_space_health_checker.go @@ -0,0 +1,116 @@ +/* +SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and cf-service-operator contributors +SPDX-License-Identifier: Apache-2.0 +*/ +// Code generated by counterfeiter. DO NOT EDIT. +package facadefakes + +import ( + "context" + "sync" + + "github.com/sap/cf-service-operator/internal/facade" +) + +type FakeSpaceHealthChecker struct { + CheckStub func(context.Context) error + checkMutex sync.RWMutex + checkArgsForCall []struct { + arg1 context.Context + } + checkReturns struct { + result1 error + } + checkReturnsOnCall map[int]struct { + result1 error + } + invocations map[string][][]interface{} + invocationsMutex sync.RWMutex +} + +func (fake *FakeSpaceHealthChecker) Check(arg1 context.Context) error { + fake.checkMutex.Lock() + ret, specificReturn := fake.checkReturnsOnCall[len(fake.checkArgsForCall)] + fake.checkArgsForCall = append(fake.checkArgsForCall, struct { + arg1 context.Context + }{arg1}) + stub := fake.CheckStub + fakeReturns := fake.checkReturns + fake.recordInvocation("Check", []interface{}{arg1}) + fake.checkMutex.Unlock() + if stub != nil { + return stub(arg1) + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *FakeSpaceHealthChecker) CheckCallCount() int { + fake.checkMutex.RLock() + defer fake.checkMutex.RUnlock() + return len(fake.checkArgsForCall) +} + +func (fake *FakeSpaceHealthChecker) CheckCalls(stub func(context.Context) error) { + fake.checkMutex.Lock() + defer fake.checkMutex.Unlock() + fake.CheckStub = stub +} + +func (fake *FakeSpaceHealthChecker) CheckArgsForCall(i int) context.Context { + fake.checkMutex.RLock() + defer fake.checkMutex.RUnlock() + argsForCall := fake.checkArgsForCall[i] + return argsForCall.arg1 +} + +func (fake *FakeSpaceHealthChecker) CheckReturns(result1 error) { + fake.checkMutex.Lock() + defer fake.checkMutex.Unlock() + fake.CheckStub = nil + fake.checkReturns = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceHealthChecker) CheckReturnsOnCall(i int, result1 error) { + fake.checkMutex.Lock() + defer fake.checkMutex.Unlock() + fake.CheckStub = nil + if fake.checkReturnsOnCall == nil { + fake.checkReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.checkReturnsOnCall[i] = struct { + result1 error + }{result1} +} + +func (fake *FakeSpaceHealthChecker) Invocations() map[string][][]interface{} { + fake.invocationsMutex.RLock() + defer fake.invocationsMutex.RUnlock() + fake.checkMutex.RLock() + defer fake.checkMutex.RUnlock() + copiedInvocations := map[string][][]interface{}{} + for key, value := range fake.invocations { + copiedInvocations[key] = value + } + return copiedInvocations +} + +func (fake *FakeSpaceHealthChecker) recordInvocation(key string, args []interface{}) { + fake.invocationsMutex.Lock() + defer fake.invocationsMutex.Unlock() + if fake.invocations == nil { + fake.invocations = map[string][][]interface{}{} + } + if fake.invocations[key] == nil { + fake.invocations[key] = [][]interface{}{} + } + fake.invocations[key] = append(fake.invocations[key], args) +} + +var _ facade.SpaceHealthChecker = new(FakeSpaceHealthChecker) diff --git a/internal/facade/health.go b/internal/facade/health.go index 095a12a..394ba6d 100644 --- a/internal/facade/health.go +++ b/internal/facade/health.go @@ -7,6 +7,7 @@ package facade import "context" +//counterfeiter:generate . SpaceHealthChecker type SpaceHealthChecker interface { Check(ctx context.Context) error } diff --git a/tools/tools.go b/tools/tools.go new file mode 100644 index 0000000..e5dd60f --- /dev/null +++ b/tools/tools.go @@ -0,0 +1,15 @@ +//go:build tools + +/* +SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and cf-service-operator contributors +SPDX-License-Identifier: Apache-2.0 +*/ + +package tools + +import ( + _ "github.com/maxbrunsfeld/counterfeiter/v6" +) + +// This file imports packages that are used when running go generate, or used +// during the development process but not otherwise depended on by built code.