Add report tools for report stage at SI pipeline
diff --git a/report-tools/adaptors/sql/yaml_parser.py b/report-tools/adaptors/sql/yaml_parser.py
index b0ce15e..9e6aa17 100755
--- a/report-tools/adaptors/sql/yaml_parser.py
+++ b/report-tools/adaptors/sql/yaml_parser.py
@@ -1,116 +1,113 @@
-##############################################################################

-# Copyright (c) 2021, ARM Limited and Contributors. All rights reserved.

-#

-# SPDX-License-Identifier: BSD-3-Clause

-##############################################################################

-"""

-Class to parse .yaml file to generate a report.db

-"""

-import sys

-import yaml

-import sqlite

-

-

-class YAMLParser:

-    """

-    Class to represent a YAML Parser and creates database

-

-    Methods:

-        create_table: Creates sqlite db table with necessary fields.

-        parse_file: Parses the yaml file to obtain necessary data for the test result table and updates it.

-        update_test_config_table: Parses the yaml file to obtain necessary data fot the test config table and updates it

-    """

-    root_string = ""

-    test_suite_list = []

-

-    # contents of the test_config table

-    test_config_table = [

-        "build_id",

-        "target",

-        "bitbake_version",

-        "yocto_version"

-    ]

-

-    # contents of test_result table

-    test_result_table = [

-        "build_id",

-        "date",

-        "test_suite",

-        "test_case",

-        "result"

-    ]

-

-    def __init__(self, file_name=sys.argv[1]):

-        """Creates an instance for sqlite_obj and loads the contents of the yamlfile to be parsed """

-

-        try:

-            self.sqlite_obj = sqlite.Database("report.db")

-            with open(file_name) as file:

-                self.contents = yaml.load(file, Loader=yaml.FullLoader)

-                self.root_string = [i for i in self.contents.keys()][0]

-        except Exception as err:

-            print(err)

-

-    def create_table(self):

-        """Creates empty tables in the sqlite database from the contents of test_config_table and test_result_table"""

-

-        test_config_query = """

-        CREATE TABLE `test_configuration` (

-        {0} TEXT,

-        {1} TEXT,

-        {2} TEXT,

-        {3} TEXT,

-        PRIMARY KEY ({0})

-        );

-        """.format(self.test_config_table[0], self.test_config_table[1], self.test_config_table[2],

-                   self.test_config_table[3])

-

-        test_results_query = """

-        CREATE TABLE `test_results` (

-        {0} TEXT,

-        {1} TEXT,

-        {2} TEXT,

-        {3} TEXT,

-        {4} TEXT,

-        FOREIGN KEY ({0}) REFERENCES `test_configuration`({0})

-        );

-        """.format(self.test_result_table[0], self.test_result_table[1], self.test_result_table[2],

-                   self.test_result_table[3], self.test_result_table[4])

-

-        self.sqlite_obj.execute_query(test_config_query)

-        self.sqlite_obj.execute_query(test_results_query)

-

-    def parse_file(self):

-        """Parses the yaml file"""

-

-        build_id = self.contents[self.root_string]['metadata']['CI_PIPELINE_ID']

-        # dependent on the generated yaml file. Code will be uncommented based

-        # on the yaml file

-        # self.contents[self.root_string]['metadata']['CI_COMMIT_TIMESTAMP']

-        date = ""

-        for test_suite in self.contents[self.root_string]['test-suites'].keys():

-            for test_case in self.contents[self.root_string]['test-suites'][test_suite]['test-results'].keys():

-                result = self.contents[self.root_string]['test-suites'][test_suite]['test-results'][test_case]["status"]

-                update_result_table_query = "INSERT INTO test_results VALUES ('{0}', '{1}', '{2}', '{3}', '{4}')". \

-                    format(build_id, date, test_suite, test_case, result)

-                self.sqlite_obj.execute_query(update_result_table_query)

-

-    def update_test_config_table(self):

-        """Updates tables in the report.db with the values from the yaml file"""

-

-        build_id = self.contents[self.root_string]['metadata']['CI_PIPELINE_ID']

-        target = self.contents[self.root_string]['target']['platform'] + \

-            "_" + self.contents[self.root_string]['target']['version']

-

-        bitbake_version = "1.0"

-        yocto_version = "2.0"

-        update_table_query = "INSERT INTO test_configuration VALUES ('{0}', '{1}', '{2}', '{3}')".\

