summaryrefslogtreecommitdiff
path: root/grpc/tools/run_tests/performance/loadtest_concat_yaml.py
diff options
context:
space:
mode:
Diffstat (limited to 'grpc/tools/run_tests/performance/loadtest_concat_yaml.py')
-rwxr-xr-xgrpc/tools/run_tests/performance/loadtest_concat_yaml.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/grpc/tools/run_tests/performance/loadtest_concat_yaml.py b/grpc/tools/run_tests/performance/loadtest_concat_yaml.py
new file mode 100755
index 00000000..bf64fdc6
--- /dev/null
+++ b/grpc/tools/run_tests/performance/loadtest_concat_yaml.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python3
+# Copyright 2021 The gRPC 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.
+
+# Helper script to concatenate YAML files.
+#
+# This script concatenates multiple YAML files into a single multipart file.
+# Input files are not parsed but processed as strings. This is a convenience
+# script to concatenate output files generated by multiple runs of
+# loadtest_config.py.
+
+import argparse
+import sys
+
+from typing import Iterable
+
+
+def gen_content_strings(input_files: Iterable[str]) -> Iterable[str]:
+ if not input_files:
+ return
+
+ with open(input_files[0]) as f:
+ content = f.read()
+ yield content
+
+ for input_file in input_files[1:]:
+ with open(input_file) as f:
+ content = f.read()
+ yield '---\n'
+ yield content
+
+
+def main() -> None:
+ argp = argparse.ArgumentParser(description='Concatenates YAML files.')
+ argp.add_argument('-i',
+ '--inputs',
+ action='extend',
+ nargs='+',
+ type=str,
+ required=True,
+ help='Input files.')
+ argp.add_argument(
+ '-o',
+ '--output',
+ type=str,
+ help='Concatenated output file. Output to stdout if not set.')
+ args = argp.parse_args()
+
+ with open(args.output, 'w') if args.output else sys.stdout as f:
+ for content in gen_content_strings(args.inputs):
+ print(content, file=f, sep='', end='')
+
+
+if __name__ == '__main__':
+ main()