mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
116 lines
4.1 KiB
Python
116 lines
4.1 KiB
Python
"""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)
|