summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorVinicius Costa Gomes <vcgomes@gmail.com>2009-05-06 00:17:07 -0300
committerVinicius Costa Gomes <vcgomes@gmail.com>2009-05-06 00:17:07 -0300
commit65952ab428b3b0e765798974950ad9f37f323f63 (patch)
tree3fcac2f565cefddbd9c2aa589357b6b82a4cae61 /test
parentca0e2cc8f1559b851581d6cccd51de1dc554d952 (diff)
downloadobexd-65952ab428b3b0e765798974950ad9f37f323f63.tar.gz
Introduces a FTP client test script
Diffstat (limited to 'test')
-rw-r--r--test/Makefile.am2
-rwxr-xr-xtest/ftp-client128
2 files changed, 129 insertions, 1 deletions
diff --git a/test/Makefile.am b/test/Makefile.am
index f89614b..ffbe2fc 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -8,6 +8,6 @@ obex_test_LDADD = @GWOBEX_LIBS@ @OPENOBEX_LIBS@ @BLUEZ_LIBS@ @GLIB_LIBS@
AM_CFLAGS = @GLIB_CFLAGS@ @BLUEZ_CFLAGS@ @OPENOBEX_CFLAGS@ @GWOBEX_CFLAGS@
EXTRA_DIST = send-files pull-business-card exchange-business-cards \
- list-folders pbap-client simple-agent
+ list-folders pbap-client simple-agent ftp-client
MAINTAINERCLEANFILES = Makefile.in
diff --git a/test/ftp-client b/test/ftp-client
new file mode 100755
index 0000000..595fb19
--- /dev/null
+++ b/test/ftp-client
@@ -0,0 +1,128 @@
+#!/usr/bin/python
+
+import gobject
+
+import sys
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+import os.path
+from optparse import OptionParser
+
+class Agent(dbus.service.Object):
+ def __init__(self, conn=None, obj_path=None, verbose=False):
+ dbus.service.Object.__init__(self, conn, obj_path)
+ self.verbose = verbose
+
+ @dbus.service.method("org.openobex.Agent",
+ in_signature="ot", out_signature="")
+ def Progress(self, path, transferred):
+ if self.verbose:
+ print "Transfer progress (%d bytes)" % (transferred)
+ return
+
+ @dbus.service.method("org.openobex.Agent",
+ in_signature="o", out_signature="")
+ def Complete(self, path):
+ if self.verbose:
+ print "Transfer finished"
+ mainloop.quit()
+
+ @dbus.service.method("org.openobex.Agent",
+ in_signature="os", out_signature="")
+ def Error(self, path, error):
+ print "Transfer finished with an error: %s" % (error)
+ mainloop.quit()
+
+ @dbus.service.method("org.openobex.Agent",
+ in_signature="", out_signature="")
+ def Release(self):
+ mainloop.quit()
+
+
+def parse_options():
+ parser.add_option("-d", "--device", dest="device",
+ help="Device to connect", metavar="DEVICE")
+ parser.add_option("-c", "--chdir", dest="new_dir",
+ help="Change current directory to DIR", metavar="DIR")
+ parser.add_option("-l", "--list", action="store_true", dest="list_dir",
+ help="List the current directory")
+ parser.add_option("-g", "--get", dest="get_file",
+ help="Get FILE", metavar="FILE")
+ parser.add_option("-p", "--put", dest="put_file",
+ help="Put FILE", metavar="FILE")
+ parser.add_option("-v", "--verbose", action="store_true", dest="verbose")
+
+ return parser.parse_args()
+
+
+def change_folder(session, new_dir):
+ for node in new_dir.split("/"):
+ session.ChangeFolder(node)
+
+def list_folder(session):
+ for i in session.ListFolder():
+ if i["Type"] == "folder":
+ print "%s/" % (i["Name"])
+ else:
+ print "%s" % (i["Name"])
+
+def put_file(session, filename):
+ session.PutFile(os.path.abspath(filename),
+ os.path.basename(filename))
+
+def get_file(session, filename):
+ session.GetFile(os.path.abspath(filename),
+ os.path.basename(filename))
+
+
+if __name__ == '__main__':
+
+ dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+ parser = OptionParser()
+
+ (options, args) = parse_options()
+
+ if not options.device:
+ parser.print_help()
+ sys.exit(0)
+
+ bus = dbus.SessionBus()
+ mainloop = gobject.MainLoop()
+
+ need_mainloop = False
+
+ path = "/test/agent"
+ agent = Agent(bus, path, options.verbose)
+
+ client = dbus.Interface(bus.get_object("org.openobex.client", "/"),
+ "org.openobex.Client")
+
+ session_path = client.CreateSession({ "Destination": options.device,
+ "Target": "ftp"})
+
+ session = dbus.Interface(bus.get_object("org.openobex.client", session_path),
+ "org.openobex.Session")
+
+ session.AssignAgent(path)
+
+ ftp = dbus.Interface(bus.get_object("org.openobex.client", session_path),
+ "org.openobex.FileTransfer")
+
+ if options.new_dir:
+ change_folder(ftp, options.new_dir)
+
+ if options.list_dir:
+ list_folder(ftp)
+
+ if options.get_file:
+ need_mainloop = True
+ get_file(ftp, options.get_file)
+
+ if options.put_file:
+ need_mainloop = True
+ put_file(ftp, options.put_file)
+
+ if need_mainloop:
+ mainloop.run()