diff --git a/test/swift/CrossTests/Sources/TestClient/main.swift b/test/swift/CrossTests/Sources/TestClient/main.swift
index 6817981..d627408 100644
--- a/test/swift/CrossTests/Sources/TestClient/main.swift
+++ b/test/swift/CrossTests/Sources/TestClient/main.swift
@@ -40,7 +40,12 @@
   }
 
   static func getTransport(parameters: TestClientParameters) throws -> TTransport {
-    let socketTransport = try TSocketTransport(hostname: parameters.host!, port: parameters.port!)
+      let socketTransport: TTransport = try { () throws -> TTransport in
+          if let domainSocket = parameters.domainSocket {
+            return try TSocketTransport(path: domainSocket)
+          }
+          return try TSocketTransport(hostname: parameters.host!, port: parameters.port!)
+      }()
     if parameters.transport == .framed {
       return TFramedTransport(transport: socketTransport)
     } 
diff --git a/test/swift/CrossTests/Sources/TestServer/main.swift b/test/swift/CrossTests/Sources/TestServer/main.swift
index 15564d3..433bde7 100644
--- a/test/swift/CrossTests/Sources/TestServer/main.swift
+++ b/test/swift/CrossTests/Sources/TestServer/main.swift
@@ -34,19 +34,31 @@
     let processor = ThriftTestProcessor(service: service)
     
     
-    switch (parameters.proto, parameters.transport) {
-    case (.binary, .buffered):
+    switch (parameters.proto, parameters.transport, parameters.domainSocket) {
+    case (.binary, .buffered, .none):
       let proto = TBinaryProtocol.self
       server = try TSocketServer(port: parameters.port!, inProtocol: proto, outProtocol: proto, processor: processor)
-    case (.binary, .framed):
+    case (.binary, .framed, .none):
       let proto = TBinaryProtocol.self
       server = try TFramedSocketServer(port: parameters.port!, inProtocol: proto, outProtocol: proto, processor: processor)
-    case (.compact, .buffered):
+    case (.compact, .buffered, .none):
       let proto = TCompactProtocol.self
       server = try TSocketServer(port: parameters.port!, inProtocol: proto, outProtocol: proto, processor: processor)
-    case (.compact, .framed):
+    case (.compact, .framed, .none):
       let proto = TCompactProtocol.self
       server = try TFramedSocketServer(port: parameters.port!, inProtocol: proto, outProtocol: proto, processor: processor)
+    case (.binary, .buffered, .some(let domainSocket)):
+      let proto = TBinaryProtocol.self
+      server = try TSocketServer(path: domainSocket, inProtocol: proto, outProtocol: proto, processor: processor)
+    case (.binary, .framed, .some(let domainSocket)):
+      let proto = TBinaryProtocol.self
+      server = try TFramedSocketServer(path: domainSocket, inProtocol: proto, outProtocol: proto, processor: processor)
+    case (.compact, .buffered, .some(let domainSocket)):
+      let proto = TCompactProtocol.self
+      server = try TSocketServer(path: domainSocket, inProtocol: proto, outProtocol: proto, processor: processor)
+    case (.compact, .framed, .some(let domainSocket)):
+      let proto = TCompactProtocol.self
+      server = try TFramedSocketServer(path: domainSocket, inProtocol: proto, outProtocol: proto, processor: processor)
     default:
       throw ParserError.unsupportedOption
     }
