X-Git-Url: http://git.maemo.org/git/?p=theonering;a=blobdiff_plain;f=hand_tests%2Fgeneric.py;h=a25f77befd53a978d44c8ef07d53986811b88183;hp=e5155f73e91d70c5d1642358f4d04bb9b7655a89;hb=887113c5927f329599cc7044c7b689d1134f0dac;hpb=89e33abd2a4f6962aa7d6ac721a9a1bb87611c11 diff --git a/hand_tests/generic.py b/hand_tests/generic.py index e5155f7..a25f77b 100755 --- a/hand_tests/generic.py +++ b/hand_tests/generic.py @@ -35,6 +35,10 @@ class Action(object): assert self._action is None self._action = action + def get_next_action(self): + assert self._action is not None + return self._action + def _on_done(self): if self._action is None: return @@ -71,7 +75,7 @@ class DisplayParams(Action): def queue_action(self): self._cm[telepathy.interfaces.CONN_MGR_INTERFACE].GetParameters( - 'sip', + 'gv', reply_handler = self._on_done, error_handler = self._on_error, ) @@ -96,10 +100,10 @@ class DisplayParams(Action): super(DisplayParams, self)._on_done() -class Connect(Action): +class RequestConnection(Action): def __init__(self, cm, username, password, forward): - super(Connect, self).__init__() + super(RequestConnection, self).__init__() self._cm = cm self._conn = None @@ -119,24 +123,34 @@ class Connect(Action): def queue_action(self): self._cm[telepathy.server.CONNECTION_MANAGER].RequestConnection( - 'sip', + 'gv', { - 'username': self._username, + 'account': self._username, 'password': self._password, 'forward': self._forward, }, - reply_handler = self._on_connection_requested, + reply_handler = self._on_done, error_handler = self._on_error, ) - def _on_connection_requested(self, busName, objectPath): + def _on_done(self, busName, objectPath): self._serviceName = busName self._conn = telepathy.client.Connection(busName, objectPath) - self._conn[telepathy.server.CONNECTION].connect_to_signal( + super(RequestConnection, self)._on_done() + + +class Connect(Action): + + def __init__(self, connAction): + super(Connect, self).__init__() + self._connAction = connAction + + def queue_action(self): + self._connAction.conn[telepathy.server.CONNECTION].connect_to_signal( 'StatusChanged', self._on_change, ) - self._conn[telepathy.server.CONNECTION].Connect( + self._connAction.conn[telepathy.server.CONNECTION].Connect( reply_handler = self._on_generic_message, error_handler = self._on_error, ) @@ -274,6 +288,68 @@ class RequestChannel(Action): super(RequestChannel, self)._on_done() +class EnsureChannel(Action): + + def __init__(self, connAction, channelType, handleType, handleId): + super(EnsureChannel, self).__init__() + self._connAction = connAction + self._channel = None + self._channelType = channelType + self._handleType = handleType + self._handleId = handleId + self._handle = None + + @property + def channel(self): + return self._channel + + @property + def handle(self): + return self._handle + + @property + def handles(self): + return [self._handle] + + def queue_action(self): + properties = { + telepathy.server.CHANNEL_INTERFACE+".ChannelType": self._channelType, + telepathy.server.CHANNEL_INTERFACE+".TargetHandleType": self._handleType, + telepathy.server.CHANNEL_INTERFACE+".TargetID": self._handleId, + } + self._connAction.conn[telepathy.server.CONNECTION_INTERFACE_REQUESTS].EnsureChannel( + properties, + reply_handler = self._on_done, + error_handler = self._on_error, + ) + + def _on_done(self, yours, channelObjectPath, properties): + print "Create?", not not yours + print "Path:", channelObjectPath + print "Properties:", properties + self._channel = telepathy.client.Channel(self._connAction.serviceName, channelObjectPath) + self._handle = properties[telepathy.server.CHANNEL_INTERFACE+".TargetHandle"] + super(EnsureChannel, self)._on_done() + + +class CloseChannel(Action): + + def __init__(self, connAction, chanAction): + super(CloseChannel, self).__init__() + self._connAction = connAction + self._chanAction = chanAction + self._handles = [] + + def queue_action(self): + self._chanAction.channel[telepathy.server.CHANNEL].Close( + reply_handler = self._on_done, + error_handler = self._on_error, + ) + + def _on_done(self): + super(CloseChannel, self)._on_done() + + class ContactHandles(Action): def __init__(self, connAction, chanAction): @@ -287,9 +363,15 @@ class ContactHandles(Action): return self._handles def queue_action(self): - pass + self._chanAction.channel[DBUS_PROPERTIES].Get( + telepathy.server.CHANNEL_INTERFACE_GROUP, + 'Members', + reply_handler = self._on_done, + error_handler = self._on_error, + ) - def _on_done(self, handle): + def _on_done(self, handles): + self._handles = list(handles) super(ContactHandles, self)._on_done() @@ -350,8 +432,8 @@ class Aliases(Action): def _on_done(self, aliases): print "\tAliases:" - for alias in aliases: - print "\t\t", alias + for h, alias in zip(self._handleAction.handles, aliases): + print "\t\t", h, alias super(Aliases, self)._on_done() @@ -387,18 +469,41 @@ class SendText(Action): self._message = message def queue_action(self): - self._chanAction.channel[telepathy.server.CHANNEL_TYPE_TEXT].SendText( + self._chanAction.channel[telepathy.server.CHANNEL_TYPE_TEXT].Send( self._messageType, self._message, reply_handler = self._on_done, error_handler = self._on_error, ) - def _on_done(self, handle): + def _on_done(self,): print "Message sent" super(SendText, self)._on_done() +class Sleep(Action): + + def __init__(self, length): + super(Sleep, self).__init__() + self._length = length + + def queue_action(self): + gobject.timeout_add(self._length, self._on_done) + + +class Block(Action): + + def __init__(self): + super(Block, self).__init__() + + def queue_action(self): + print "Blocking" + + def _on_done(self): + #super(SendText, self)._on_done() + pass + + class Disconnect(Action): def __init__(self, connAction): @@ -427,71 +532,101 @@ if __name__ == '__main__': if True: dp = DisplayParams(cm) lastAction.append_action(dp) - lastAction = dp + lastAction = lastAction.get_next_action() if True: username = sys.argv[1] password = sys.argv[2] forward = sys.argv[3] - con = Connect(cm, username, password, forward) + reqcon = RequestConnection(cm, username, password, forward) + lastAction.append_action(reqcon) + lastAction = lastAction.get_next_action() + + if False: + reqcon = RequestConnection(cm, username, password, forward) + lastAction.append_action(reqcon) + lastAction = lastAction.get_next_action() + + con = Connect(reqcon) lastAction.append_action(con) - lastAction = con + lastAction = lastAction.get_next_action() if True: - spo = SimplePresenceOptions(con) + spo = SimplePresenceOptions(reqcon) lastAction.append_action(spo) - lastAction = spo + lastAction = lastAction.get_next_action() if True: - uh = UserHandle(con) + uh = UserHandle(reqcon) lastAction.append_action(uh) - lastAction = uh + lastAction = lastAction.get_next_action() - ua = Aliases(con, uh) + ua = Aliases(reqcon, uh) lastAction.append_action(ua) - lastAction = ua + lastAction = lastAction.get_next_action() - sps = SimplePresenceStatus(con, uh) + sps = SimplePresenceStatus(reqcon, uh) lastAction.append_action(sps) - lastAction = sps + lastAction = lastAction.get_next_action() if False: - setdnd = SetSimplePresence(con, "dnd", "") + setdnd = SetSimplePresence(reqcon, "dnd", "") lastAction.append_action(setdnd) - lastAction = setdnd + lastAction = lastAction.get_next_action() - sps = SimplePresenceStatus(con, uh) + sps = SimplePresenceStatus(reqcon, uh) lastAction.append_action(sps) - lastAction = sps + lastAction = lastAction.get_next_action() - setdnd = SetSimplePresence(con, "available", "") + setdnd = SetSimplePresence(reqcon, "available", "") lastAction.append_action(setdnd) - lastAction = setdnd + lastAction = lastAction.get_next_action() - sps = SimplePresenceStatus(con, uh) + sps = SimplePresenceStatus(reqcon, uh) lastAction.append_action(sps) - lastAction = sps + lastAction = lastAction.get_next_action() - if True: - rclh = RequestHandle(con, telepathy.HANDLE_TYPE_LIST, ["subscribe"]) + if False: + sl = Sleep(10 * 1000) + lastAction.append_action(sl) + lastAction = lastAction.get_next_action() + + if False: + rclh = RequestHandle(reqcon, telepathy.HANDLE_TYPE_LIST, ["subscribe"]) lastAction.append_action(rclh) - lastAction = rclh + lastAction = lastAction.get_next_action() rclc = RequestChannel( - con, + reqcon, rclh, telepathy.CHANNEL_TYPE_CONTACT_LIST, telepathy.HANDLE_TYPE_LIST, ) lastAction.append_action(rclc) - lastAction = rclc + lastAction = lastAction.get_next_action() + + ch = ContactHandles(reqcon, rclc) + lastAction.append_action(ch) + lastAction = lastAction.get_next_action() - # @todo get aliases for contacts + ca = Aliases(reqcon, ch) + lastAction.append_action(ca) + lastAction = lastAction.get_next_action() if True: - rch = RequestHandle(con, telepathy.HANDLE_TYPE_CONTACT, ["18005558355"]) #(1-800-555-TELL) + accountNumber = sys.argv[4] + enChan = EnsureChannel(reqcon, telepathy.CHANNEL_TYPE_TEXT, telepathy.HANDLE_TYPE_CONTACT, accountNumber) + lastAction.append_action(enChan) + lastAction = lastAction.get_next_action() + + sendDebugtext = SendText(reqcon, enChan, enChan, telepathy.CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, "Boo!") + lastAction.append_action(sendDebugtext) + lastAction = lastAction.get_next_action() + + if False: + rch = RequestHandle(reqcon, telepathy.HANDLE_TYPE_CONTACT, ["18005558355"]) #(1-800-555-TELL) lastAction.append_action(rch) - lastAction = rch + lastAction = lastAction.get_next_action() # making a phone call if True: @@ -501,42 +636,65 @@ if __name__ == '__main__': smHandle = nullHandle smHandleType = telepathy.HANDLE_TYPE_NONE rsmc = RequestChannel( - con, + reqcon, smHandle, telepathy.CHANNEL_TYPE_STREAMED_MEDIA, smHandleType, ) lastAction.append_action(rsmc) - lastAction = rsmc + lastAction = lastAction.get_next_action() if False: - call = Call(con, rsmc, rch) + call = Call(reqcon, rsmc, rch) lastAction.append_action(call) - lastAction = call + lastAction = lastAction.get_next_action() # sending a text rtc = RequestChannel( - con, + reqcon, rch, telepathy.CHANNEL_TYPE_TEXT, smHandleType, ) lastAction.append_action(rtc) - lastAction = rtc + lastAction = lastAction.get_next_action() + + if True: + closechan = CloseChannel(reqcon, rtc) + lastAction.append_action(closechan) + lastAction = lastAction.get_next_action() + + rtc = RequestChannel( + reqcon, + rch, + telepathy.CHANNEL_TYPE_TEXT, + smHandleType, + ) + lastAction.append_action(rtc) + lastAction = lastAction.get_next_action() if False: - sendtext = SendText(con, rtc, rch, telepathy.CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, "Boo!") + sendtext = SendText(reqcon, rtc, rch, telepathy.CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, "Boo!") lastAction.append_action(sendtext) - lastAction = sendtext + lastAction = lastAction.get_next_action() + + if False: + bl = Block() + lastAction.append_action(bl) + lastAction = lastAction.get_next_action() + if False: + sl = Sleep(30 * 1000) + lastAction.append_action(sl) + lastAction = lastAction.get_next_action() - dis = Disconnect(con) + dis = Disconnect(reqcon) lastAction.append_action(dis) - lastAction = dis + lastAction = lastAction.get_next_action() quitter = QuitLoop(loop) lastAction.append_action(quitter) - lastAction = quitter + lastAction = lastAction.get_next_action() firstAction.queue_action() loop.run()