VOL-4805

This script is an inital attempt at capturing and documenting testing
resources for interactive and programatic retrieval.  Command line
arguments and eventual filesystem based detection will hints for a
suite of tests to run to evaluate VOLTHA code changes.

make check: run python unit tests

usage:
  % flog.py --help
  % flog.py --usage
  % flog.py --type regression
  % flog.py --attr olt

Recreate patch: start over
  o approval given by: daf & torsten
  o a cycle of squashing roaches reported by lint checking resulted
    in multiple conflicting patches in gerrit.  Abandon the mess and
    submit a clean patch.
  o Only delta introduced is using the updated standard copyright notice.
  o git merge to get branch and master back in sync.

Change-Id: I24292f2b72d134879939f43a84b31ab153d10fa9
diff --git a/scripts/flog/meta/test/__init__.py b/scripts/flog/meta/test/__init__.py
new file mode 100644
index 0000000..4b4c0b2
--- /dev/null
+++ b/scripts/flog/meta/test/__init__.py
@@ -0,0 +1,37 @@
+# -*- python -*-
+"""Augment module searchpath and existence indicates directory is a module."""
+
+# -----------------------------------------------------------------------
+# Copyright 2022 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.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+
+##-------------------##
+##---]  IMPORTS  [---##
+##-------------------##
+import sys
+from pathlib import Path
+
+## ---------------------------------------
+## Artificial scope created for local vars
+## ---------------------------------------
+# pylint: disable=invalid-name
+# pylint: disable=using-constant-test
+if True:
+    root = '../../..'
+    mod_path = Path(root).resolve().as_posix()
+    if mod_path not in sys.path:
+        sys.path.insert(0, mod_path)
+
+# [EOF]
diff --git a/scripts/flog/meta/test/test_voltha.py b/scripts/flog/meta/test/test_voltha.py
new file mode 100644
index 0000000..d69f38f
--- /dev/null
+++ b/scripts/flog/meta/test/test_voltha.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python
+'''Unit test for meta/voltha.py'''
+
+# -----------------------------------------------------------------------
+# Copyright 2022 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.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+
+##-------------------##
+##---]  GLOBALS  [---##
+##-------------------##
+
+##-------------------##
+##---]  IMPORTS  [---##
+##-------------------##
+import unittest
+
+from flog.main         import utils           as main_utils
+from flog.meta         import voltha
+
+
+class TestStringMethods(unittest.TestCase):
+
+    ## -----------------------------------------------------------------------
+    ## -----------------------------------------------------------------------
+    def test_by_all(self):
+        '''Verify result of default test lookup.'''
+
+        exp = ['https://jenkins.opencord.org/view/VOLTHA-2.X-Tests/']
+        for arg in ['all', 'invalid']:
+            got = voltha.Utils().get([arg])
+            self.assertCountEqual(got, exp)
+            
+    ## -----------------------------------------------------------------------
+    ## -----------------------------------------------------------------------
+    def test_by_olt(self):
+        '''Verify result of test lookup by string arg 'olt'.''' 
+
+        exp = 'periodic-voltha-multi-uni-multiple-olts-test-bbsim'
+        for arg in ['olt']:
+            got = voltha.Utils().get([arg])
+            self.assertEqual(len(got), 1)
+            self.assertIn(exp, got[0])
+
+    ## -----------------------------------------------------------------------
+    ## -----------------------------------------------------------------------
+    def test_by_regression(self):
+        '''Verify result of test lookup by string arg 'regression.'''
+
+        for arg in ['regression']:
+            got = voltha.Utils().get([arg])
+            self.assertTrue(len(got) > 2)
+        
+##----------------##
+##---]  MAIN  [---##
+##----------------##
+if __name__ == "__main__":
+    main()
+
+# [EOF]