// Copyright 2019 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 trafficmanagement

import (
	"testing"

	"istio.io/istio/pkg/test/framework"
	"istio.io/istio/pkg/test/istioio"
)

// https://preliminary.istio.io/docs/tasks/traffic-management/mirroring/
func TestMirror(t *testing.T) {
	framework.
		NewTest(t).
		Run(istioio.NewBuilder("tasks__traffic_management__mirroring").
			Add(istioio.Script{
				Input: istioio.Path("scripts/mirror_deploy.txt"),
			}).
			Add(istioio.MultiPodWait("istio-io-mirror")).
			Add(istioio.Script{
				Input: istioio.Path("scripts/mirror_traffic.txt"),
			}).
			Defer(istioio.Script{
				Input: istioio.Inline{
					FileName: "cleanup.sh",
					Value: `
# $snippet remove_rules.sh syntax="bash"
$ kubectl delete virtualservice httpbin
$ kubectl delete destinationrule httpbin
# $endsnippet

# $snippet remove_httpbin.sh syntax="bash"
$ kubectl delete deploy httpbin-v1 httpbin-v2 sleep
$ kubectl delete svc httpbin
# $endsnippet

$ kubectl delete ns istio-io-mirror
`,
				},
			}).
			Build())
}
