Skip to content

Commit a0e7438

Browse files
committed
Make more functions in agent tests idempotent
This will hopefully make it easier to support multiple subtests per test in the future.
1 parent c01e533 commit a0e7438

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

qrexec/tests/socket/agent.py

+7-8
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,16 @@ def make_executable_service(self, *args):
7777
util.make_executable_service(self.tempdir, *args)
7878

7979
def setUp(self):
80+
self.agent = self.dom0 = None
8081
self.tempdir = tempfile.mkdtemp()
8182
os.mkdir(os.path.join(self.tempdir, "local-rpc"))
8283
os.mkdir(os.path.join(self.tempdir, "rpc"))
8384
os.mkdir(os.path.join(self.tempdir, "rpc-config"))
8485
self.addCleanup(shutil.rmtree, self.tempdir)
8586

8687
def start_agent(self):
88+
if self.agent is not None:
89+
return
8790
env = os.environ.copy()
8891
env["LD_LIBRARY_PATH"] = os.path.join(ROOT_PATH, "libqrexec")
8992
env["VCHAN_DOMAIN"] = str(self.domain)
@@ -127,8 +130,11 @@ def wait_for_agent_children(self):
127130
psutil.wait_procs(children)
128131

129132
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)
131136
self.addCleanup(dom0.close)
137+
dom0.handshake()
132138
return dom0
133139

134140
def connect_target(self):
@@ -150,13 +156,11 @@ def test_handshake(self):
150156
self.start_agent()
151157

152158
dom0 = self.connect_dom0()
153-
dom0.handshake()
154159

155160
def _test_just_exec(self, cmd):
156161
self.start_agent()
157162

158163
dom0 = self.connect_dom0()
159-
dom0.handshake()
160164

161165
user = getpass.getuser().encode("ascii")
162166

@@ -235,7 +239,6 @@ def test_exec_cmdline(self):
235239
self.start_agent()
236240

237241
dom0 = self.connect_dom0()
238-
dom0.handshake()
239242

240243
user = getpass.getuser().encode("ascii")
241244

@@ -260,7 +263,6 @@ def test_trigger_service(self):
260263
target_domain_name = b"target_domain"
261264

262265
dom0 = self.connect_dom0()
263-
dom0.handshake()
264266

265267
client = self.connect_client()
266268
ident = self.trigger_service(
@@ -286,7 +288,6 @@ def test_trigger_service_refused(self):
286288
target_domain_name = b"target_domain"
287289

288290
dom0 = self.connect_dom0()
289-
dom0.handshake()
290291

291292
client = self.connect_client()
292293
ident = self.trigger_service(
@@ -337,7 +338,6 @@ def execute_qubesrpc(self, service: str, src_domain_name: str):
337338
self.start_agent()
338339

339340
dom0 = self.connect_dom0()
340-
dom0.handshake()
341341

342342
user = getpass.getuser()
343343
cmdline = "{}:QUBESRPC {} {}\0".format(
@@ -977,7 +977,6 @@ def execute(self, cmd: str):
977977
self.start_agent()
978978

979979
dom0 = self.connect_dom0()
980-
dom0.handshake()
981980

982981
user = getpass.getuser()
983982
cmdline = "{}:{}\0".format(user, cmd).encode("ascii")

0 commit comments

Comments
 (0)