summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYan <yanxk.fnst@fujitsu.com>2023-03-31 09:22:11 +0800
committerYan <yanxk.fnst@fujitsu.com>2023-03-31 09:22:11 +0800
commite0371eee986998087c4e75acb48039dcec2c6283 (patch)
tree0e6461388002ba6f1bb6c0b59640d31bce2d4c0e
parent0124d938848301f8768d715b20dc1c4af486dd33 (diff)
agl-test-framework: add LOG_MODE options
add new options: "default", "slim", "clear". users can use export LOG_MODE="" to control how the framework would delete all its temp files or folders. "default": no influence, nothing would be removed. "slim": test self-owned temp files and folders removed. "clear": clean up each and every temp files and folders. Bug-AGL: SPEC-4733 Signed-off-by: Yan <yanxk.fnst@fujitsu.com> Change-Id: Ia3d8c2a971bbf97749448f732e848d9d15193459
-rwxr-xr-xagl-test23
-rw-r--r--plugins/agl_test_base.py25
-rw-r--r--plugins/agl_test_utils.py9
3 files changed, 57 insertions, 0 deletions
diff --git a/agl-test b/agl-test
index 1d2909a..866121f 100755
--- a/agl-test
+++ b/agl-test
@@ -26,6 +26,27 @@ then
fi
echo "STRESS_LEVEL: $STRESS_LEVEL"
+# default logging mode is default
+if [[ ! $LOG_MODE ]]
+then
+ export LOG_MODE="default"
+fi
+
+case $LOG_MODE in
+ "default")
+ ;;
+ "slim")
+ ;;
+ "clear")
+ ;;
+ *)
+ echo "Unrecognized LOG_MODE, setting to default..."
+ export LOG_MODE="default"
+ ;;
+esac
+
+echo "LOG_MODE: $LOG_MODE"
+
# default test without dangerous marker
moption="-m "
if [[ $* =~ ${moption} ]]
@@ -36,3 +57,5 @@ else
fi
python3 -c "import plugins.agl_test_report as report; report.generate_total_summary_files('${current_time}')"
+
+python3 -c "import plugins.agl_test_utils as utils; utils.rm_all_tmp()"
diff --git a/plugins/agl_test_base.py b/plugins/agl_test_base.py
index b30f841..1491f64 100644
--- a/plugins/agl_test_base.py
+++ b/plugins/agl_test_base.py
@@ -1,6 +1,8 @@
import pytest
import os
import json
+import pathlib
+import shutil
import plugins.agl_test_utils as utils
import plugins.agl_test_conf as conf
@@ -111,6 +113,9 @@ class AGLBaseTest:
#Write json data to html
report.change_json_to_html(self.name)
+ #Clean temp files and folders
+ self.clean_self_tmp()
+
def precheck(self):
return True;
@@ -133,3 +138,23 @@ class AGLBaseTest:
test_suites[self.name] = test_info
json.dump(test_suites,f)
f.close()
+
+ def prepare_local_log_mode(self):
+ # Get env 'LOG_MODE'
+ env_dist=os.environ
+ local_log_mode = str(env_dist.get("LOG_MODE"))
+ return local_log_mode
+
+ def clean_self_tmp(self):
+ path = self.get_temp_logdir()
+ log_mode = self.prepare_local_log_mode()
+ if log_mode == "slim" or log_mode == "clear":
+ # leave <path>/log and report.json as essential
+ folderObj = pathlib.Path(path)
+ for element in folderObj.iterdir():
+ if element.name != "log" and element.name != "report.json":
+ # check delete_file_path file type
+ if element.is_file():
+ element.unlink()
+ elif element.is_dir():
+ shutil.rmtree(path)
diff --git a/plugins/agl_test_utils.py b/plugins/agl_test_utils.py
index b1204a0..e2799f1 100644
--- a/plugins/agl_test_utils.py
+++ b/plugins/agl_test_utils.py
@@ -1,3 +1,5 @@
+import os
+import shutil
import subprocess
from plugins.agl_test_conf import REPORT_LOGS_DIR
@@ -29,3 +31,10 @@ def printe(msg):
def printd(msg):
# TODO
print("==== DEBUG: " + msg)
+
+# delete entire temp log folder
+def rm_all_tmp():
+ env_dist=os.environ
+ mode = str(env_dist.get("LOG_MODE"))
+ if mode == "clear":
+ shutil.rmtree(TMP_LOGS_DIR)