Skip to content

Commit

Permalink
fix: Pass through no-API shutdown exit code
Browse files Browse the repository at this point in the history
Without passing through the exit code a non-zero exit code was returned
on a successful no-API shutdown.

Signed-off-by: Jonathan Woollett-Light <jcawl@amazon.co.uk>
  • Loading branch information
Jonathan Woollett-Light committed Oct 18, 2023
1 parent 00524a7 commit ac15af4
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 0 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@

- Fixed a bug that ignored the `--show-log-origin` option, preventing it from
printing the source code file of the log messages.
- [#4178](https://github.com/firecracker-microvm/firecracker/pull/4178):
Fixed a bug reporting a non-zero exit code on successful shutdown when
starting Firecracker with `--no-api`.

## [1.5.0]

Expand Down
1 change: 1 addition & 0 deletions src/firecracker/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ impl From<MainError> for ExitCode {
MainError::InvalidLogLevel(_) => FcExitCode::BadConfiguration,
MainError::RunWithApi(ApiServerError::MicroVMStoppedWithoutError(code)) => code,
MainError::RunWithApi(ApiServerError::MicroVMStoppedWithError(code)) => code,
MainError::RunWithoutApiError(RunWithoutApiError::Shutdown(code)) => code,

Check warning on line 86 in src/firecracker/src/main.rs

View check run for this annotation

Codecov / codecov/patch

src/firecracker/src/main.rs#L86

Added line #L86 was not covered by tests
_ => FcExitCode::GenericError,
};

Expand Down
22 changes: 22 additions & 0 deletions tests/integration_tests/functional/test_cmd_line_start.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import platform
import re
import shutil
import time
from pathlib import Path

import pytest
Expand Down Expand Up @@ -156,6 +157,27 @@ def test_config_start_no_api(uvm_plain, vm_config_file):
)


@pytest.mark.parametrize("vm_config_file", ["framework/vm_config_network.json"])
def test_config_start_no_api_exit(uvm_plain, vm_config_file):
"""
Test microvm exit when API server is disabled.
"""
test_microvm = uvm_plain
_configure_vm_from_json(test_microvm, vm_config_file)
_configure_network_interface(test_microvm)
test_microvm.jailer.extra_args.update({"no-api": None})

test_microvm.spawn() # Start Firecracker and MicroVM
time.sleep(3) # Wait for startup
test_microvm.ssh.run("reboot") # Exit
time.sleep(3) # Wait for shutdown

# Check error log
test_microvm.check_log_message(
"RunWithoutApiError error: MicroVMStopped without an error: Ok"
)


@pytest.mark.parametrize(
"vm_config_file",
[
Expand Down

0 comments on commit ac15af4

Please sign in to comment.