THCI: Refine joinCommissioned method (#1292)
diff --git a/tools/harness-thci/OpenThread.py b/tools/harness-thci/OpenThread.py
index 8b2e52a..73ad4a8 100644
--- a/tools/harness-thci/OpenThread.py
+++ b/tools/harness-thci/OpenThread.py
@@ -89,6 +89,8 @@
self.logThread = Queue()
self.logStatus = {'stop':'stop', 'running':'running', "pauseReq":'pauseReq', 'paused':'paused'}
self.logThreadStatus = self.logStatus['stop']
+ self.joinStatus = {'notstart':'notstart', 'ongoing':'ongoing', 'succeed':'succeed', "failed":'failed'}
+ self.joinCommissionedStatus = self.joinStatus['notstart']
self.intialize()
except Exception, e:
ModuleHelper.WriteIntoDebugLogger("initialize() Error: " + str(e))
@@ -591,6 +593,11 @@
print line
logs.put(line)
+ if "Join success" in line:
+ self.joinCommissionedStatus = self.joinStatus['succeed']
+ elif "Join failed" in line:
+ self.joinCommissionedStatus = self.joinStatus['failed']
+
except Exception, e:
pass
@@ -1986,17 +1993,28 @@
strPSKd: Joiner's PSKd
Returns:
- True: successful to start commissioner
- False: fail to start commissioner
+ True: successful to start joiner
+ False: fail to start joiner
"""
print '%s call joinCommissioned' % self.port
self.__sendCommand('ifconfig up')
cmd = 'joiner start %s %s' %(strPSKd, self.provisioningUrl)
print cmd
if self.__sendCommand(cmd)[0] == "Done":
+ maxDuration = 150 # seconds
+ self.joinCommissionedStatus = self.joinStatus['ongoing']
+
if self.logThreadStatus == self.logStatus['stop']:
- self.logThread = ThreadRunner.run(target=self.__readCommissioningLogs, args=(90,))
- time.sleep(100)
+ self.logThread = ThreadRunner.run(target=self.__readCommissioningLogs, args=(maxDuration,))
+
+ t_end = time.time() + maxDuration
+ while time.time() < t_end:
+ if self.joinCommissionedStatus == self.joinStatus['succeed']:
+ break;
+ elif self.joinCommissionedStatus == self.joinStatus['failed']:
+ return False
+
+ time.sleep(1)
self.__sendCommand('thread start')
time.sleep(30)