From 7054e93685c8c18838cc78500566ba4277a5cb26 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 21 Jan 2009 18:54:41 +0100 Subject: Add more advanced test script for device handling --- test/Makefile.am | 3 +- test/test-connman | 265 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 267 insertions(+), 1 deletion(-) create mode 100755 test/test-connman diff --git a/test/Makefile.am b/test/Makefile.am index 11f19fd7..e88b602d 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -4,6 +4,7 @@ EXTRA_DIST = get-state list-profiles list-connections select-connection \ list-networks select-network disable-network create-network \ set-passphrase set-address set-policy test-manager \ connect-network disconnect-network simple-agent \ - show-introspection test-compat monitor-connman debug-connman + show-introspection test-compat \ + test-connman monitor-connman debug-connman MAINTAINERCLEANFILES = Makefile.in diff --git a/test/test-connman b/test/test-connman new file mode 100755 index 00000000..c59a064c --- /dev/null +++ b/test/test-connman @@ -0,0 +1,265 @@ +#!/usr/bin/python + +import sys +import dbus + +bus = dbus.SystemBus() + +manager = dbus.Interface(bus.get_object("org.moblin.connman", "/"), + "org.moblin.connman.Manager") + +if len(sys.argv) < 2: + print "Usage: %s " % (sys.argv[0]) + print "" + print " state" + print " scan [ ]" + print " dev " + print " dev scan" + print " dev networks" + print " dev connect " + print " dev remember " + print " dev disconnect [network]" + print " dev policy [ignore|off|auto|manual]" + print " dev powered [on|off]" + print " dev priority [0-255]" + sys.exit(1) + +def print_properties(path, properties): + print "[ %s ]" % (path) + for key in properties.keys(): + if key == "Networks": + continue + + if key in ["Powered", "Scanning", "Connected", + "Available", "Remember", "Default"]: + if properties[key] == dbus.Boolean(1): + val = "true" + else: + val = "false" + elif key in ["Strength", "Priority"]: + val = int(properties[key]) + else: + val = str(properties[key]) + + print " %s = %s" % (key, val) + + if "Networks" in properties.keys(): + list = "" + for path in properties["Networks"]: + val = str(path) + list = list + val[val.rfind("/") + 1:] + " " + print " Networks = [ %s]" % (list) + +def print_networks(networks): + for path in networks: + network = dbus.Interface(bus.get_object("org.moblin.connman", path), + "org.moblin.connman.Network") + + properties = network.GetProperties() + + if properties["Connected"] == dbus.Boolean(1): + connected = "*" + else: + connected = " " + + name = properties["Name"] + strength = int(properties["Strength"]) + + details = "" + try: + details += "{" + properties["WiFi.Mode"] + "} " + except: + pass + try: + details += "{" + properties["WiFi.Security"] + "} " + except: + pass + if "WiFi.Passphrase" in properties.keys(): + if properties["WiFi.Passphrase"] != "": + details += "{passphrase present}" + + print "%s %-20s %3d%% %s" % (connected, + name, strength, details) + +def select_network(networks, name): + for path in networks: + network = dbus.Interface(bus.get_object("org.moblin.connman", path), + "org.moblin.connman.Network") + + properties = network.GetProperties() + + if properties["Name"] != name: + continue + + if properties["Connected"] == dbus.Boolean(1): + print "Already connected to network %s" % (name) + break + + print "Selecting network %s" % (name) + + network.Connect() + +def remember_network(networks, name): + for path in networks: + network = dbus.Interface(bus.get_object("org.moblin.connman", path), + "org.moblin.connman.Network") + + properties = network.GetProperties() + + if properties["Name"] != name: + continue + + if properties["Remember"] == dbus.Boolean(1): + print "Already a known network %s" % (name) + break + + print "Remembering network %s" % (name) + + network.SetProperty("Remember", dbus.Boolean(1)) + +def disconnect_network(networks, name): + for path in networks: + network = dbus.Interface(bus.get_object("org.moblin.connman", path), + "org.moblin.connman.Network") + + properties = network.GetProperties() + + if name != "" and properties["Name"] != name: + continue + + if properties["Connected"] == dbus.Boolean(1): + name = properties["Name"] + print "Disconnecting from network %s" % (name) + network.Disconnect() + +if sys.argv[1] == "state": + properties = manager.GetProperties() + + print "System is %s" % (properties["State"]) + +elif sys.argv[1] == "scan": + properties = manager.GetProperties() + + interface = "" + found = 0 + + if len(sys.argv) > 2: + interface = sys.argv[2] + + for path in properties["Devices"]: + device = dbus.Interface(bus.get_object("org.moblin.connman", path), + "org.moblin.connman.Device") + + properties = device.GetProperties() + + if interface != "" and properties["Interface"] != interface: + continue + + if properties["Type"] in ["wifi", "wimax"]: + interface = properties["Interface"] + print "Propose scanning for device %s" % (interface) + device.ProposeScan() + found = 1 + elif interface != "": + print "No scanning support for device %s" % (interface) + found = 1 + + if found == 0: + print "No such device" + +elif sys.argv[1] == "dev": + properties = manager.GetProperties() + + interface = "" + command = "" + value = "" + found = 0 + + if len(sys.argv) > 2: + interface = sys.argv[2] + if len(sys.argv) > 3: + command = sys.argv[3] + if len(sys.argv) > 4: + value = sys.argv[4] + + for path in properties["Devices"]: + device = dbus.Interface(bus.get_object("org.moblin.connman", path), + "org.moblin.connman.Device") + + properties = device.GetProperties() + + if interface != "" and properties["Interface"] != interface: + continue + + if command == "scan": + if properties["Type"] in ["wifi", "wimax"]: + interface = properties["Interface"] + print "Scan for device %s" % (interface) + device.ProposeScan() + else: + print "No scanning for device %s" % (interface) + elif command in ["networks", "net"]: + if "Networks" in properties.keys(): + print_networks(properties["Networks"]) + else: + print "Device has no networks" + elif command in ["connect", "conn"] and value != "": + if "Networks" in properties.keys(): + select_network(properties["Networks"], value) + else: + print "Device can't connect networks" + elif command in ["connect", "conn"]: + print "Need to specify network" + elif command in ["remember", "known"] and value != "": + if "Networks" in properties.keys(): + remember_network(properties["Networks"], value) + else: + print "Device has no networks" + elif command in ["remember", "known"]: + print "Need to specify network" + elif command in ["disconnect", "disc"] and value != "": + if "Networks" in properties.keys(): + disconnect_network(properties["Networks"], value) + else: + print "Device has no networks" + elif command in ["discconnect", "disc"]: + if "Networks" in properties.keys(): + disconnect_network(properties["Networks"], "") + else: + print "Device has no networks" + elif command == "policy" and value != "": + policy = value + device.SetProperty("Policy", policy) + elif command == "policy": + interface = properties["Interface"] + policy = properties["Policy"] + print "Policy of device %s is %s" % (interface, policy) + elif command == "powered" and value != "": + if value == "on": + powered = dbus.Boolean(1) + elif value == "off": + powered = dbus.Boolean(0) + else: + powered = dbus.Boolean(value) + device.SetProperty("Powered", powered) + elif command == "powered": + interface = properties["Interface"] + if properties["Powered"] == dbus.Boolean(1): + powered = "on" + else: + powered = "off" + print "Device %s is powered %s" % (interface, powered) + elif command == "priority" and value != "": + priority = int(value) + device.SetProperty("Priority", priority) + elif command == "priority": + interface = properties["Interface"] + priority = properties["Priority"] + print "Device %s has priority of %d" % (interface, priority) + elif command == "list" or command == "": + print_properties(path, properties) + else: + print "Unknown command" + +else: + print "Unknown command" -- cgit v1.2.3