Spaces:
Build error
Build error
| """Stress tests for the DockerRuntime, which connects to the ActionExecutor running in the sandbox.""" | |
| import pytest | |
| from conftest import _close_test_runtime, _load_runtime | |
| from openhands.core.logger import openhands_logger as logger | |
| from openhands.events.action import CmdRunAction | |
| def test_stress_docker_runtime(temp_dir, runtime_cls, repeat=1): | |
| pytest.skip('This test is flaky') | |
| runtime, config = _load_runtime( | |
| temp_dir, | |
| runtime_cls, | |
| docker_runtime_kwargs={ | |
| 'cpu_period': 100000, # 100ms | |
| 'cpu_quota': 100000, # Can use 100ms out of each 100ms period (1 CPU) | |
| 'mem_limit': '4G', # 4 GB of memory | |
| }, | |
| ) | |
| action = CmdRunAction( | |
| command='sudo apt-get update && sudo apt-get install -y stress-ng' | |
| ) | |
| logger.info(action, extra={'msg_type': 'ACTION'}) | |
| obs = runtime.run_action(action) | |
| logger.info(obs, extra={'msg_type': 'OBSERVATION'}) | |
| assert obs.exit_code == 0 | |
| for _ in range(repeat): | |
| # run stress-ng stress tests for 1 minute | |
| action = CmdRunAction(command='stress-ng --all 1 -t 30s') | |
| action.set_hard_timeout(120) | |
| logger.info(action, extra={'msg_type': 'ACTION'}) | |
| obs = runtime.run_action(action) | |
| logger.info(obs, extra={'msg_type': 'OBSERVATION'}) | |
| _close_test_runtime(runtime) | |
| # def test_stress_docker_runtime_hit_memory_limits(temp_dir, runtime_cls): | |
| # """Test runtime behavior under resource constraints.""" | |
| # runtime, config = _load_runtime( | |
| # temp_dir, | |
| # runtime_cls, | |
| # docker_runtime_kwargs={ | |
| # 'cpu_period': 100000, # 100ms | |
| # 'cpu_quota': 100000, # Can use 100ms out of each 100ms period (1 CPU) | |
| # 'mem_limit': '4G', # 4 GB of memory | |
| # 'memswap_limit': '0', # No swap | |
| # 'mem_swappiness': 0, # Disable swapping | |
| # 'oom_kill_disable': False, # Enable OOM killer | |
| # }, | |
| # runtime_startup_env_vars={ | |
| # 'RUNTIME_MAX_MEMORY_GB': '3', | |
| # }, | |
| # ) | |
| # action = CmdRunAction( | |
| # command='sudo apt-get update && sudo apt-get install -y stress-ng' | |
| # ) | |
| # logger.info(action, extra={'msg_type': 'ACTION'}) | |
| # obs = runtime.run_action(action) | |
| # logger.info(obs, extra={'msg_type': 'OBSERVATION'}) | |
| # assert obs.exit_code == 0 | |
| # action = CmdRunAction( | |
| # command='stress-ng --vm 1 --vm-bytes 6G --timeout 30s --metrics' | |
| # ) | |
| # action.set_hard_timeout(120) | |
| # logger.info(action, extra={'msg_type': 'ACTION'}) | |
| # obs = runtime.run_action(action) | |
| # logger.info(obs, extra={'msg_type': 'OBSERVATION'}) | |
| # assert 'aborted early, out of system resources' in obs.content | |
| # assert obs.exit_code == 3 # OOM killed! | |
| # _close_test_runtime(runtime) | |
| # def test_stress_docker_runtime_within_memory_limits(temp_dir, runtime_cls): | |
| # """Test runtime behavior under resource constraints.""" | |
| # runtime, config = _load_runtime( | |
| # temp_dir, | |
| # runtime_cls, | |
| # docker_runtime_kwargs={ | |
| # 'cpu_period': 100000, # 100ms | |
| # 'cpu_quota': 100000, # Can use 100ms out of each 100ms period (1 CPU) | |
| # 'mem_limit': '4G', # 4 GB of memory | |
| # 'memswap_limit': '0', # No swap | |
| # 'mem_swappiness': 0, # Disable swapping | |
| # 'oom_kill_disable': False, # Enable OOM killer | |
| # }, | |
| # runtime_startup_env_vars={ | |
| # 'RUNTIME_MAX_MEMORY_GB': '7', | |
| # }, | |
| # ) | |
| # action = CmdRunAction( | |
| # command='sudo apt-get update && sudo apt-get install -y stress-ng' | |
| # ) | |
| # logger.info(action, extra={'msg_type': 'ACTION'}) | |
| # obs = runtime.run_action(action) | |
| # logger.info(obs, extra={'msg_type': 'OBSERVATION'}) | |
| # assert obs.exit_code == 0 | |
| # action = CmdRunAction( | |
| # command='stress-ng --vm 1 --vm-bytes 6G --timeout 30s --metrics' | |
| # ) | |
| # action.set_hard_timeout(120) | |
| # logger.info(action, extra={'msg_type': 'ACTION'}) | |
| # obs = runtime.run_action(action) | |
| # logger.info(obs, extra={'msg_type': 'OBSERVATION'}) | |
| # assert obs.exit_code == 0 | |
| # _close_test_runtime(runtime) | |