wip

Change-Id: Icce6bd83173db86a64fa621e641131758380c7cd
diff --git a/contrib/jenkins-remote-update.sh b/contrib/jenkins-remote-update.sh
index 3b4fc74..f30855e 100755
--- a/contrib/jenkins-remote-update.sh
+++ b/contrib/jenkins-remote-update.sh
@@ -17,7 +17,7 @@
     echo "$status"
     exit 1
   fi
-  ssh "$osmo_gsm_tester_host" "cd \"$osmo_gsm_tester_src\"; git clean -fdx; git pull"
+  ssh "$osmo_gsm_tester_host" "cd \"$osmo_gsm_tester_src\"; git clean -fdx; git fetch; git reset --hard origin/master"
 else
   osmo_gsm_tester_src_dirname="$(dirname "$osmo_gsm_tester_src")"
   ssh "$osmo_gsm_tester_host" "git clone git://git.osmocom.org/osmo-gsm-tester.git \"$osmo_gsm_tester_src\""
diff --git a/contrib/jenkins-run.sh b/contrib/jenkins-run.sh
index 62394d1..b0b4925 100755
--- a/contrib/jenkins-run.sh
+++ b/contrib/jenkins-run.sh
@@ -11,7 +11,8 @@
 osmo_gsm_tester_dir="/var/tmp/osmo-gsm-tester"
 tmp_dir="/var/tmp/prep-osmo-gsm-tester"
 
-trial_name="$NODE_NAME-$BUILD_TAG"
+#trial_name="$NODE_NAME-$BUILD_TAG"
+trial_name="trial-$BUILD_NUMBER"
 local_trial_base="./compose_trial"
 local_trial_dir="$local_trial_base/$trial_name"
 
@@ -33,4 +34,4 @@
 ssh "$osmo_gsm_tester_host" "mv $tmp_dir/$trial_name $osmo_gsm_tester_dir"
 trial_dir="$osmo_gsm_tester_dir/$trial_name"
 
-ssh "$osmo_gsm_tester_host" "$osmo_gsm_tester_src/src/osmo-gsm-tester.py $trial_dir"
+ssh "$osmo_gsm_tester_host" "$osmo_gsm_tester_src/src/osmo-gsm-tester.py $trial_dir -T"
diff --git a/src/osmo_gsm_tester/ofono_client.py b/src/osmo_gsm_tester/ofono_client.py
index 5f91781..a10784f 100644
--- a/src/osmo_gsm_tester/ofono_client.py
+++ b/src/osmo_gsm_tester/ofono_client.py
@@ -62,14 +62,18 @@
         self.msisdn = msisdn
 
     def imsi(self):
-        return self.conf.get('imsi')
+        imsi = self.conf.get('imsi')
+        if not imsi:
+            with self:
+                raise RuntimeError('No IMSI')
+        return imsi
 
     def ki(self):
         return self.conf.get('ki')
 
     def set_powered(self, on=True):
         test.poll()
-        self.dbus_obj.SetProperty('Powered', Variant('b', on))
+        self.dbus_obj().SetProperty('Powered', Variant('b', on))
         test.poll()
 
     def dbus_obj(self):
@@ -78,6 +82,7 @@
         self._dbus_obj = get(self.path)
         self._dbus_obj.PropertyChanged.connect(self._on_property_change)
         self._on_interfaces_change(self.properties().get('Interfaces'))
+        return self._dbus_obj
 
     def properties(self):
         return self.dbus_obj().GetProperties()
@@ -107,7 +112,7 @@
     def _on_interface_enabled(self, interface_name):
         self.dbg('Interface enabled:', interface_name)
         if interface_name == I_SMS:
-            self._dbus_obj[I_SMS].IncomingMessage.connect(self._on_incoming_message)
+            self.dbus_obj()[I_SMS].IncomingMessage.connect(self._on_incoming_message)
 
     def _on_interface_disabled(self, interface_name):
         self.dbg('Interface disabled:', interface_name)
@@ -131,7 +136,7 @@
         if not self.has_interface(I_SMS):
             raise RuntimeError('Modem cannot send SMS, interface not active: %r' % I_SMS)
         sms = Sms(self.msisdn(), to_msisdn)
-        mm = self.dbus_obj[I_SMS]
+        mm = self.dbus_obj()[I_SMS]
         mm.SendMessage(to_msisdn, str(sms))
         return sms
 
diff --git a/src/osmo_gsm_tester/osmo_nitb.py b/src/osmo_gsm_tester/osmo_nitb.py
index 8fce371..4cd6055 100644
--- a/src/osmo_gsm_tester/osmo_nitb.py
+++ b/src/osmo_gsm_tester/osmo_nitb.py
@@ -95,15 +95,16 @@
             OsmoNitbCtrl(self).subscriber_add(modem.imsi(), msisdn, modem.ki())
 
     def subscriber_attached(self, *modems):
-        return self.imsi_attached([m.imsi() for m in modems])
+        return self.imsi_attached(*[m.imsi() for m in modems])
 
     def imsi_attached(self, *imsis):
         attached = self.imsi_list_attached()
-        return all([imsi in attached for imsi in imsis])
+        self.dbg('attached:', attached)
+        return all([(imsi in attached) for imsi in imsis])
 
     def imsi_list_attached(self):
         with self:
-            OsmoNitbCtrl(self).subscriber_list_active()
+            return OsmoNitbCtrl(self).subscriber_list_active()
 
     def running(self):
         return not self.process.terminated()
@@ -133,7 +134,7 @@
         else:
             value = '%s,%s' % (imsi, msisdn)
 
-        with osmo_ctrl.OsmoCtrl(self.nitb.addr(), OsmoNitbCtrl.PORT) as ctrl:
+        with self.ctrl() as ctrl:
             ctrl.do_set(OsmoNitbCtrl.SUBSCR_MODIFY_VAR, value)
             data = ctrl.receive()
             (answer, data) = ctrl.remove_ipa_ctrl_header(data)
@@ -147,15 +148,16 @@
     def subscriber_list_active(self):
         var = 'subscriber-list-active-v1'
         aslist_str = ""
-        with osmo_ctrl.OsmoCtrl(self.nitb.addr(), OsmoNitbCtrl.PORT) as ctrl:
-            self.ctrl.do_get(OsmoNitbCtrl.SUBSCR_LIST_ACTIVE_VAR)
+        with self.ctrl() as ctrl:
+            ctrl.do_get(OsmoNitbCtrl.SUBSCR_LIST_ACTIVE_VAR)
             # This is legacy code from the old osmo-gsm-tester.
             # looks like this doesn't work for long data.
-            data = self.ctrl.receive()
+            data = ctrl.receive()
             while (len(data) > 0):
-                (answer, data) = self.ctrl.remove_ipa_ctrl_header(data)
-                answer = answer.replace('\n', ' ')
-                aslist_str = answer
+                (answer, data) = ctrl.remove_ipa_ctrl_header(data)
+                answer_str = answer.decode('utf-8')
+                answer_str = answer_str.replace('\n', ' ')
+                aslist_str = answer_str
             return aslist_str
 
 # vim: expandtab tabstop=4 shiftwidth=4