diff --git a/test/crossrunner/run.py b/test/crossrunner/run.py
index e3300ba..ae7d366 100644
--- a/test/crossrunner/run.py
+++ b/test/crossrunner/run.py
@@ -204,7 +204,7 @@
     return port if ok else self._get_domain_port()
 
   def alloc_port(self, socket_type):
-    if socket_type == 'domain':
+    if socket_type in ('domain', 'abstract'):
       return self._get_domain_port()
     else:
       return self._get_tcp_port()
@@ -226,6 +226,8 @@
         path = domain_socket_path(port)
         if os.path.exists(path):
           os.remove(path)
+      elif socket_type == 'abstract':
+        self._dom_ports.remove(port)
       else:
         self._ports.remove(port)
     except IOError as err:
diff --git a/test/crossrunner/test.py b/test/crossrunner/test.py
index 512e664..3750ba3 100644
--- a/test/crossrunner/test.py
+++ b/test/crossrunner/test.py
@@ -60,10 +60,11 @@
       cmd[0] = abs_if_exists(cmd[0])
     return cmd
 
-  def _socket_arg(self, socket, port):
+  def _socket_args(self, socket, port):
     return {
-      'ip-ssl': '--ssl',
-      'domain': '--domain-socket=%s' % domain_socket_path(port),
+      'ip-ssl': ['--ssl'],
+      'domain': ['--domain-socket=%s' % domain_socket_path(port)],
+      'abstract': ['--abstract-namespace', '--domain-socket=%s' % domain_socket_path(port)],
     }.get(socket, None)
 
   def build_command(self, port):
@@ -71,9 +72,9 @@
     args = []
     args.append('--protocol=' + self.protocol)
     args.append('--transport=' + self.transport)
-    socket_arg = self._socket_arg(self.socket, port)
-    if socket_arg:
-      args.append(socket_arg)
+    socket_args = self._socket_args(self.socket, port)
+    if socket_args:
+      args += socket_args
     args.append('--port=%d' % port)
     if self._join_args:
       cmd.append('%s' % " ".join(args))
