istio.io/tests/examples/bookinfo_test.go

71 lines
2.4 KiB
Go

// Copyright Istio Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package security
import (
"testing"
"istio.io/istio/pkg/test/framework"
"istio.io/istio/pkg/test/framework/components/environment/kube"
"istio.io/istio.io/pkg/test/istioio"
)
const (
ingressPortCommand = `$(kubectl -n istio-system \
get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')`
ingressHostCommand = `$(kubectl -n istio-system \
get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')`
minikubeIngressPortCommand = `$(kubectl -n istio-system \
get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')`
minikubeIngressHostCommand = `$(kubectl -n istio-system \
get pod -l istio=ingressgateway -o jsonpath='{.items[0].status.hostIP}')`
)
//https://istio.io/docs/examples/bookinfo/
//https://github.com/istio/istio.io/blob/master/content/en/docs/examples/bookinfo/index.md
func TestBookinfo(t *testing.T) {
framework.
NewTest(t).
Run(istioio.NewBuilder("examples__bookinfo").
Add(istioio.Script{
Input: istioio.InputSelectorFunc(func(ctx istioio.Context) istioio.Input {
e := ctx.Environment().(*kube.Environment)
portCommand := ingressPortCommand
hostCommand := ingressHostCommand
if e.Settings().Minikube {
portCommand = minikubeIngressPortCommand
hostCommand = minikubeIngressHostCommand
}
return istioio.Evaluate(
istioio.Path("scripts/bookinfo.txt"),
map[string]interface{}{
"ingressPortCommand": portCommand,
"ingressHostCommand": hostCommand,
},
).SelectInput(ctx)
}),
}).
Defer(istioio.Script{
Input: istioio.Inline{
FileName: "cleanup.sh",
Value: `
kubectl delete -n default -f samples/bookinfo/platform/kube/bookinfo.yaml || true
kubectl delete -n default -f samples/bookinfo/networking/bookinfo-gateway.yaml || true`,
},
}).
Build())
}