| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you 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. |
| # |
| |
| import logging |
| import shutil |
| import time |
| import os |
| from pathlib import Path |
| |
| |
| def create_test_directory(): |
| test_dir_name = "tests/" + time.strftime("%Y_%m_%d_%H_%M_%S") |
| path = os.path.join(os.getcwd(), test_dir_name) |
| os.mkdir(path, mode=0o777) |
| print("Test directory: ", path) |
| return path |
| |
| |
| def configure_logging(log_filename, clear_log_file=True): |
| format_template = ("%(asctime)s %(threadName)s %(name)s %(levelname)s " |
| "%(filename)-25s %(lineno)-5s " |
| "%(funcName)-25s : %(message)s") |
| logging.basicConfig(format=format_template, |
| filename=log_filename, |
| filemode='a', |
| level=logging.DEBUG) |
| if clear_log_file: |
| with open(log_filename, "w") as f: |
| f.write("asctime\t\t\t\t\tthreadName name levelname filename\ |
| \tlineno\tfuncName\t\t\t\tmessage\n") |
| |
| logging.getLogger("asyncio").setLevel(logging.WARNING) |
| logging.getLogger("matplotlib").setLevel(logging.WARNING) |
| |
| |
| def copy_config_files_to_test_directory(files: list, test_directory: str): |
| for file in files: |
| shutil.copy(file, test_directory + "/" + Path(file).name) |
| |
| |
| def copy_log_files_to_test_directory(dir: str): |
| log_files = ["log/log_rx.log", "log/log_tx.log", "log/check_addr.log"] |
| for file in log_files: |
| shutil.copy(file, dir + "/" + time.strftime("%Y_%m_%d_%H_%M_%S_") + |
| file.replace("log/", "")) |
| |
| |
| # Running tests as sudo implies root permissions on created directories/files. |
| # This function sets the default permission mode to dirs/files in given path |
| # recursively. |
| def set_default_chmod_recurs(path): |
| for root, dirs, files in os.walk(path): |
| for d in dirs: |
| os.chmod(os.path.join(root, d), 0o0777) |
| for f in files: |
| os.chmod(os.path.join(root, f), 0o0777) |