Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test-cloud-hypervisor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ jobs:
echo "::error::Cloud Hypervisor cgroup residue remains after cleanup"
exit 1
fi
if sudo pgrep -f '[c]loud-hypervisor --api-socket' >/dev/null 2>&1; then
if sudo pgrep -f '/run/awf-cloud-hypervisor/trusted-artifacts/run-[^/]*/[c]loud-hypervisor --api-socket' >/dev/null 2>&1; then
echo "::error::Cloud Hypervisor process residue remains after cleanup"
exit 1
fi
32 changes: 20 additions & 12 deletions scripts/ci/cloud-hypervisor-ci-scripts.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -181,25 +181,33 @@ describe('cloud-hypervisor-live-smoke.sh', () => {
expect(source).toContain("grep -q '^awfvm-'");
expect(source).toContain('(vmh|vmn|vmt)');
expect(source).toContain('CGROUP_ROOT');
expect(source).toContain("pgrep -f '[c]loud-hypervisor --api-socket'");
expect(source).toContain('$ARTIFACT_DIR/[c]loud-hypervisor --api-socket');
expect(source).toContain('$ARTIFACT_DIR/[v]irtiofsd.*--shared-dir=');
expect(source).toContain(
"pgrep -f '/run/awf-cloud-hypervisor/trusted-artifacts/run-[^/]*/[c]loud-hypervisor --api-socket'",
);
expect(source).toContain(
"pgrep -f '/run/awf-cloud-hypervisor/trusted-artifacts/run-[^/]*/[v]irtiofsd.*--shared-dir='",
);
expect(source).not.toContain(
'pgrep -f "$ARTIFACT_DIR/[c]loud-hypervisor --api-socket"',
);
expect(source).not.toContain(
'pgrep -f "$ARTIFACT_DIR/[v]irtiofsd.*--shared-dir="',
);
});

it('uses process probes that exclude their own command line but match live targets', () => {
const artifactDir = '/tmp/cloud-hypervisor-test-x86_64';
const probes = [
{
pattern: '[c]loud-hypervisor --api-socket',
target: `${artifactDir}/cloud-hypervisor --api-socket /run/awf.sock`,
},
{
pattern: `${artifactDir}/[c]loud-hypervisor --api-socket`,
target: `${artifactDir}/cloud-hypervisor --api-socket /run/awf.sock`,
pattern:
'/run/awf-cloud-hypervisor/trusted-artifacts/run-[^/]*/[c]loud-hypervisor --api-socket',
target:
'/run/awf-cloud-hypervisor/trusted-artifacts/run-abc123/cloud-hypervisor --api-socket /run/awf.sock',
},
{
pattern: `${artifactDir}/[v]irtiofsd.*--shared-dir=`,
target: `${artifactDir}/virtiofsd --socket-path=/run/vhost.sock --shared-dir=/workspace`,
pattern:
'/run/awf-cloud-hypervisor/trusted-artifacts/run-[^/]*/[v]irtiofsd.*--shared-dir=',
target:
'/run/awf-cloud-hypervisor/trusted-artifacts/run-abc123/virtiofsd --socket-path=/run/vhost.sock --shared-dir=/workspace',
},
];

Expand Down
12 changes: 6 additions & 6 deletions scripts/ci/cloud-hypervisor-live-smoke.sh
Original file line number Diff line number Diff line change
Expand Up @@ -120,13 +120,13 @@ assert_no_residue() {
echo "Cloud Hypervisor cgroup residue detected" >&2
return 1
fi
if sudo pgrep -f '[c]loud-hypervisor --api-socket' >/dev/null 2>&1; then
sudo pgrep -af '[c]loud-hypervisor --api-socket' >&2
if sudo pgrep -f '/run/awf-cloud-hypervisor/trusted-artifacts/run-[^/]*/[c]loud-hypervisor --api-socket' >/dev/null 2>&1; then
sudo pgrep -af '/run/awf-cloud-hypervisor/trusted-artifacts/run-[^/]*/[c]loud-hypervisor --api-socket' >&2
echo "Cloud Hypervisor process residue detected" >&2
return 1
fi
if sudo pgrep -f "$ARTIFACT_DIR/[v]irtiofsd.*--shared-dir=" >/dev/null 2>&1; then
sudo pgrep -af "$ARTIFACT_DIR/[v]irtiofsd.*--shared-dir=" >&2
if sudo pgrep -f '/run/awf-cloud-hypervisor/trusted-artifacts/run-[^/]*/[v]irtiofsd.*--shared-dir=' >/dev/null 2>&1; then
sudo pgrep -af '/run/awf-cloud-hypervisor/trusted-artifacts/run-[^/]*/[v]irtiofsd.*--shared-dir=' >&2
echo "Cloud Hypervisor virtiofsd process residue detected" >&2
return 1
fi
Expand Down Expand Up @@ -569,7 +569,7 @@ for _ in $(seq 1 90); do
sudo ip netns list | grep -q '^awfvm-' &&
sudo find /run/awf-cloud-hypervisor/pending-cleanup -maxdepth 1 -name '*.json' | grep -q . &&
sudo find "$CGROUP_ROOT" -mindepth 1 -maxdepth 1 -type d | grep -q . &&
sudo pgrep -f "$ARTIFACT_DIR/[c]loud-hypervisor --api-socket" >/dev/null; then
sudo pgrep -f '/run/awf-cloud-hypervisor/trusted-artifacts/run-[^/]*/[c]loud-hypervisor --api-socket' >/dev/null; then
break
fi
sleep 1
Expand All @@ -591,7 +591,7 @@ sudo ip netns list | grep -q '^awfvm-' || {
echo "process-death: abrupt exit did not leave the expected recovery fixture" >&2
exit 1
}
sudo pgrep -f "$ARTIFACT_DIR/[c]loud-hypervisor --api-socket" >/dev/null || {
sudo pgrep -f '/run/awf-cloud-hypervisor/trusted-artifacts/run-[^/]*/[c]loud-hypervisor --api-socket' >/dev/null || {
echo "process-death: VMM did not survive abrupt owner death" >&2
exit 1
}
Expand Down
2 changes: 1 addition & 1 deletion scripts/ci/test-cloud-hypervisor-workflow.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ describe('Cloud Hypervisor CI workflow', () => {
expect(cleanupStep?.run).toContain('awfvm-');
expect(cleanupStep?.run).toContain('awf-cloud-hypervisor');
expect(cleanupStep?.run).toContain(
"pgrep -f '[c]loud-hypervisor --api-socket'",
"pgrep -f '/run/awf-cloud-hypervisor/trusted-artifacts/run-[^/]*/[c]loud-hypervisor --api-socket'",
);
expect(cleanupStep?.run).not.toContain(
"pgrep -f 'cloud-hypervisor --api-socket'",
Expand Down
Loading