various fixes from first test runs

Change-Id: Ifa5a780dc0123aa84273c57c726c8c1bea563495
diff --git a/src/osmo-gsm-tester.py b/src/osmo-gsm-tester.py
index 80fec4f..b6e22f1 100755
--- a/src/osmo-gsm-tester.py
+++ b/src/osmo-gsm-tester.py
@@ -115,6 +115,9 @@
 
         if combination_strs:
             print('Running default suites:\n  ' + ('\n  '.join(combination_strs)))
+        else:
+            print('No default suites configured (%r)' % config.DEFAULT_SUITES_CONF)
+
 
     if not combination_strs:
         raise RuntimeError('Need at least one suite:scenario or series to run')
diff --git a/src/osmo_gsm_tester/bts_osmotrx.py b/src/osmo_gsm_tester/bts_osmotrx.py
index 5880870..cff63ab 100644
--- a/src/osmo_gsm_tester/bts_osmotrx.py
+++ b/src/osmo_gsm_tester/bts_osmotrx.py
@@ -51,7 +51,10 @@
         self.configure()
 
         self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-bts-trx')))
-        self.env = { 'LD_LIBRARY_PATH': str(self.inst) }
+        lib = self.inst.child('lib')
+        if not os.path.isdir(lib):
+            raise RuntimeError('No lib/ in %r' % self.inst)
+        self.env = { 'LD_LIBRARY_PATH': lib }
 
         self.launch_process(OsmoBtsTrx.BIN_TRX)
         self.launch_process(OsmoBtsTrx.BIN_BTS_TRX, '-r', '1', '-c', os.path.abspath(self.config_file))
diff --git a/src/osmo_gsm_tester/config.py b/src/osmo_gsm_tester/config.py
index 6275a47..cbbfa6f 100644
--- a/src/osmo_gsm_tester/config.py
+++ b/src/osmo_gsm_tester/config.py
@@ -61,9 +61,9 @@
 
 DEFAULT_CONFIG_LOCATIONS = [
     '.',
-    os.path.join(os.getenv('HOME'), '.config', 'osmo_gsm_tester'),
-    '/usr/local/etc/osmo_gsm_tester',
-    '/etc/osmo_gsm_tester'
+    os.path.join(os.getenv('HOME'), '.config', 'osmo-gsm-tester'),
+    '/usr/local/etc/osmo-gsm-tester',
+    '/etc/osmo-gsm-tester'
     ]
 
 PATHS_CONF = 'paths.conf'
@@ -81,7 +81,7 @@
 
 PATHS = None
 
-def get_config_file(basename, fail_if_missing=True):
+def _get_config_file(basename, fail_if_missing=True):
     if ENV_CONF:
         locations = [ ENV_CONF ]
     else:
@@ -90,17 +90,23 @@
     for l in locations:
         p = os.path.join(l, basename)
         if os.path.isfile(p):
-            return p
+            return (p, l)
     if not fail_if_missing:
-        return None
+        return None, None
     raise RuntimeError('configuration file not found: %r in %r' % (basename,
         [os.path.abspath(p) for p in locations]))
 
+def get_config_file(basename, fail_if_missing=True):
+    path, found_in = _get_config_file(basename, fail_if_missing)
+    return path
+
 def read_config_file(basename, validation_schema=None, if_missing_return=False):
     fail_if_missing = True
     if if_missing_return is not False:
         fail_if_missing = False
     path = get_config_file(basename, fail_if_missing=fail_if_missing)
+    if path is None:
+        return if_missing_return
     return read(path, validation_schema=validation_schema, if_missing_return=if_missing_return)
 
 def get_configured_path(label, allow_unset=False):
@@ -112,8 +118,11 @@
         return env_path
 
     if PATHS is None:
-        paths_file = get_config_file(PATHS_CONF)
+        paths_file, found_in = _get_config_file(PATHS_CONF)
         PATHS = read(paths_file, PATHS_SCHEMA)
+        for key, path in PATHS.items():
+            if not path.startswith(os.pathsep):
+                PATHS[key] = os.path.join(found_in, path)
     p = PATHS.get(label)
     if p is None and not allow_unset:
         raise RuntimeError('missing configuration in %s: %r' % (PATHS_CONF, label))
diff --git a/src/osmo_gsm_tester/osmo_nitb.py b/src/osmo_gsm_tester/osmo_nitb.py
index 3d5fc6a..7cdc124 100644
--- a/src/osmo_gsm_tester/osmo_nitb.py
+++ b/src/osmo_gsm_tester/osmo_nitb.py
@@ -43,11 +43,14 @@
         self.log('Starting osmo-nitb')
         self.run_dir = util.Dir(self.suite_run.trial.get_run_dir().new_dir(self.name()))
         self.configure()
-        inst = util.Dir(self.suite_run.trial.get_inst('openbsc'))
-        binary = os.path.abspath(inst.child('bin', 'osmo-nitb'))
+        inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-nitb')))
+        binary = inst.child('bin', 'osmo-nitb')
         if not os.path.isfile(binary):
             raise RuntimeError('Binary missing: %r' % binary)
-        env = { 'LD_LIBRARY_PATH': os.path.abspath(str(inst)) }
+        lib = inst.child('lib')
+        if not os.path.isdir(lib):
+            raise RuntimeError('No lib/ in %r' % inst)
+        env = { 'LD_LIBRARY_PATH': lib }
         self.dbg(run_dir=self.run_dir, binary=binary, env=env)
         self.process = process.Process(self.name(), self.run_dir,
                                        (binary, '-c',
diff --git a/src/osmo_gsm_tester/trial.py b/src/osmo_gsm_tester/trial.py
index a938971..0a882f8 100644
--- a/src/osmo_gsm_tester/trial.py
+++ b/src/osmo_gsm_tester/trial.py
@@ -50,7 +50,7 @@
 
     def __init__(self, trial_dir):
         self.path = trial_dir
-        self.set_name(self.path)
+        self.set_name(os.path.basename(self.path))
         self.set_log_category(log.C_TST)
         self.dir = util.Dir(self.path)
         self.inst_dir = util.Dir(self.dir.child('inst'))
@@ -133,7 +133,7 @@
     def get_inst(self, bin_name):
         bin_tar = self.has_bin_tar(bin_name)
         if not bin_tar:
-            return None
+            raise RuntimeError('No such binary available: %r' % bin_name)
         inst_dir = self.inst_dir.child(bin_name)
 
         if os.path.isdir(inst_dir):