@@ -930,41 +930,39 @@ def test_run_dom0_service_wait_for_session(self):
930
930
self .client .wait ()
931
931
self .assertEqual (self .client .returncode , 0 )
932
932
933
- def test_run_dom0_service_socket (self ):
934
- socket_path = os .path .join (
935
- self .tempdir , "rpc" , "qubes.SocketService+arg"
936
- )
937
- server = qrexec .socket_server (socket_path )
938
- self .addCleanup (server .close )
939
- cmd = "QUBESRPC qubes.SocketService+arg src_domain name src_domain"
940
- source = self .connect_service_request (cmd )
941
-
942
- server .accept ()
933
+ @unittest .expectedFailure
934
+ def test_run_dom0_service_socket_no_send_descriptor (self ):
935
+ """Socket based service with no service descriptor"""
936
+ config_path = os .path .join (self .tempdir , "rpc-config" , "qubes.SocketService+arg" )
937
+ with open (config_path , "w" ) as f :
938
+ f .write ("skip-service-descriptor = true\n " )
939
+ def callback (source , server ):
940
+ message = b"stdin data"
941
+ source .send_message (qrexec .MSG_DATA_STDIN , message )
942
+ source .send_message (qrexec .MSG_DATA_STDIN , b"" )
943
+ self .assertEqual (server .recvall (len (message )), message )
944
+
945
+ server .sendall (b"stdout data" )
946
+ server .close ()
947
+ self ._test_run_dom0_service_socket_meta (callback )
943
948
944
- expected = b"qubes.SocketService+arg src_domain name src_domain\0 "
945
- self .assertEqual (server .recvall (len (expected )), expected )
946
-
947
- message = b"stdin data"
948
- source .send_message (qrexec .MSG_DATA_STDIN , message )
949
- source .send_message (qrexec .MSG_DATA_STDIN , b"" )
950
- self .assertEqual (server .recvall (len (message )), message )
949
+ def test_run_dom0_service_socket (self ):
950
+ """Socket based service"""
951
+ def callback (source , server ):
952
+ expected = b"qubes.SocketService+arg src_domain name src_domain\0 "
953
+ self .assertEqual (server .recvall (len (expected )), expected )
951
954
952
- server .sendall (b"stdout data" )
953
- server .close ()
955
+ message = b"stdin data"
956
+ source .send_message (qrexec .MSG_DATA_STDIN , message )
957
+ source .send_message (qrexec .MSG_DATA_STDIN , b"" )
958
+ self .assertEqual (server .recvall (len (message )), message )
954
959
955
- self .assertEqual (
956
- source .recv_all_messages (),
957
- [
958
- (qrexec .MSG_DATA_STDOUT , b"stdout data" ),
959
- (qrexec .MSG_DATA_STDOUT , b"" ),
960
- (qrexec .MSG_DATA_EXIT_CODE , b"\0 \0 \0 \0 " ),
961
- ],
962
- )
963
- self .client .wait ()
964
- self .assertEqual (self .client .returncode , 0 )
960
+ server .sendall (b"stdout data" )
961
+ server .close ()
962
+ self ._test_run_dom0_service_socket_meta (callback )
965
963
966
- def test_run_dom0_service_socket_no_read (self ):
967
- """Socket based service that don't read its input stream """
964
+ def _test_run_dom0_service_socket_meta (self , callback ):
965
+ """Socket based service meta test """
968
966
969
967
socket_path = os .path .join (
970
968
self .tempdir , "rpc" , "qubes.SocketService+arg"
@@ -975,11 +973,7 @@ def test_run_dom0_service_socket_no_read(self):
975
973
source = self .connect_service_request (cmd )
976
974
977
975
server .accept ()
978
- server .sendall (b"stdout data" )
979
- server .close ()
980
-
981
- source .send_message (qrexec .MSG_DATA_STDIN , b"stdin data" )
982
- source .send_message (qrexec .MSG_DATA_STDIN , b"" )
976
+ callback (source , server )
983
977
984
978
self .assertEqual (
985
979
source .recv_all_messages (),
@@ -992,31 +986,21 @@ def test_run_dom0_service_socket_no_read(self):
992
986
self .client .wait ()
993
987
self .assertEqual (self .client .returncode , 0 )
994
988
989
+ def test_run_dom0_service_socket_no_read (self ):
990
+ """Socket based service that don't read its input stream"""
991
+ def callback (source , server ):
992
+ server .sendall (b"stdout data" )
993
+ server .close ()
994
+ source .send_message (qrexec .MSG_DATA_STDIN , b"stdin data" )
995
+ source .send_message (qrexec .MSG_DATA_STDIN , b"" )
996
+ self ._test_run_dom0_service_socket_meta (callback )
997
+
995
998
def test_run_dom0_service_socket_close (self ):
996
999
"""Socket service closes connection"""
997
-
998
- socket_path = os .path .join (
999
- self .tempdir , "rpc" , "qubes.SocketService+arg"
1000
- )
1001
- server = qrexec .socket_server (socket_path )
1002
- self .addCleanup (server .close )
1003
- cmd = "QUBESRPC qubes.SocketService+arg src_domain name src_domain"
1004
- source = self .connect_service_request (cmd )
1005
-
1006
- server .accept ()
1007
- server .sendall (b"stdout data" )
1008
- server .close ()
1009
-
1010
- self .assertEqual (
1011
- source .recv_all_messages (),
1012
- [
1013
- (qrexec .MSG_DATA_STDOUT , b"stdout data" ),
1014
- (qrexec .MSG_DATA_STDOUT , b"" ),
1015
- (qrexec .MSG_DATA_EXIT_CODE , b"\0 \0 \0 \0 " ),
1016
- ],
1017
- )
1018
- self .client .wait ()
1019
- self .assertEqual (self .client .returncode , 0 )
1000
+ def callback (source , server ):
1001
+ server .sendall (b"stdout data" )
1002
+ server .close ()
1003
+ self ._test_run_dom0_service_socket_meta (callback )
1020
1004
1021
1005
def test_run_dom0_service_socket_shutdown_rd (self ):
1022
1006
"""Service does shutdown(SHUT_RD)"""
0 commit comments