Skip to content

Commit 14e4b60

Browse files
committed
test: stop compiling firecracker inside A/B-tests
In the pre-PR A/B-tests we were compiling Firecracker. Instead, explicitly rely on the precompiled binaries that we set up in the shared buildkite build step. This has the slight downside that it makes it harder to run these tests locally, as now you need to explicitly pre-compile the binaries, but arguably running these vulnerability A/B-tests locally doesnt make sense anyway, because they specifically test the security configuration on our supported .metals. While we're at it, rename the ab_* utility functions to make it obvious that they expect pre-compiled binaries. Signed-off-by: Patrick Roy <[email protected]>
1 parent 01e86be commit 14e4b60

File tree

2 files changed

+27
-30
lines changed

2 files changed

+27
-30
lines changed

tests/framework/ab_test.py

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,7 @@
3333
from framework.microvm import Microvm
3434
from framework.utils import CommandReturn
3535
from framework.with_filelock import with_filelock
36-
from host_tools.cargo_build import (
37-
DEFAULT_TARGET_DIR,
38-
get_binary,
39-
get_firecracker_binaries,
40-
)
36+
from host_tools.cargo_build import DEFAULT_TARGET_DIR, get_firecracker_binaries
4137

4238
# Locally, this will always compare against main, even if we try to merge into, say, a feature branch.
4339
# We might want to do a more sophisticated way to determine a "parent" branch here.
@@ -178,7 +174,7 @@ def set_did_not_grow_comparator(
178174
)
179175

180176

