...
1#!/usr/bin/env bash
2
3# Copyright 2017 The Kubernetes Authors.
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17set -o errexit
18set -o nounset
19set -o pipefail
20
21if [[ -z "${1-}" ]]; then
22 echo "Usage: record_testcase.sh testcase-name"
23 exit 1
24fi
25
26# Clean up the test server
27function cleanup {
28 if [[ -n "${pid-}" ]]; then
29 echo "Stopping recording server (${pid})"
30 # kill the process `go run` launched
31 pkill -P "${pid}"
32 # kill the `go run` process itself
33 kill -9 "${pid}"
34 fi
35}
36
37testcase="${1}"
38
39test_root="$(dirname "${BASH_SOURCE[0]}")"
40testcase_dir="${test_root}/testcase-${testcase}"
41mkdir -p "${testcase_dir}"
42
43pushd "${testcase_dir}"
44 export EDITOR="../record_editor.sh"
45 go run "../record.go" &
46 pid=$!
47 trap cleanup EXIT
48 echo "Started recording server (${pid})"
49
50 # Make a kubeconfig that makes kubectl talk to our test server
51 edit_kubeconfig="${TMP:-/tmp}/edit_test.kubeconfig"
52 echo "apiVersion: v1
53clusters:
54- cluster:
55 server: http://localhost:8081
56 name: test
57contexts:
58- context:
59 cluster: test
60 user: test
61 name: test
62current-context: test
63kind: Config
64users: []
65" > "${edit_kubeconfig}"
66 export KUBECONFIG="${edit_kubeconfig}"
67
68 echo "Starting subshell. Type exit when finished."
69 bash
70popd
View as plain text