-            format(build_id, target, bitbake_version, yocto_version)

-        self.sqlite_obj.execute_query(update_table_query)

-

-

-if __name__ == "__main__":

-    yaml_obj = YAMLParser()

-    yaml_obj.create_table()

-    yaml_obj.parse_file()

-    yaml_obj.update_test_config_table()

+##############################################################################
+# Copyright (c) 2021, ARM Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+##############################################################################
+"""
+Class to parse .yaml file to generate a report.db
+"""
+import sys
+import yaml
+import adaptors.sql.sqlite as sqlite
+
+class YAMLParser:
+    """
+    Class to represent a YAML Parser and creates database
+
+    Methods:
+        create_table: Creates sqlite db table with necessary fields.
+        parse_file: Parses the yaml file to obtain necessary data for the test result table and updates it.
+        update_test_config_table: Parses the yaml file to obtain necessary data fot the test config table and updates it
+    """
+    root_string = ""
+    test_suite_list = []
+
+    # contents of the test_config table
+    test_config_table = [
+        "build_id",
+        "target",
+        "bitbake_version",
+        "yocto_version"
+    ]
+
+    # contents of test_result table
+    test_result_table = [
+        "build_id",
+        "date",
+        "test_suite",
+        "test_case",
+        "result"
+    ]
+
+    def __init__(self, file_name=""):
+        """Creates an instance for sqlite_obj and loads the contents of the yamlfile to be parsed """
+
+        try:
+            self.sqlite_obj = sqlite.Database("report.db")
+            with open(file_name) as file:
+                self.contents = yaml.load(file)
+                self.root_string = [i for i in self.contents.keys()][0]
+        except Exception as err:
+            print(err)
+
+    def create_table(self):
+        """Creates empty tables in the sqlite database from the contents of test_config_table and test_result_table"""
+
+        test_config_query = """
+        CREATE TABLE `test_configuration` (
+        {0} TEXT,
+        {1} TEXT,
+        {2} TEXT,
+        {3} TEXT,
+        PRIMARY KEY ({0})
+        );
+        """.format(self.test_config_table[0], self.test_config_table[1], self.test_config_table[2],
+                   self.test_config_table[3])
+
+        test_results_query = """
+        CREATE TABLE `test_results` (
+        {0} TEXT,
+        {1} TEXT,
+        {2} TEXT,
+        {3} TEXT,
+        {4} TEXT,
+        FOREIGN KEY ({0}) REFERENCES `test_configuration`({0})
+        );
+        """.format(self.test_result_table[0], self.test_result_table[1], self.test_result_table[2],
+                   self.test_result_table[3], self.test_result_table[4])
+
+        self.sqlite_obj.execute_query(test_config_query)
+        self.sqlite_obj.execute_query(test_results_query)
+
+    def parse_file(self):
+        """Parses the yaml file"""
+
+        build_id = self.contents[self.root_string]['metadata']['CI_PIPELINE_ID']
+        for test_suite in self.contents[self.root_string]['test-suites'].keys():
+            date = self.contents[self.root_string]['test-suites'][test_suite]['metadata']['DATE']
+            for test_case in self.contents[self.root_string]['test-suites'][test_suite]['test-results'].keys():
+                result = self.contents[self.root_string]['test-suites'][test_suite]['test-results'][test_case]["status"]
+                update_result_table_query = "INSERT INTO test_results VALUES ('{0}', '{1}', '{2}', '{3}', '{4}')". \
+                    format(build_id, date, test_suite, test_case, result)
+                self.sqlite_obj.execute_query(update_result_table_query)
+
+    def update_test_config_table(self):
+        """Updates tables in the report.db with the values from the yaml file"""
+
+        build_id = self.contents[self.root_string]['metadata']['CI_PIPELINE_ID']
+        target = self.contents[self.root_string]['target']['platform'] + \
+            "_" + self.contents[self.root_string]['target']['version']
+
+        bitbake_version = "UNAVAILABLE"
+        yocto_version = "UNAVAILABLE"
+        update_table_query = "INSERT INTO test_configuration VALUES ('{0}', '{1}', '{2}', '{3}')".\
+            format(build_id, target, bitbake_version, yocto_version)
+        self.sqlite_obj.execute_query(update_table_query)
+
+
+if __name__ == "__main__":
+    yaml_obj = YAMLParser()
+    yaml_obj.create_table()
+    yaml_obj.parse_file()
+    yaml_obj.update_test_config_table()
+