ray/test/debug_tools_test.py

50 lines
1.3 KiB
Python

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import os
import subprocess
import sys
import pytest
import ray
@pytest.fixture
def ray_gdb_start():
# Setup environment and start ray
_environ = os.environ.copy()
for process_name in ["RAYLET", "PLASMA_STORE"]:
os.environ["RAY_{}_GDB".format(process_name)] = "1"
os.environ["RAY_{}_TMUX".format(process_name)] = "1"
yield None
# Restore original environment and stop ray
os.environ.clear()
os.environ.update(_environ)
ray.shutdown()
@pytest.mark.skipif(
sys.platform != "linux" and sys.platform != "linux2",
reason="This test requires Linux.")
def test_raylet_gdb(ray_gdb_start):
# ray_gdb_start yields the expected process name
ray.init(num_cpus=1)
@ray.remote
def f():
return 42
assert ray.get(f.remote()) == 42
# Check process name in `ps aux | grep gdb`
for process_name in ["raylet/raylet", "plasma/plasma_store_server"]:
pgrep_command = subprocess.Popen(
["pgrep", "-f", "gdb.*{}".format(process_name)],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
assert pgrep_command.communicate()[0]
subprocess.call(["pkill", "-f", "gdb.*{}".format(process_name)])