def test_filter(shutdown_only): ray.init() @ray.remote class Actor: def __init__(self): self.obj = None def ready(self): pass def put(self): self.obj = ray.put(123) def getpid(self): import os return os.getpid() """ Test basic case. """ a = Actor.remote() b = Actor.remote() ray.get([a.ready.remote(), b.ready.remote()]) ray.kill(b) def verify(): result = list_actors(filters=[("state", "DEAD")]) return len(result) == 1 wait_for_condition(verify) """ Test filter with different types (integer). """ obj_1 = ray.put(123) # noqa ray.get(a.put.remote()) pid = ray.get(a.getpid.remote()) def verify(): # There's only 1 object. result = list_objects( filters=[("pid", pid), ("reference_type", "LOCAL_REFERENCE")]) return len(result) == 1 wait_for_condition(verify) """ Test CLI """ dead_actor_id = list(list_actors(filters=[("state", "DEAD")]))[0] alive_actor_id = list(list_actors(filters=[("state", "ALIVE")]))[0] runner = CliRunner() result = runner.invoke(list_state_cli_group, ["actors", "--filter", "state", "DEAD"]) assert result.exit_code == 0 assert dead_actor_id in result.output assert alive_actor_id not in result.output
def test_limit(shutdown_only): ray.init() @ray.remote class A: def ready(self): pass actors = [A.remote() for _ in range(4)] ray.get([actor.ready.remote() for actor in actors]) output = list_actors(limit=2) assert len(output) == 2 # Make sure the output is deterministic. assert output == list_actors(limit=2)
def actors(ctx, format: str): url = ctx.obj["api_server_url"] format = AvailableFormat(format) print( get_state_api_output_to_print( list_actors(api_server_url=url, _explain=_should_explain(format)), format=format, ) )
def test_actor_summary(serve_instance): @serve.deployment def f(): pass serve.run(f.bind()) actors = state_api.list_actors() class_names = {actor["class_name"] for actor in actors} assert class_names.issuperset( {"ServeController", "HTTPProxyActor", "ServeReplica:f"} )
def actors(ctx, format: str, filter: List[Tuple[str, str]]): url = ctx.obj["api_server_url"] format = AvailableFormat(format) print( get_state_api_output_to_print( list_actors( api_server_url=url, filters=filter, _explain=_should_explain(format), ), format=format, ) )
def test_list_actors(shutdown_only): ray.init() @ray.remote class A: pass a = A.remote() # noqa def verify(): actor_data = list(list_actors().values())[0] correct_state = actor_data["state"] == "ALIVE" is_id_hex = is_hex(actor_data["actor_id"]) correct_id = a._actor_id.hex() == actor_data["actor_id"] return correct_state and is_id_hex and correct_id wait_for_condition(verify) print(list_actors())
def actors(ctx): url = ctx.obj["api_server_url"] pprint(list_actors(url))
def verify(): actor_data = list(list_actors().values())[0] correct_state = actor_data["state"] == "ALIVE" is_id_hex = is_hex(actor_data["actor_id"]) correct_id = a._actor_id.hex() == actor_data["actor_id"] return correct_state and is_id_hex and correct_id
def verify(): result = list_actors(filters=[("state", "DEAD")]) return len(result) == 1
def actors(ctx, format: str): url = ctx.obj["api_server_url"] print( get_state_api_output_to_print(list_actors(api_server_url=url), format=AvailableFormat(format)))