diff options
Diffstat (limited to 'grpc/tools/run_tests/performance/loadtest_concat_yaml.py')
-rwxr-xr-x | grpc/tools/run_tests/performance/loadtest_concat_yaml.py | 66 |
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() |