Debug silent exception source.

jjb/pipeline/voltha/bbsim-tests.grooy
-------------------------------------
  o Wrap function calls with enter()/leave() pairs to show progress.

vars/getVolthaCode.groovy
-------------------------
  o Apply automatic editor formatting, indentation jumbled at some point.
  o Added debug functions enter() & leave().
  o Wrap checkouts / function calls with enter()/leave() pairs to
    log script progress.

Change-Id: I7816583072403d20c7c89b119f84835f886a9bdb
diff --git a/jjb/pipeline/voltha/bbsim-tests.groovy b/jjb/pipeline/voltha/bbsim-tests.groovy
index 991ff5b..84752c8 100644
--- a/jjb/pipeline/voltha/bbsim-tests.groovy
+++ b/jjb/pipeline/voltha/bbsim-tests.groovy
@@ -538,6 +538,7 @@
     stages {
         stage('Download Code') {
             steps {
+                enter('getVolthaCode')
                 getVolthaCode([
                     branch: "${branch}",
                     gerritProject: "${gerritProject}",
@@ -545,6 +546,7 @@
                     volthaSystemTestsChange: "${volthaSystemTestsChange}",
                     volthaHelmChartsChange: "${volthaHelmChartsChange}",
                 ])
+                leave('getVolthaCode')
             }
         }
 
@@ -555,9 +557,11 @@
             }
 
             steps {
+                enter('buildVolthaComponent')
                 // NOTE that the correct patch has already been checked out
                 // during the getVolthaCode step
                 buildVolthaComponent("${gerritProject}")
+                leave('buildVolthaComponent')
             }
         }
 
diff --git a/vars/getVolthaCode.groovy b/vars/getVolthaCode.groovy
index fc4c722..a6a40fb 100644
--- a/vars/getVolthaCode.groovy
+++ b/vars/getVolthaCode.groovy
@@ -1,6 +1,6 @@
 #!/usr/bin/env groovy
 // -----------------------------------------------------------------------
-// Copyright 2021-2023 Open Networking Foundation (ONF) and the ONF Contributors
+// Copyright 2021-2024 Open Networking Foundation (ONF) and the ONF Contributors
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -24,125 +24,176 @@
     return iam
 }
 
