speed up CSIT testing with updated yang path option 40/103440/2
authorMario Doman <mario.doman@pantheon.tech>
Mon, 28 Nov 2022 10:44:04 +0000 (11:44 +0100)
committerRobert Varga <nite@hq.sk>
Sun, 4 Dec 2022 10:49:03 +0000 (10:49 +0000)
Change-Id: I62f7b9ffbefac1b7adb12e85158b90fbe2d44126
Signed-off-by: Mario Doman <mario.doman@pantheon.tech>
csit/README.md
csit/pytest_lib.py
csit/yangtools_test.py

index e98faddd038875d21f346b8b769c3f8785cc6863..5fc1bb6266f7250a2d4d36fd8863fbfa4572ce3a 100644 (file)
@@ -65,10 +65,4 @@ FILES:
     for each model not pass in yangvalidator, one log file will be created.
         For example "following-components-yang-model-validator--yangtools-system-txt.1669020980.753.log"
     Name of these logs are modified with prefix depending on JAVA error.
-    Txt files will be generated containing list of all models that not passed test.
-
-
-
-
-
-
+    Txt files will be generated containing list of all models that not passed test.
\ No newline at end of file
index 3c0018e0af9ca6fd8e341978e08270d02ac0f58f..3fd7affaeb1ec7e416984ae1f1b8945d2dff1a5b 100644 (file)
@@ -8,7 +8,7 @@
 
 YANGMODELS_REPO = "https://github.com/YangModels/yang"
 TEST_TOOL_NAME = "yang-model-validator"
-NEXUS_RELEASE_BASE_URL = "https://nexus.opendaylight.org/content/repositories/opendaylight.release"
+NEXUS_RELEASE_BASE_URL = "https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot"
 
 delete_static_paths_list = [
     "/src/main/yang/.git",
@@ -16,12 +16,6 @@ delete_static_paths_list = [
     # excluding ieee/draft from test
     "/src/main/yang/standard/ieee/draft",
     "/src/main/yang/standard/ietf/DRAFT",
-    # excluding 4 files due error "Unexpected error processing source SourceIdentifier [ietf-network@2018-02-26]"
-    # bug reported here https://jira.opendaylight.org/browse/YANGTOOLS-1465
-    "/src/main/yang/standard/ietf/RFC/ietf-te-topology-state.yang",
-    "/src/main/yang/standard/ietf/RFC/ietf-te-topology-state@2020-08-06.yang",
-    "/src/main/yang/standard/ietf/RFC/ietf-te-topology.yang",
-    "/src/main/yang/standard/ietf/RFC/ietf-te-topology@2020-08-06.yang",
     ## Removing entire juniper folder because it creates an OOM Crash with the validator tool.*** Keywords ***
     ## Unsure if the yang models are the problem or something in the tool. This is being tracked here:
     ## https://jira.opendaylight.org/browse/YANGTOOLS-1093
index 136cad522162949c9582a8697cb1396a617d4d1d..f4f630f140e937fa3ee0f10a257d0f74bf17bf03 100644 (file)
@@ -8,6 +8,9 @@ import datetime
 import os
 import sys, getopt
 import pytest_lib
+import time
+
+start_time = time.time()
 
 def get_java():
     global java_home
@@ -81,13 +84,11 @@ def get_yang_files_to_validate():
     return (yang_files_to_validate)
 
 
-def yang_path_option():
+def get_yang_path():
     global yang_path_option
     yang_path_option = "--path "
     for path in pytest_lib.yang_model_paths:
         yang_path_option += (working_dir + path +  " ")
-    return yang_path_option
-
 
 def download_yang_model_validator():
     global url, artifact, version, filename
@@ -95,7 +96,7 @@ def download_yang_model_validator():
     location = "org/opendaylight/yangtools"
     component="yangtools"
     artifact=pytest_lib.TEST_TOOL_NAME
-    version = "9.0.2"
+    version = "10.0.1"
     url = urlbase + "/" + location + "/" + artifact + "/" + version
     name_prefix = f"{artifact}-"
     suffix="jar-with-dependencies"
@@ -105,20 +106,25 @@ def download_yang_model_validator():
     if not os.path.exists(working_dir + "/" + filename):
         url = url + "/" + filename
         print(f"downloading {filename}")
-        cmd = f"cd {working_dir} && wget -q -N '{url}' 2>&1"
+        url = "https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/yangtools/yang-model-validator/10.0.1-SNAPSHOT/yang-model-validator-10.0.1-20221124.151234-58-jar-with-dependencies.jar"
+        cmd = f"cd {working_dir} && wget -q -N '{url}' 2>&1 && mv yang-model-validator-10.0.1-20221124.151234-58-jar-with-dependencies.jar yang-model-validator-10.0.1-jar-with-dependencies.jar"
         os.popen(cmd).read()
 
 
 def yang_files_loop(yang_files_to_validate):
-    global url
+    global url, yang_path_option
+    file_counter = 0
     effective_model_not_resolved, all_not_pass_yang_files, leaf_is_missing, mount_points, following_components = [],[],[],[],[]
     leaf_list_is_missing, statement_has_to_be_present, augment_cannot_add_node_named, augment_target, other = [],[],[],[],[]
     for x in range (0,len(yang_files_to_validate)):
+        file_counter +=1
         print("Working on file: ", yang_files_to_validate[x])
+        print(f"Testing file {file_counter} from total {len(yang_files_to_validate)} files")
+        # update --path option for ietf/RFC/ models to shorten test duration
+        if "/src/main/yang/standard/ietf/RFC" in yang_files_to_validate[x]:
+            yang_path_option = f"--path {working_dir}/src/main/yang/standard/ietf/RFC {working_dir}/src/main/yang/standard/ieee/published/802.1 {working_dir}/src/main/yang/standard/ieee/published/802 {working_dir}/src/main/yang/vendor/ciena "
         tool_options=f" {yang_path_option}-- {yang_files_to_validate[x]}"
-        # set java version based on ip (testing on locallhost)
-        base_command = java_home
-        command = base_command + "  -jar " + working_dir + "/" + filename + tool_options
+        command = java_home + "  -jar " + working_dir + "/" + filename + tool_options
         # generate name for log file
         name = "yangtools-system-txt"
         date = datetime.datetime.today()
@@ -175,6 +181,7 @@ def yang_files_loop(yang_files_to_validate):
 
     # print test result counts and save txt list with not pass files
     print("\n\n\n",40 * "*", " TEST RESULTS  ", 40 * "*")
+    print(f"All tested files: {len(yang_files_to_validate)}")
     for x in range(0, len(print_files_count)):
         if print_files_count[x]:
             print(f"{print_files_name[x]} = {len(print_files_count[x])}")
@@ -186,5 +193,6 @@ get_java()
 prepare_enviroment()
 delete_static_paths()
 download_yang_model_validator()
-yang_path_option()
-yang_files_loop(get_yang_files_to_validate())
\ No newline at end of file
+get_yang_path()
+yang_files_loop(get_yang_files_to_validate())
+print("test duration --- %s seconds ---" % (time.time() - start_time))
\ No newline at end of file