mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Cleanup nightly regression script
This commit is contained in:
		
							parent
							
								
									fd96fa4d97
								
							
						
					
					
						commit
						1369914979
					
				@ -68,7 +68,7 @@ In summary, this Python script facilitates the automation of nightly regression
 | 
			
		||||
 | 
			
		||||
import os
 | 
			
		||||
import shutil
 | 
			
		||||
from datetime import datetime, timedelta
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
import time
 | 
			
		||||
import re
 | 
			
		||||
import markdown
 | 
			
		||||
@ -78,9 +78,6 @@ import logging
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class FolderManager:
 | 
			
		||||
    """A class for managing folders and repository cloning."""
 | 
			
		||||
 | 
			
		||||
@ -115,9 +112,6 @@ class FolderManager:
 | 
			
		||||
        """
 | 
			
		||||
        
 | 
			
		||||
        for folder in folders:
 | 
			
		||||
            folder_path = os.path.join(self.base_parent_dir, folder)
 | 
			
		||||
            # if not os.path.exists(folder_path):
 | 
			
		||||
            #     os.makedirs(folder_path)
 | 
			
		||||
            if not os.path.exists(folder):
 | 
			
		||||
                os.makedirs(folder)
 | 
			
		||||
 | 
			
		||||
@ -171,7 +165,6 @@ class FolderManager:
 | 
			
		||||
        Returns:
 | 
			
		||||
            None
 | 
			
		||||
        """
 | 
			
		||||
        todays_date = datetime.now().strftime("%Y-%m-%d")
 | 
			
		||||
        cvw = folder.joinpath("cvw")
 | 
			
		||||
        tmp_folder = os.path.join(cvw, "tmp") # temprorary files will be stored in here
 | 
			
		||||
        if not cvw.exists():
 | 
			
		||||
@ -287,7 +280,7 @@ class TestRunner:
 | 
			
		||||
 | 
			
		||||
        if target: 
 | 
			
		||||
            output_file = self.log_dir.joinpath(f"make-{target}-output.log")
 | 
			
		||||
        else: output_file = self.log_dir.joinpath(f"make-output.log")
 | 
			
		||||
        else: output_file = self.log_dir.joinpath("make-output.log")
 | 
			
		||||
 | 
			
		||||
        # Source setup script and execute make with target and cores/2
 | 
			
		||||
        if target: 
 | 
			
		||||
