Written skeleton for output analysis (#26). Renamed some arguments of ECG.
This commit is contained in:
parent
e118cf3da1
commit
3c648c1a09
115
analysis/output_analysis.py
Executable file
115
analysis/output_analysis.py
Executable file
@ -0,0 +1,115 @@
|
|||||||
|
#!/bin/python3
|
||||||
|
|
||||||
|
"""
|
||||||
|
This script will analyze the outputs from ECG to generate tables that will
|
||||||
|
be later plotted.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import csv
|
||||||
|
import os
|
||||||
|
|
||||||
|
def softenv_analysis(input_table):
|
||||||
|
"""
|
||||||
|
Analyzes the given package lists table to determine the number of artifacts
|
||||||
|
usinga package manager, Git packages or misc packages.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
input_table: str
|
||||||
|
Table to analyse.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
list
|
||||||
|
Output table of the analysis.
|
||||||
|
"""
|
||||||
|
return []
|
||||||
|
|
||||||
|
def artifact_analysis(input_table):
|
||||||
|
"""
|
||||||
|
Analyzes the given artifact hash table to determine the number of artifacts
|
||||||
|
that change through time.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
input_table: str
|
||||||
|
Table to analyse.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
list
|
||||||
|
Output table of the analysis.
|
||||||
|
"""
|
||||||
|
return []
|
||||||
|
|
||||||
|
def buildstatus_analysis(input_table):
|
||||||
|
"""
|
||||||
|
Analyzes the given build status table.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
input_table: str
|
||||||
|
Table to analyse.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
list
|
||||||
|
Output table of the analysis.
|
||||||
|
"""
|
||||||
|
return []
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Command line arguments parsing:
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
prog = "output_analysis",
|
||||||
|
description = "This script analyzes the outputs from ECG to create " \
|
||||||
|
"tables."
|
||||||
|
)
|
||||||
|
parser.add_argument('-v', '--verbose',
|
||||||
|
action = 'store_true',
|
||||||
|
help = "Shows more details on what is being done."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-t", "--analysis-type",
|
||||||
|
help = "Specify the type of analysis to run.",
|
||||||
|
choices = ["soft-env", "artifact", "build-status"],
|
||||||
|
required = True
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"input_dir",
|
||||||
|
help = "Path to the directory where the CSV files used as input for " \
|
||||||
|
"the analysis function are stored. They must be all outputs from ECG."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"output_path",
|
||||||
|
help = "Path to the output CSV file that will be created by the " \
|
||||||
|
"analysis function."
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
analysis_type = args.analysis_type
|
||||||
|
input_dir = args.input_dir
|
||||||
|
output_path = args.output_path
|
||||||
|
|
||||||
|
# Parsing the inputs from the directory:
|
||||||
|
input_table = []
|
||||||
|
os.chdir(input_dir)
|
||||||
|
for input_path in os.listdir():
|
||||||
|
input_file = open(input_path)
|
||||||
|
input_table += list(csv.reader(input_file))
|
||||||
|
print(input_table)
|
||||||
|
input_file.close()
|
||||||
|
|
||||||
|
# Analyzing the inputs:
|
||||||
|
output_file = open(output_path, "w+")
|
||||||
|
if analysis_type == "soft-env":
|
||||||
|
output_file.writelines(softenv_analysis(input_table))
|
||||||
|
elif analysis_type == "artifact":
|
||||||
|
output_file.writelines(artifact_analysis(input_table))
|
||||||
|
elif analysis_type == "build-status":
|
||||||
|
output_file.writelines(buildstatus_analysis(input_table))
|
||||||
|
output_file.close()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
9
ecg.py
9
ecg.py
@ -292,6 +292,7 @@ def check_env(config, src_dir, image_name, pkglist_path):
|
|||||||
pkglist_file.write(f"{pkg_row}\n")
|
pkglist_file.write(f"{pkg_row}\n")
|
||||||
|
|
||||||
# Python venvs:
|
# Python venvs:
|
||||||
|
logging.info("Checking Python venvs")
|
||||||
for venv in config["python_venvs"]:
|
for venv in config["python_venvs"]:
|
||||||
pipcmd = pkgmgr_cmd["pip"][0]
|
pipcmd = pkgmgr_cmd["pip"][0]
|
||||||
pipcmd_args = pkgmgr_cmd["pip"][1]
|
pipcmd_args = pkgmgr_cmd["pip"][1]
|
||||||
@ -325,7 +326,7 @@ def main():
|
|||||||
# Paths:
|
# Paths:
|
||||||
config_path = ""
|
config_path = ""
|
||||||
pkglist_path = "" # Package list being generated
|
pkglist_path = "" # Package list being generated
|
||||||
buildstatus_path = "" # Summary of the build process of the image
|
buildstatus_path = "" # Status of the build process of the image, when it fails
|
||||||
arthashlog_path = "" # Log of the hash of the downloaded artifact
|
arthashlog_path = "" # Log of the hash of the downloaded artifact
|
||||||
cache_dir = "" # Artifact cache directory, when using one. 'None' value indicates no cache.
|
cache_dir = "" # Artifact cache directory, when using one. 'None' value indicates no cache.
|
||||||
use_cache = False
|
use_cache = False
|
||||||
@ -355,8 +356,8 @@ def main():
|
|||||||
required = True
|
required = True
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-b", "--build-summary",
|
"-b", "--build-status",
|
||||||
help = "Path to the file where to write the build summary of the Docker image given in the configuration file.",
|
help = "Path to the file where to write the build status of the Docker image given in the configuration file.",
|
||||||
required = True
|
required = True
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
@ -380,7 +381,7 @@ def main():
|
|||||||
log_path = "log.txt" # Output of the program
|
log_path = "log.txt" # Output of the program
|
||||||
pkglist_path = args.pkg_list
|
pkglist_path = args.pkg_list
|
||||||
log_path = args.log_path
|
log_path = args.log_path
|
||||||
buildstatus_path = args.build_summary
|
buildstatus_path = args.build_status
|
||||||
arthashlog_path = args.artifact_hash
|
arthashlog_path = args.artifact_hash
|
||||||
cache_dir = args.cache_dir
|
cache_dir = args.cache_dir
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user