+// -----------------------------------------------------------------------
+// Intent: Log progress message
+// -----------------------------------------------------------------------
+void enter(String name) {
+    // Announce ourselves for log usability
+    String iam = getIam(name)
+    println("${iam}: ENTER")
+    return
+}
+
+// -----------------------------------------------------------------------
+// Intent: Log progress message
+// -----------------------------------------------------------------------
+void leave(String name) {
+    // Announce ourselves for log usability
+    String iam = getIam(name)
+    println("${iam}: LEAVE")
+    return
+}
+
 // TODO the 3 stages are very similar, most of the code can be shared
 
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
 def wrapped(Map config)
 {
     def defaultConfig = [
-	branch: "master",
-	gerritProject: "",
-	gerritRefspec: "",
-	volthaSystemTestsChange: "",
-	volthaHelmChartsChange: "",
+        branch: "master",
+        gerritProject: "",
+        gerritRefspec: "",
+        volthaSystemTestsChange: "",
+        volthaHelmChartsChange: "",
     ]
-    
+
     def cfg = defaultConfig + config
 
-    println "Downloading VOLTHA code with the following parameters: ${cfg}."
+    println("""
+
+** -----------------------------------------------------------------------
+** Downloading VOLTHA code with the following parameters:
+**   ${cfg}
+** -----------------------------------------------------------------------
+""")
 
     stage('Download Patch')
     {
-	frequent_repos = [
-	    '',
-	    'voltha-system-tests',
-	    'voltha-helm-charts',
-	]
+        frequent_repos = [
+            '',
+            'voltha-system-tests',
+            'voltha-helm-charts',
+        ]
 
-	// We are always downloading those repos, if the patch under test is in one of those
-	// just checkout the patch, no need to clone it again
-	if (cfg.gerritProject == '')
-	{
-	    // Revisit:
-	    // gerritProject should be defined.  Ignore when empty was likely
-	    // added to support manually re-running a job when repo values
-	    // may not be defined.
-	    // Unfortunately the conditional can also inadvertently bypass
-	    // checkout during an error condition.
-	    // Case: when cfg= is invalid due to a jenkins hiccup.
-	}
-	else if (!(cfg.gerritProject in frequent_repos))
-	{
-	    repo_project = "https://gerrit.opencord.org/${cfg.gerritProject}"
-		
-	    checkout([
-		$class: 'GitSCM',
-		userRemoteConfigs: [[ url:repo_project ]],
-		branches: [[ name: "${cfg.branch}", ]],
-		extensions: [
-		    [$class: 'WipeWorkspace'],
-		    [$class: 'RelativeTargetDirectory', relativeTargetDir: "${cfg.gerritProject}"],
-		    [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
-		],
-	    ])
+        // We are always downloading those repos, if the patch under test is in one of those
+        // just checkout the patch, no need to clone it again
+        if (cfg.gerritProject == '')
+        {
+            // Revisit:
+            // gerritProject should be defined.  Ignore when empty was likely
+            // added to support manually re-running a job when repo values
+            // may not be defined.
+            // Unfortunately the conditional can also inadvertently bypass
+            // checkout during an error condition.
+            // Case: when cfg= is invalid due to a jenkins hiccup.
+        }
+        else if (!(cfg.gerritProject in frequent_repos))
+        {
+            repo_project = "https://gerrit.opencord.org/${cfg.gerritProject}"
 
-	    sh """
+            checkout([
+                $class: 'GitSCM',
+                userRemoteConfigs: [[ url:repo_project ]],
+                branches: [[ name: "${cfg.branch}", ]],
+                extensions: [
+                    [$class: 'WipeWorkspace'],
+                    [$class: 'RelativeTargetDirectory', relativeTargetDir: "${cfg.gerritProject}"],
+                    [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
+                ],
+            ])
+
+            sh("""
         pushd $WORKSPACE/${cfg.gerritProject}
         git fetch "$repo_project" ${cfg.gerritRefspec} && git checkout FETCH_HEAD
 
         echo "Currently on commit: \n"
         git log -1 --oneline
         popd
-      """
-	}
+      """)
+        }
     }
 
+    // -----------------------------------------------------------------------
+    // -----------------------------------------------------------------------
     stage('Clone voltha-system-tests')
-    {	
-	repo_vst = 'https://gerrit.opencord.org/voltha-system-tests'
+    {
+        enter('Clone voltha-system-tests')
+        println("""
 
-	checkout([
-	    $class: 'GitSCM',
-	    userRemoteConfigs: [[ url:repo_vst ]],
-	    branches: [[ name: "${cfg.branch}", ]],
-	    extensions: [
-		[$class: 'WipeWorkspace'],
-		[$class: 'RelativeTargetDirectory', relativeTargetDir: "voltha-system-tests"],
-		[$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
-	    ],
-	])
+** -----------------------------------------------------------------------
+** Clone voltha-system-tests
+** -----------------------------------------------------------------------
+""")
+        repo_vst = 'https://gerrit.opencord.org/voltha-system-tests'
 
-	if (cfg.volthaSystemTestsChange != '' && cfg.gerritProject != 'voltha-system-tests')
-	{
-	    sh """
+        checkout([
+            $class: 'GitSCM',
+            userRemoteConfigs: [[ url:repo_vst ]],
+            branches: [[ name: "${cfg.branch}", ]],
+            extensions: [
+                [$class: 'WipeWorkspace'],
+                [$class: 'RelativeTargetDirectory', relativeTargetDir: "voltha-system-tests"],
+                [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
+            ],
+        ])
+
+        if (cfg.volthaSystemTestsChange != '' && cfg.gerritProject != 'voltha-system-tests')
+            {
+            enter("git fetch repo_vst=[${repo_vst}]")
+
+            sh """
         cd "$WORKSPACE/voltha-system-tests"
         git fetch "${repo_vst}" ${cfg.volthaSystemTestsChange} && git checkout FETCH_HEAD
       """
-	}
-	else if (cfg.gerritProject == 'voltha-system-tests') {
-	    sh """
+            leave("git fetch repo_vst=[${repo_vst}]")
+        }
+        else if (cfg.gerritProject == 'voltha-system-tests') {
+            enter("git fetch https://${cfg.gerritProject}")
+
+            sh("""
         pushd "$WORKSPACE/${cfg.gerritProject}"
         git fetch https://gerrit.opencord.org/${cfg.gerritProject} ${cfg.gerritRefspec} && git checkout FETCH_HEAD
 
         echo "Currently on commit: \n"
         git log -1 --oneline
         popd
-      """
-	}
+      """)
+            leave("git fetch https://${cfg.gerritProject}")
+        }
+
+        leave('Clone voltha-system-tests')
     }
 
+    // -----------------------------------------------------------------------
+    // -----------------------------------------------------------------------
     stage('Clone voltha-helm-charts')
     {
-	repo_vhc = 'https://gerrit.opencord.org/voltha-helm-charts'
+        enter('Clone voltha-helm-charts')
+        repo_vhc = 'https://gerrit.opencord.org/voltha-helm-charts'
 
-	checkout([
-	    $class: 'GitSCM',
-	    userRemoteConfigs: [[ url:repo_vhc ]],
-	    branches: [[ name: "${cfg.branch}", ]],
-	    extensions: [
-		[$class: 'WipeWorkspace'],
-		[$class: 'RelativeTargetDirectory', relativeTargetDir: "voltha-helm-charts"],
-		[$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
-	    ],
-	])
+        checkout([
+            $class: 'GitSCM',
+            userRemoteConfigs: [[ url:repo_vhc ]],
+            branches: [[ name: "${cfg.branch}", ]],
+            extensions: [
+                [$class: 'WipeWorkspace'],
+                [$class: 'RelativeTargetDirectory', relativeTargetDir: "voltha-helm-charts"],
+                [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
+            ],
+        ])
 
-	if (cfg.volthaHelmChartsChange != '' && cfg.gerritProject != 'voltha-helm-charts') {
-	    sh """
+        if (cfg.volthaHelmChartsChange != '' && cfg.gerritProject != 'voltha-helm-charts') {
+            enter("git fetch repo_vhc=[$repo_vhc]")
+            sh """
         cd "$WORKSPACE/voltha-helm-charts"
         git fetch "$repo_vhc" ${cfg.volthaHelmChartsChange} && git checkout FETCH_HEAD
-      """
-	}
-	else if (cfg.gerritProject == 'voltha-helm-charts') {
-	    sh """
+      """ 
+            leave("git fetch repo_vhc=[$repo_vhc]")
+        }
+        else if (cfg.gerritProject == 'voltha-helm-charts') {
+            enter('cfg.gerritProject == voltha-helm-charts')
+            sh """
         pushd "$WORKSPACE/${cfg.gerritProject}"
         git fetch "https://gerrit.opencord.org/${cfg.gerritProject}" ${cfg.gerritRefspec} && git checkout FETCH_HEAD
 
@@ -150,7 +201,10 @@
         git log -1 --oneline
         popd
       """
-	}
+            leave('cfg.gerritProject == voltha-helm-charts')
+        }
+
+        leave('Clone voltha-helm-charts')
     }
 }
 
@@ -159,32 +213,29 @@
 def call(Map config)
 {
     String iam = getIam('main')
-    Boolean debug = false
+    Boolean debug = true
 
-    if (debug)
-    {
-	println("** ${iam}: ENTER")
+    if (debug) {
+        println("** ${iam}: ENTER")
     }
 
-    if (!config) {
-        config = [:]
-    }
+    config ?: [:]
 
     try
     {
-	wrapped(config)
+        wrapped(config)
     }
     catch (Exception err)
     {
-	println("** ${iam}: EXCEPTION ${err}")
-	throw err
+        println("** ${iam}: EXCEPTION ${err}")
+        throw err
     }
     finally
     {
-	if (debug)
-	{
-	    println("** ${iam}: LEAVE")
-	}
+        if (debug)
+            {
+            println("** ${iam}: LEAVE")
+        }
     }
 
     return