From 281b73e00360cc88d301b7cd6e0bb9d80a975c92 Mon Sep 17 00:00:00 2001 From: Trever Fischer Date: Thu, 23 Feb 2012 16:32:09 -0500 Subject: Merge ipv4/6 testing into the file transfer tester so any test can be ran without unix sockets --- .../avahi/file-transfer/file_transfer_helper.py | 46 +++++++++---- .../file-transfer/receive-file-and-disconnect.py | 2 +- ...file-and-sender-disconnect-while-transfering.py | 2 +- .../receive-file-and-xmpp-disconnect.py | 2 +- .../receive-file-cancelled-immediately.py | 2 +- .../avahi/file-transfer/receive-file-ipv4.py | 77 +--------------------- .../avahi/file-transfer/receive-file-ipv6.py | 64 +----------------- .../avahi/file-transfer/receive-file-not-found.py | 2 +- .../twisted/avahi/file-transfer/send-file-ipv4.py | 25 +------ .../twisted/avahi/file-transfer/send-file-ipv6.py | 25 +------ 10 files changed, 47 insertions(+), 200 deletions(-) (limited to 'tests') diff --git a/tests/twisted/avahi/file-transfer/file_transfer_helper.py b/tests/twisted/avahi/file-transfer/file_transfer_helper.py index dcfe7202..fee320e4 100644 --- a/tests/twisted/avahi/file-transfer/file_transfer_helper.py +++ b/tests/twisted/avahi/file-transfer/file_transfer_helper.py @@ -8,6 +8,7 @@ import httplib import urlparse import sys import os +import SocketServer from avahitest import AvahiAnnouncer, AvahiListener, get_host_name from saluttest import wait_for_contact_in_publish @@ -58,9 +59,20 @@ class FileTransferTest(object): metadata = {'loads': ['of', 'blahblah', 'stuff'], 'mental': ['data', 'sidf']} - def __init__(self): + def __init__(self, ft_protocol=cs.SOCKET_ADDRESS_TYPE_UNIX): self.file = File() self.contact_service = None + self.ft_proto = ft_protocol + + def _get_socket_address_family(self): + if self.ft_proto == cs.SOCKET_ADDRESS_TYPE_IPV4: + return socket.AF_INET + elif self.ft_proto == cs.SOCKET_ADDRESS_TYPE_IPV6: + return socket.AF_INET6 + elif self.ft_proto == cs.SOCKET_ADDRESS_TYPE_UNIX: + return socket.AF_UNIX + + assert False def connect(self): self.conn.Connect() @@ -144,8 +156,8 @@ class FileTransferTest(object): self.contact_service.stop() class ReceiveFileTest(FileTransferTest): - def __init__(self): - FileTransferTest.__init__(self) + def __init__(self, ft_protocol = cs.SOCKET_ADDRESS_TYPE_UNIX): + FileTransferTest.__init__(self, ft_protocol) self._actions = [self.connect, self.announce_contact, self.wait_for_contact, self.connect_to_salut, self.setup_http_server, self.send_ft_offer_iq, @@ -191,7 +203,12 @@ class ReceiveFileTest(FileTransferTest): self.httpd = self._get_http_server_class()(('', 0), HTTPHandler) def _get_http_server_class(self): - return BaseHTTPServer.HTTPServer + if self.ft_proto == cs.SOCKET_ADDRESS_TYPE_UNIX: + return BaseHTTPServer.HTTPServer + class HTTPServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): + address_family = self._get_socket_address_family() + + return HTTPServer def send_ft_offer_iq(self): iq = domish.Element((None, 'iq')) @@ -286,8 +303,8 @@ class ReceiveFileTest(FileTransferTest): cs.CHANNEL_TYPE_FILE_TRANSFER, 'URI', 'badger://snake') self.q.expect('dbus-error', method='Set', name=cs.INVALID_ARGUMENT) - def accept_file(self, type = cs.SOCKET_ADDRESS_TYPE_UNIX): - self.address = self.ft_channel.AcceptFile(type, + def accept_file(self): + self.address = self.ft_channel.AcceptFile(self.ft_proto, cs.SOCKET_ACCESS_CONTROL_LOCALHOST, "", 5, byte_arrays=True) e = self.q.expect('dbus-signal', signal='FileTransferStateChanged') @@ -326,9 +343,9 @@ class ReceiveFileTest(FileTransferTest): assert state == cs.FT_STATE_COMPLETED assert reason == cs.FT_STATE_CHANGE_REASON_NONE - def receive_file(self, type=socket.AF_UNIX): + def receive_file(self): # Connect to Salut's socket - s = socket.socket(type, socket.SOCK_STREAM) + s = socket.socket(self._get_socket_address_family(), socket.SOCK_STREAM) s.connect(self.address) self.httpd.handle_request() @@ -339,8 +356,8 @@ class ReceiveFileTest(FileTransferTest): self._read_file_from_socket(s) class SendFileTest(FileTransferTest): - def __init__(self): - FileTransferTest.__init__(self) + def __init__(self, ft_protocol=cs.SOCKET_ADDRESS_TYPE_UNIX): + FileTransferTest.__init__(self, ft_protocol) self._actions = [self.connect, self.announce_contact, self.wait_for_contact, self.check_ft_available, self.request_ft_channel, self.create_ft_channel, @@ -466,10 +483,11 @@ class SendFileTest(FileTransferTest): else: assert ns.TP_FT_METADATA not in forms - def provide_file(self, type = cs.SOCKET_ADDRESS_TYPE_UNIX): - self.address = self.ft_channel.ProvideFile(type, + def provide_file(self): + self.address = self.ft_channel.ProvideFile(self.ft_proto, cs.SOCKET_ACCESS_CONTROL_LOCALHOST, "", byte_arrays=True) + def client_request_file(self): # Connect HTTP client to the CM and request the file self.http = httplib.HTTPConnection(self.host) @@ -482,8 +500,8 @@ class SendFileTest(FileTransferTest): # Did we received the right file? assert data == self.file.data - def send_file(self, socketType = socket.AF_UNIX): - s = socket.socket(socketType, socket.SOCK_STREAM) + def send_file(self): + s = socket.socket(self._get_socket_address_family(), socket.SOCK_STREAM) s.connect(self.address) s.send(self.file.data) diff --git a/tests/twisted/avahi/file-transfer/receive-file-and-disconnect.py b/tests/twisted/avahi/file-transfer/receive-file-and-disconnect.py index 39dca216..7b35cfe9 100644 --- a/tests/twisted/avahi/file-transfer/receive-file-and-disconnect.py +++ b/tests/twisted/avahi/file-transfer/receive-file-and-disconnect.py @@ -5,7 +5,7 @@ from file_transfer_helper import ReceiveFileTest class ReceiveFileAndDisconnectTest(ReceiveFileTest): def receive_file(self): - s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s = socket.socket(self._get_socket_address_family(), socket.SOCK_STREAM) s.connect(self.address) # disconnect diff --git a/tests/twisted/avahi/file-transfer/receive-file-and-sender-disconnect-while-transfering.py b/tests/twisted/avahi/file-transfer/receive-file-and-sender-disconnect-while-transfering.py index fef5cf26..0e32cf46 100644 --- a/tests/twisted/avahi/file-transfer/receive-file-and-sender-disconnect-while-transfering.py +++ b/tests/twisted/avahi/file-transfer/receive-file-and-sender-disconnect-while-transfering.py @@ -15,7 +15,7 @@ class ReceiveFileAndSenderDisconnectWhileTransfering(ReceiveFileTest): def receive_file(self): # Connect to Salut's socket - s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s = socket.socket(self._get_socket_address_family(), socket.SOCK_STREAM) s.connect(self.address) self.httpd.handle_request() diff --git a/tests/twisted/avahi/file-transfer/receive-file-and-xmpp-disconnect.py b/tests/twisted/avahi/file-transfer/receive-file-and-xmpp-disconnect.py index 63fa2dd3..d1b6a0f0 100644 --- a/tests/twisted/avahi/file-transfer/receive-file-and-xmpp-disconnect.py +++ b/tests/twisted/avahi/file-transfer/receive-file-and-xmpp-disconnect.py @@ -14,7 +14,7 @@ class ReceiveFileAndXmppDisconnectTest(ReceiveFileTest): def receive_file(self): # Connect to Salut's socket - s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s = socket.socket(self._get_socket_address_family(), socket.SOCK_STREAM) s.connect(self.address) self.httpd.handle_request() diff --git a/tests/twisted/avahi/file-transfer/receive-file-cancelled-immediately.py b/tests/twisted/avahi/file-transfer/receive-file-cancelled-immediately.py index fabf826e..91597f8a 100644 --- a/tests/twisted/avahi/file-transfer/receive-file-cancelled-immediately.py +++ b/tests/twisted/avahi/file-transfer/receive-file-cancelled-immediately.py @@ -15,7 +15,7 @@ class ReceiveFileCancelledImmediatelyTest(ReceiveFileTest): def receive_file(self): # Connect to Salut's socket - s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s = socket.socket(self._get_socket_address_family(), socket.SOCK_STREAM) s.connect(self.address) # Salut can't connect to download the file diff --git a/tests/twisted/avahi/file-transfer/receive-file-ipv4.py b/tests/twisted/avahi/file-transfer/receive-file-ipv4.py index bbc84662..c3123b43 100644 --- a/tests/twisted/avahi/file-transfer/receive-file-ipv4.py +++ b/tests/twisted/avahi/file-transfer/receive-file-ipv4.py @@ -1,83 +1,10 @@ -import avahi -import urllib -import BaseHTTPServer -import SocketServer -import socket - from saluttest import exec_test from file_transfer_helper import ReceiveFileTest - -from avahitest import AvahiAnnouncer, get_host_name, AvahiListener -from xmppstream import connect_to_stream, setup_stream_listener - -from twisted.words.xish import domish - import constants as cs class TestReceiveFileIPv4(ReceiveFileTest): - CONTACT_NAME = 'test-ft' - - service_name = '' - metadata = {} - - def announce_contact(self, name=CONTACT_NAME): - basic_txt = { "txtvers": "1", "status": "avail" } - - self.contact_name = '%s@%s' % (name, get_host_name()) - self.listener, port = setup_stream_listener(self.q, self.contact_name) - - self.contact_service = AvahiAnnouncer(self.contact_name, "_presence._tcp", port, - basic_txt, proto=avahi.PROTO_INET) - - - def _resolve_salut_presence(self): - AvahiListener(self.q).listen_for_service("_presence._tcp") - e = self.q.expect('service-added', name = self.self_handle_name, - protocol = avahi.PROTO_INET) - service = e.service - service.resolve() - - e = self.q.expect('service-resolved', service = service, - protocol = avahi.PROTO_INET) - return str(e.pt), e.port - - def accept_file(self): - ReceiveFileTest.accept_file(self, cs.SOCKET_ADDRESS_TYPE_IPV4); - - def receive_file(self): - ReceiveFileTest.receive_file(self, socket.AF_INET); - - def connect_to_salut(self): - host, port = self._resolve_salut_presence() - - self.outbound = connect_to_stream(self.q, self.contact_name, - self.self_handle_name, host, port) - - e = self.q.expect('connection-result') - assert e.succeeded, e.reason - self.q.expect('stream-opened', connection = self.outbound) - - def send_ft_offer_iq(self): - iq = domish.Element((None, 'iq')) - iq['to'] = self.self_handle_name - iq['from'] = self.contact_name - iq['type'] = 'set' - iq['id'] = 'gibber-file-transfer-0' - query = iq.addElement(('jabber:iq:oob', 'query')) - url = 'http://127.0.0.1:%u/gibber-file-transfer-0/%s' % \ - (self.httpd.server_port, urllib.quote(self.file.name)) - url_node = query.addElement('url', content=url) - url_node['type'] = 'file' - url_node['size'] = str(self.file.size) - url_node['mimeType'] = self.file.content_type - query.addElement('desc', content=self.file.description) - self.outbound.send(iq) - - def _get_http_server_class(self): - class HTTPServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): - address_family = getattr(socket, 'AF_INET', None) - - return HTTPServer + def __init__(self): + ReceiveFileTest.__init__(self, cs.SOCKET_ADDRESS_TYPE_IPV4) if __name__ == '__main__': test = TestReceiveFileIPv4() diff --git a/tests/twisted/avahi/file-transfer/receive-file-ipv6.py b/tests/twisted/avahi/file-transfer/receive-file-ipv6.py index 330c32e2..da2bbe9b 100644 --- a/tests/twisted/avahi/file-transfer/receive-file-ipv6.py +++ b/tests/twisted/avahi/file-transfer/receive-file-ipv6.py @@ -20,68 +20,8 @@ if not check_ipv6_enabled(): import constants as cs class TestReceiveFileIPv6(ReceiveFileTest): - CONTACT_NAME = 'test-ft' - - service_name = '' - metadata = {} - - def announce_contact(self, name=CONTACT_NAME): - basic_txt = { "txtvers": "1", "status": "avail" } - - self.contact_name = '%s@%s' % (name, get_host_name()) - self.listener, port = setup_stream_listener6(self.q, self.contact_name) - - self.contact_service = AvahiAnnouncer(self.contact_name, "_presence._tcp", port, - basic_txt, proto=avahi.PROTO_INET6) - - def _resolve_salut_presence(self): - AvahiListener(self.q).listen_for_service("_presence._tcp") - e = self.q.expect('service-added', name = self.self_handle_name, - protocol = avahi.PROTO_INET6) - service = e.service - service.resolve() - - e = self.q.expect('service-resolved', service = service, - protocol = avahi.PROTO_INET6) - return str(e.pt), e.port - - def accept_file(self): - ReceiveFileTest.accept_file(self, cs.SOCKET_ADDRESS_TYPE_IPV6); - - def receive_file(self): - ReceiveFileTest.receive_file(self, socket.AF_INET6); - - def connect_to_salut(self): - host, port = self._resolve_salut_presence() - - self.outbound = connect_to_stream6(self.q, self.contact_name, - self.self_handle_name, host, port) - - e = self.q.expect('connection-result') - assert e.succeeded, e.reason - self.q.expect('stream-opened', connection = self.outbound) - - def send_ft_offer_iq(self): - iq = domish.Element((None, 'iq')) - iq['to'] = self.self_handle_name - iq['from'] = self.contact_name - iq['type'] = 'set' - iq['id'] = 'gibber-file-transfer-0' - query = iq.addElement(('jabber:iq:oob', 'query')) - url = 'http://[::1]:%u/gibber-file-transfer-0/%s' % \ - (self.httpd.server_port, urllib.quote(self.file.name)) - url_node = query.addElement('url', content=url) - url_node['type'] = 'file' - url_node['size'] = str(self.file.size) - url_node['mimeType'] = self.file.content_type - query.addElement('desc', content=self.file.description) - self.outbound.send(iq) - - def _get_http_server_class(self): - class HTTPServer6(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): - address_family = getattr(socket, 'AF_INET6', None) - - return HTTPServer6 + def __init__(self): + ReceiveFileTest.__init__(self, cs.SOCKET_ADDRESS_TYPE_IPV6) if __name__ == '__main__': test = TestReceiveFileIPv6() diff --git a/tests/twisted/avahi/file-transfer/receive-file-not-found.py b/tests/twisted/avahi/file-transfer/receive-file-not-found.py index 50244a16..efba28be 100644 --- a/tests/twisted/avahi/file-transfer/receive-file-not-found.py +++ b/tests/twisted/avahi/file-transfer/receive-file-not-found.py @@ -30,7 +30,7 @@ class ReceiveFileNotFound(ReceiveFileTest): def receive_file(self): # Connect to Salut's socket - s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s = socket.socket(self._get_socket_address_family(), socket.SOCK_STREAM) s.connect(self.address) self.httpd.handle_request() diff --git a/tests/twisted/avahi/file-transfer/send-file-ipv4.py b/tests/twisted/avahi/file-transfer/send-file-ipv4.py index d8876500..deec728a 100644 --- a/tests/twisted/avahi/file-transfer/send-file-ipv4.py +++ b/tests/twisted/avahi/file-transfer/send-file-ipv4.py @@ -1,37 +1,18 @@ -import avahi from saluttest import exec_test -from avahitest import AvahiAnnouncer, get_host_name -from xmppstream import setup_stream_listener from file_transfer_helper import SendFileTest -import socket - import constants as cs class SendFileTransferIPv4(SendFileTest): - CONTACT_NAME = 'test-ft' - - def announce_contact(self, name=CONTACT_NAME): - basic_txt = { "txtvers": "1", "status": "avail" } - - self.contact_name = '%s@%s' % (name, get_host_name()) - self.listener, port = setup_stream_listener(self.q, self.contact_name) - - self.contact_service = AvahiAnnouncer(self.contact_name, "_presence._tcp", port, - basic_txt, proto=avahi.PROTO_INET) + def __init__(self): + SendFileTest.__init__(self, cs.SOCKET_ADDRESS_TYPE_IPV4) def provide_file(self): - SendFileTest.provide_file(self, cs.SOCKET_ADDRESS_TYPE_IPV4) - - # state is still Pending as remote didn't accept the transfer yet + SendFileTest.provide_file(self) state = self.ft_props.Get(cs.CHANNEL_TYPE_FILE_TRANSFER, 'State') assert state == cs.FT_STATE_PENDING - def send_file(self): - SendFileTest.send_file(socket.AF_INET); - def client_request_file(self): SendFileTest.client_request_file(self) - e = self.q.expect('dbus-signal', signal='InitialOffsetDefined') offset = e.args[0] # We don't support resume diff --git a/tests/twisted/avahi/file-transfer/send-file-ipv6.py b/tests/twisted/avahi/file-transfer/send-file-ipv6.py index 05c8f3a7..a64fc68b 100644 --- a/tests/twisted/avahi/file-transfer/send-file-ipv6.py +++ b/tests/twisted/avahi/file-transfer/send-file-ipv6.py @@ -1,10 +1,5 @@ -import avahi from saluttest import exec_test -from avahitest import AvahiAnnouncer, get_host_name -from xmppstream import setup_stream_listener6 from file_transfer_helper import SendFileTest -import socket - import constants as cs print "FIXME: disabled because of a bug in Python's httplib. http://bugs.python.org/issue5111" @@ -12,30 +7,16 @@ print "FIXME: disabled because of a bug in Python's httplib. http://bugs.python. raise SystemExit(77) class SendFileTransferIPv6(SendFileTest): - CONTACT_NAME = 'test-ft' - - def announce_contact(self, name=CONTACT_NAME): - basic_txt = { "txtvers": "1", "status": "avail" } - - self.contact_name = '%s@%s' % (name, get_host_name()) - self.listener, port = setup_stream_listener6(self.q, self.contact_name) - - self.contact_service = AvahiAnnouncer(self.contact_name, "_presence._tcp", port, - basic_txt, proto=avahi.PROTO_INET6) + def __init__(self): + SendFileTest.__init__(self, cs.SOCKET_ADDRESS_TYPE_IPV6) def provide_file(self): - SendFileTest.provide_file(self, cs.SOCKET_ADDRESS_TYPE_IPV6) - - # state is still Pending as remote didn't accept the transfer yet + SendFileTest.provide_file(self) state = self.ft_props.Get(cs.CHANNEL_TYPE_FILE_TRANSFER, 'State') assert state == cs.FT_STATE_PENDING - def send_file(self): - SendFileTest.send_file(socket.AF_INET6); - def client_request_file(self): SendFileTest.client_request_file(self) - e = self.q.expect('dbus-signal', signal='InitialOffsetDefined') offset = e.args[0] # We don't support resume -- cgit v1.2.1