@@ -77,13 +77,16 @@ def make_executable_service(self, *args):
77
77
util .make_executable_service (self .tempdir , * args )
78
78
79
79
def setUp (self ):
80
+ self .agent = self .dom0 = None
80
81
self .tempdir = tempfile .mkdtemp ()
81
82
os .mkdir (os .path .join (self .tempdir , "local-rpc" ))
82
83
os .mkdir (os .path .join (self .tempdir , "rpc" ))
83
84
os .mkdir (os .path .join (self .tempdir , "rpc-config" ))
84
85
self .addCleanup (shutil .rmtree , self .tempdir )
85
86
86
87
def start_agent (self ):
88
+ if self .agent is not None :
89
+ return
87
90
env = os .environ .copy ()
88
91
env ["LD_LIBRARY_PATH" ] = os .path .join (ROOT_PATH , "libqrexec" )
89
92
env ["VCHAN_DOMAIN" ] = str (self .domain )
@@ -127,8 +130,11 @@ def wait_for_agent_children(self):
127
130
psutil .wait_procs (children )
128
131
129
132
def connect_dom0 (self ):
130
- dom0 = qrexec .vchan_client (self .tempdir , self .domain , 0 , 512 )
133
+ if self .dom0 is not None :
134
+ return self .dom0
135
+ dom0 = self .dom0 = qrexec .vchan_client (self .tempdir , self .domain , 0 , 512 )
131
136
self .addCleanup (dom0 .close )
137
+ dom0 .handshake ()
132
138
return dom0
133
139
134
140
def connect_target (self ):
@@ -150,13 +156,11 @@ def test_handshake(self):
150
156
self .start_agent ()
151
157
152
158
dom0 = self .connect_dom0 ()
153
- dom0 .handshake ()
154
159
155
160
def _test_just_exec (self , cmd ):
156
161
self .start_agent ()
157
162
158
163
dom0 = self .connect_dom0 ()
159
- dom0 .handshake ()
160
164
161
165
user = getpass .getuser ().encode ("ascii" )
162
166
@@ -235,7 +239,6 @@ def test_exec_cmdline(self):
235
239
self .start_agent ()
236
240
237
241
dom0 = self .connect_dom0 ()
238
- dom0 .handshake ()
239
242
240
243
user = getpass .getuser ().encode ("ascii" )
241
244
@@ -260,7 +263,6 @@ def test_trigger_service(self):
260
263
target_domain_name = b"target_domain"
261
264
262
265
dom0 = self .connect_dom0 ()
263
- dom0 .handshake ()
264
266
265
267
client = self .connect_client ()
266
268
ident = self .trigger_service (
@@ -286,7 +288,6 @@ def test_trigger_service_refused(self):
286
288
target_domain_name = b"target_domain"
287
289
288
290
dom0 = self .connect_dom0 ()
289
- dom0 .handshake ()
290
291
291
292
client = self .connect_client ()
292
293
ident = self .trigger_service (
@@ -337,7 +338,6 @@ def execute_qubesrpc(self, service: str, src_domain_name: str):
337
338
self .start_agent ()
338
339
339
340
dom0 = self .connect_dom0 ()
340
- dom0 .handshake ()
341
341
342
342
user = getpass .getuser ()
343
343
cmdline = "{}:QUBESRPC {} {}\0 " .format (
@@ -977,7 +977,6 @@ def execute(self, cmd: str):
977
977
self .start_agent ()
978
978
979
979
dom0 = self .connect_dom0 ()
980
- dom0 .handshake ()
981
980
982
981
user = getpass .getuser ()
983
982
cmdline = "{}:{}\0 " .format (user , cmd ).encode ("ascii" )
0 commit comments