[SEBA-450] (part 1)

Refactoring, python3 compat, and tox tests on:

- xosconfig
- xosgenx
- xosutil

Eliminate use of yaml.load() which is unsafe, switch to yaml.safe_load()

More diagnostics during database migration

Change-Id: I0fae5782fca401603a7c4e4ec2b9269ad24bda97
diff --git a/lib/xos-genx/tox.ini b/lib/xos-genx/tox.ini
index 56c85a5..7b85e32 100644
--- a/lib/xos-genx/tox.ini
+++ b/lib/xos-genx/tox.ini
@@ -12,10 +12,34 @@
 ; See the License for the specific language governing permissions and
 ; limitations under the License.
 
-; using tox.ini to store config information for other tools
+[tox]
+envlist = py27,py35,py36,py37
+skip_missing_interpreters = true
+
+[testenv]
+deps =
+  -r requirements.txt
+  nose2
+  flake8
+  mock
+
+commands =
+  nose2 -c tox.ini --verbose --junit-xml
+; only check the code in xosgenx, tests aren't flake8 clean yet
+  flake8 xosgenx
 
 [flake8]
-; F821, ignoring undefined names would be valuable, but our testing dynamically loads them
-; W503, allow breaks before binary operators (see: https://github.com/PyCQA/pycodestyle/issues/498)
-ignore = F821, W503
-max-line-length = 200
+max-line-length = 119
+
+[unittest]
+plugins=nose2.plugins.junitxml
+
+[junit-xml]
+path=nose2-results.xml
+
+[coverage]
+always-on = True
+coverage = xosgenx
+coverage-report =
+  xml
+  term