181-
def git_ab_test_guest_command(
177+
def precompiled_ab_test_guest_command(
182178
microvm_factory: Callable[[Path, Path], Microvm],
183179
command: str,
184180
*,
@@ -188,30 +184,29 @@ def git_ab_test_guest_command(
188184
):
189185
"""The same as git_ab_test_command, but via SSH. The closure argument should setup a microvm using the passed
190186
paths to firecracker and jailer binaries."""
187+
b_directory = (
188+
DEFAULT_B_DIRECTORY
189+
if b_revision is None
190+
else FC_WORKSPACE_DIR / "build" / b_revision
191+
)
191192

192-
@with_filelock
193-
def build_firecracker(workspace_dir):
194-
utils.check_output("./tools/release.sh --profile release", cwd=workspace_dir)
195-
196-
def test_runner(workspace_dir, _is_a: bool):
197-
firecracker = get_binary("firecracker", workspace_dir=workspace_dir)
198-
if not firecracker.exists():
199-
build_firecracker(workspace_dir)
200-
bin_dir = firecracker.parent.resolve()
201-
firecracker, jailer = bin_dir / "firecracker", bin_dir / "jailer"
202-
microvm = microvm_factory(firecracker, jailer)
193+
def test_runner(bin_dir, _is_a: bool):
194+
microvm = microvm_factory(bin_dir / "firecracker", bin_dir / "jailer")
203195
return microvm.ssh.run(command)
204196

205-
(_, old_out, old_err), (_, new_out, new_err), the_same = git_ab_test(
206-
test_runner, comparator, a_revision=a_revision, b_revision=b_revision
197+
(_, old_out, old_err), (_, new_out, new_err), the_same = binary_ab_test(
198+
test_runner,
199+
comparator,
200+
a_directory=FC_WORKSPACE_DIR / "build" / a_revision,
201+
b_directory=b_directory,
207202
)
208203

209204
assert (
210205
the_same
211206
), f"The output of running command `{command}` changed:\nOld:\nstdout:\n{old_out}\nstderr\n{old_err}\n\nNew:\nstdout:\n{new_out}\nstderr:\n{new_err}"
212207

213208

214-
def git_ab_test_guest_command_if_pr(
209+
def precompiled_ab_test_guest_command_if_pr(
215210
microvm_factory: Callable[[Path, Path], Microvm],
216211
command: str,
217212
*,
@@ -220,7 +215,9 @@ def git_ab_test_guest_command_if_pr(
220215
):
221216
"""The same as git_ab_test_command_if_pr, but via SSH"""
222217
if is_pr():
223-
git_ab_test_guest_command(microvm_factory, command, comparator=comparator)
218+
precompiled_ab_test_guest_command(
219+
microvm_factory, command, comparator=comparator
220+
)
224221
return None
225222

226223
microvm = microvm_factory(*get_firecracker_binaries())

tests/integration_tests/security/test_vulnerabilities.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313

1414
from framework import utils
1515
from framework.ab_test import (
16-
git_ab_test_guest_command,
17-
git_ab_test_guest_command_if_pr,
1816
is_pr,
17+
precompiled_ab_test_guest_command,
18+
precompiled_ab_test_guest_command_if_pr,
1919
set_did_not_grow_comparator,
2020
)
2121
from framework.properties import global_props
@@ -233,7 +233,7 @@ def test_spectre_meltdown_checker_on_guest(spectre_meltdown_checker, build_micro
233233
Test with the spectre / meltdown checker on guest.
234234
"""
235235

236-
status = git_ab_test_guest_command_if_pr(
236+
status = precompiled_ab_test_guest_command_if_pr(
237237
with_checker(build_microvm, spectre_meltdown_checker),
238238
REMOTE_CHECKER_COMMAND,
239239
comparator=set_did_not_grow_comparator(
@@ -251,7 +251,7 @@ def test_spectre_meltdown_checker_on_restored_guest(
251251
"""
252252
Test with the spectre / meltdown checker on a restored guest.
253253
"""
254-
status = git_ab_test_guest_command_if_pr(
254+
status = precompiled_ab_test_guest_command_if_pr(
255255
with_checker(
256256
with_restore(build_microvm, microvm_factory), spectre_meltdown_checker
257257
),
@@ -272,7 +272,7 @@ def test_spectre_meltdown_checker_on_guest_with_template(
272272
Test with the spectre / meltdown checker on guest with CPU template.
273273
"""
274274

275-
git_ab_test_guest_command_if_pr(
275+
precompiled_ab_test_guest_command_if_pr(
276276
with_checker(build_microvm_with_template, spectre_meltdown_checker),
277277
REMOTE_CHECKER_COMMAND,
278278
comparator=set_did_not_grow_comparator(
@@ -287,7 +287,7 @@ def test_spectre_meltdown_checker_on_guest_with_custom_template(
287287
"""
288288
Test with the spectre / meltdown checker on guest with a custom CPU template.
289289
"""
290-
git_ab_test_guest_command_if_pr(
290+
precompiled_ab_test_guest_command_if_pr(
291291
with_checker(build_microvm_with_custom_template, spectre_meltdown_checker),
292292
REMOTE_CHECKER_COMMAND,
293293
comparator=set_did_not_grow_comparator(
@@ -302,7 +302,7 @@ def test_spectre_meltdown_checker_on_restored_guest_with_template(
302302
"""
303303
Test with the spectre / meltdown checker on a restored guest with a CPU template.
304304
"""
305-
git_ab_test_guest_command_if_pr(
305+
precompiled_ab_test_guest_command_if_pr(
306306
with_checker(
307307
with_restore(build_microvm_with_template, microvm_factory),
308308
spectre_meltdown_checker,
@@ -322,7 +322,7 @@ def test_spectre_meltdown_checker_on_restored_guest_with_custom_template(
322322
"""
323323
Test with the spectre / meltdown checker on a restored guest with a custom CPU template.
324324
"""
325-
git_ab_test_guest_command_if_pr(
325+
precompiled_ab_test_guest_command_if_pr(
326326
with_checker(
327327
with_restore(build_microvm_with_custom_template, microvm_factory),
328328
spectre_meltdown_checker,
@@ -424,7 +424,7 @@ def check_vulnerabilities_files_ab(builder):
424424
running in a PR pipeline, and otherwise calls `check_vulnerabilities_files_on_guest`
425425
"""
426426
if is_pr():
427-
git_ab_test_guest_command(
427+
precompiled_ab_test_guest_command(
428428
builder,
429429
f"! grep -r Vulnerable {VULN_DIR}",
430430
comparator=set_did_not_grow_comparator(

0 commit comments

Comments
 (0)