mirror of
https://github.com/vale981/ray
synced 2025-03-06 02:21:39 -05:00
Move test_snapshot from test_dashboard.py to modules/snapshot/tests/test_snapshot.py (#16306)
Co-authored-by: 刘宝 <po.lb@antfin.com>
This commit is contained in:
parent
de4045703d
commit
4ca316a0f4
2 changed files with 70 additions and 59 deletions
70
dashboard/modules/snapshot/tests/test_snapshot.py
Normal file
70
dashboard/modules/snapshot/tests/test_snapshot.py
Normal file
|
@ -0,0 +1,70 @@
|
|||
import os
|
||||
import json
|
||||
import jsonschema
|
||||
|
||||
import pprint
|
||||
import requests
|
||||
|
||||
from ray.test_utils import (
|
||||
format_web_url,
|
||||
run_string_as_driver,
|
||||
)
|
||||
from ray.new_dashboard import dashboard
|
||||
from ray.new_dashboard.tests.conftest import * # noqa
|
||||
|
||||
|
||||
def test_snapshot(ray_start_with_dashboard):
|
||||
driver_template = """
|
||||
import ray
|
||||
|
||||
ray.init(address="{address}", namespace="my_namespace")
|
||||
|
||||
@ray.remote
|
||||
class Pinger:
|
||||
def ping(self):
|
||||
return "pong"
|
||||
|
||||
a = Pinger.options(lifetime={lifetime}, name={name}).remote()
|
||||
ray.get(a.ping.remote())
|
||||
"""
|
||||
|
||||
detached_driver = driver_template.format(
|
||||
address=ray_start_with_dashboard["redis_address"],
|
||||
lifetime="'detached'",
|
||||
name="'abc'")
|
||||
named_driver = driver_template.format(
|
||||
address=ray_start_with_dashboard["redis_address"],
|
||||
lifetime="None",
|
||||
name="'xyz'")
|
||||
unnamed_driver = driver_template.format(
|
||||
address=ray_start_with_dashboard["redis_address"],
|
||||
lifetime="None",
|
||||
name="None")
|
||||
|
||||
run_string_as_driver(detached_driver)
|
||||
run_string_as_driver(named_driver)
|
||||
run_string_as_driver(unnamed_driver)
|
||||
|
||||
webui_url = ray_start_with_dashboard["webui_url"]
|
||||
webui_url = format_web_url(webui_url)
|
||||
response = requests.get(f"{webui_url}/api/snapshot")
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
schema_path = os.path.join(
|
||||
os.path.dirname(dashboard.__file__),
|
||||
"modules/snapshot/snapshot_schema.json")
|
||||
pprint.pprint(data)
|
||||
jsonschema.validate(instance=data, schema=json.load(open(schema_path)))
|
||||
|
||||
assert len(data["data"]["snapshot"]["actors"]) == 3
|
||||
assert len(data["data"]["snapshot"]["jobs"]) == 4
|
||||
|
||||
for actor_id, entry in data["data"]["snapshot"]["actors"].items():
|
||||
assert entry["jobId"] in data["data"]["snapshot"]["jobs"]
|
||||
assert entry["actorClass"] == "Pinger"
|
||||
assert entry["startTime"] >= 0
|
||||
if entry["isDetached"]:
|
||||
assert entry["endTime"] == 0, entry
|
||||
else:
|
||||
assert entry["endTime"] > 0, entry
|
||||
assert "runtimeEnv" in entry
|
|
@ -2,7 +2,6 @@ import os
|
|||
import sys
|
||||
import copy
|
||||
import json
|
||||
import jsonschema
|
||||
import time
|
||||
import logging
|
||||
import asyncio
|
||||
|
@ -13,7 +12,6 @@ import collections
|
|||
import numpy as np
|
||||
import aiohttp.web
|
||||
import ray
|
||||
import pprint
|
||||
import psutil
|
||||
import pytest
|
||||
import redis
|
||||
|
@ -472,63 +470,6 @@ def test_get_cluster_status(ray_start_with_dashboard):
|
|||
assert "loadMetricsReport" in response.json()["data"]["clusterStatus"]
|
||||
|
||||
|
||||
def test_snapshot(ray_start_with_dashboard):
|
||||
driver_template = """
|
||||
import ray
|
||||
|
||||
ray.init(address="{address}", namespace="my_namespace")
|
||||
|
||||
@ray.remote
|
||||
class Pinger:
|
||||
def ping(self):
|
||||
return "pong"
|
||||
|
||||
a = Pinger.options(lifetime={lifetime}, name={name}).remote()
|
||||
ray.get(a.ping.remote())
|
||||
"""
|
||||
|
||||
detached_driver = driver_template.format(
|
||||
address=ray_start_with_dashboard["redis_address"],
|
||||
lifetime="'detached'",
|
||||
name="'abc'")
|
||||
named_driver = driver_template.format(
|
||||
address=ray_start_with_dashboard["redis_address"],
|
||||
lifetime="None",
|
||||
name="'xyz'")
|
||||
unnamed_driver = driver_template.format(
|
||||
address=ray_start_with_dashboard["redis_address"],
|
||||
lifetime="None",
|
||||
name="None")
|
||||
|
||||
run_string_as_driver(detached_driver)
|
||||
run_string_as_driver(named_driver)
|
||||
run_string_as_driver(unnamed_driver)
|
||||
|
||||
webui_url = ray_start_with_dashboard["webui_url"]
|
||||
webui_url = format_web_url(webui_url)
|
||||
response = requests.get(f"{webui_url}/api/snapshot")
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
schema_path = os.path.join(
|
||||
os.path.dirname(dashboard.__file__),
|
||||
"modules/snapshot/snapshot_schema.json")
|
||||
pprint.pprint(data)
|
||||
jsonschema.validate(instance=data, schema=json.load(open(schema_path)))
|
||||
|
||||
assert len(data["data"]["snapshot"]["actors"]) == 3
|
||||
assert len(data["data"]["snapshot"]["jobs"]) == 4
|
||||
|
||||
for actor_id, entry in data["data"]["snapshot"]["actors"].items():
|
||||
assert entry["jobId"] in data["data"]["snapshot"]["jobs"]
|
||||
assert entry["actorClass"] == "Pinger"
|
||||
assert entry["startTime"] >= 0
|
||||
if entry["isDetached"]:
|
||||
assert entry["endTime"] == 0, entry
|
||||
else:
|
||||
assert entry["endTime"] > 0, entry
|
||||
assert "runtimeEnv" in entry
|
||||
|
||||
|
||||
def test_immutable_types():
|
||||
d = {str(i): i for i in range(1000)}
|
||||
d["list"] = list(range(1000))
|
||||
|
|
Loading…
Add table
Reference in a new issue