@ -461,7 +454,6 @@ class TestRunner:
 | 
			
		||||
            None
 | 
			
		||||
        """
 | 
			
		||||
        # Implement markdown rewriting logic here
 | 
			
		||||
        timestamp = datetime.now().strftime("%Y-%m-%d")
 | 
			
		||||
 | 
			
		||||
        # output_directory = self.base_parent_dir.joinpath("results")
 | 
			
		||||
        os.chdir(self.results_dir)
 | 
			
		||||
@ -470,7 +462,7 @@ class TestRunner:
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        with open(output_file, 'w') as md_file:
 | 
			
		||||
       
 | 
			
		||||
 | 
			
		||||
            # Title
 | 
			
		||||
            md_file.write(f"\n\n# Regression Test Results - {self.todays_date}\n\n")
 | 
			
		||||
            #md_file.write(f"\n\n<div class=\"regression\">\n# Regression Test Results - {timestamp}\n</div>\n\n")
 | 
			
		||||
@ -485,7 +477,7 @@ class TestRunner:
 | 
			
		||||
                md_file.write("\n")
 | 
			
		||||
            else:
 | 
			
		||||
                md_file.write("## Failed Configurations\n")
 | 
			
		||||
                md_file.write(f"No Failures\n")
 | 
			
		||||
                md_file.write("No Failures\n")
 | 
			
		||||
            
 | 
			
		||||
            md_file.write("\n## Passed Configurations\n")
 | 
			
		||||
            for config in passed_configs:
 | 
			
		||||
@ -545,18 +537,18 @@ class TestRunner:
 | 
			
		||||
            md_file.write(f"**Total Failures: {total_number_failures}**\n")
 | 
			
		||||
 | 
			
		||||
            # Failed Tests
 | 
			
		||||
            md_file.write(f"\n\n## Failed Tests")
 | 
			
		||||
            md_file.write("\n\n## Failed Tests")
 | 
			
		||||
            md_file.write(f"\n**Total failed tests: {total_number_failures}**")
 | 
			
		||||
            for (test_item, item) in zip(test_list, failed_tests):
 | 
			
		||||
                md_file.write(f"\n\n### {test_item[1]} test")
 | 
			
		||||
                md_file.write(f"\n**Command used:** {test_item[0]} {test_item[1]} {' '.join(test_item[2])}\n\n")
 | 
			
		||||
                md_file.write(f"**Failed Tests:**\n")
 | 
			
		||||
                md_file.write("**Failed Tests:**\n")
 | 
			
		||||
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                if len(item) == 0:
 | 
			
		||||
                    md_file.write("\n")
 | 
			
		||||
                    md_file.write(f"* <span class=\"no-failure\" style=\"color: green;\">No failures</span>\n")
 | 
			
		||||
                    md_file.write("* <span class=\"no-failure\" style=\"color: green;\">No failures</span>\n")
 | 
			
		||||
                    md_file.write("\n")
 | 
			
		||||
                else:
 | 
			
		||||
                    for failed_test in item:
 | 
			
		||||
@ -568,18 +560,18 @@ class TestRunner:
 | 
			
		||||
                        md_file.write("\n")
 | 
			
		||||
            # Successful Tests
 | 
			
		||||
 | 
			
		||||
            md_file.write(f"\n\n## Successful Tests")
 | 
			
		||||
            md_file.write("\n\n## Successful Tests")
 | 
			
		||||
            md_file.write(f"\n**Total successful tests: {total_number_success}**")
 | 
			
		||||
            for (test_item, item) in zip(test_list, passed_tests):
 | 
			
		||||
                md_file.write(f"\n\n### {test_item[1]} test")
 | 
			
		||||
                md_file.write(f"\n**Command used:** {test_item[0]} {test_item[1]} {' '.join(test_item[2])}\n\n")
 | 
			
		||||
                md_file.write(f"\n**Successful Tests:**\n")
 | 
			
		||||
                md_file.write("\n**Successful Tests:**\n")
 | 
			
		||||
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                if len(item) == 0:
 | 
			
		||||
                    md_file.write("\n")
 | 
			
		||||
                    md_file.write(f"* <span class=\"no-successes\" style=\"color: red;\">No successes</span>\n")
 | 
			
		||||
                    md_file.write("* <span class=\"no-successes\" style=\"color: red;\">No successes</span>\n")
 | 
			
		||||
                    md_file.write("\n")
 | 
			
		||||
                else:
 | 
			
		||||
                    for passed_tests in item:
 | 
			
		||||
@ -614,7 +606,7 @@ class TestRunner:
 | 
			
		||||
            html_file.write(html_content)
 | 
			
		||||
        
 | 
			
		||||
        self.logger.info("Converting markdown file to html file.")
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
    def send_email(self, receiver_emails=None, subject="Nightly Regression Test"):
 | 
			
		||||
        """
 | 
			
		||||
        Send email with HTML content. 
 | 
			
		||||
@ -688,13 +680,10 @@ def main():
 | 
			
		||||
 | 
			
		||||
    # file paths for where the results and repos will be saved: repos and results can be changed to whatever
 | 
			
		||||
    today = datetime.now().strftime("%Y-%m-%d")
 | 
			
		||||
    yesterday_dt = datetime.now() - timedelta(days=1)
 | 
			
		||||
    yesterday = yesterday_dt.strftime("%Y-%m-%d")
 | 
			
		||||
    cvw_path = Path.home().joinpath(args.path, today)
 | 
			
		||||
    results_path = Path.home().joinpath(args.path, today, "results")
 | 
			
		||||
    log_path = Path.home().joinpath(args.path, today, "logs")
 | 
			
		||||
    log_file_path = log_path.joinpath("nightly_build.log")
 | 
			
		||||
    previous_cvw_path = Path.home().joinpath(args.path,f"{yesterday}/cvw")
 | 
			
		||||
    # creates the object
 | 
			
		||||
    folder_manager = FolderManager(basedir=args.path)
 | 
			
		||||
 | 
			
		||||
@ -765,12 +754,6 @@ def main():
 | 
			
		||||
 | 
			
		||||
    if args.target != "no":
 | 
			
		||||
        test_runner.execute_makefile(target = args.target, makefile_path=test_runner.cvw)
 | 
			
		||||
    # TODO: remove vestigial code if no longer wanted
 | 
			
		||||
    # if args.target == "all":
 | 
			
		||||
    #     # Compile Linux for local testing
 | 
			
		||||
    #     test_runner.set_env_var("RISCV",str(test_runner.cvw))
 | 
			
		||||
    #     linux_path = test_runner.cvw / "linux"
 | 
			
		||||
    #     test_runner.execute_makefile(target = "all", makefile_path=linux_path)
 | 
			
		||||
 | 
			
		||||
    #############################################
 | 
			
		||||
    #               RUN TESTS                   #
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user