def test_python_version(): server_handle, _ = ray_client_server.init_and_serve("localhost:50051") try: ray = RayAPIStub() info1 = ray.connect("localhost:50051") assert info1["python_version"] == ".".join( [str(x) for x in list(sys.version_info)[:3]]) ray.disconnect() time.sleep(1) def mock_connection_response(): return ray_client_pb2.ConnectionInfoResponse( num_clients=1, python_version="2.7.12", ray_version="", ray_commit="", ) # inject mock connection function server_handle.data_servicer._build_connection_response = \ mock_connection_response ray = RayAPIStub() with pytest.raises(RuntimeError): _ = ray.connect("localhost:50051") ray = RayAPIStub() info3 = ray.connect("localhost:50051", ignore_version=True) assert info3["num_clients"] == 1, info3 ray.disconnect() finally: ray_client_server.shutdown_with_server(server_handle.grpc_server) time.sleep(2)
def test_protocol_version(init_and_serve): server_handle = init_and_serve ray = RayAPIStub() info1 = ray.connect("localhost:50051") local_py_version = ".".join([str(x) for x in list(sys.version_info)[:3]]) assert info1["protocol_version"] == CURRENT_PROTOCOL_VERSION, info1 ray.disconnect() time.sleep(1) def mock_connection_response(): return ray_client_pb2.ConnectionInfoResponse( num_clients=1, python_version=local_py_version, ray_version="", ray_commit="", protocol_version="2050-01-01", # from the future ) # inject mock connection function server_handle.data_servicer._build_connection_response = \ mock_connection_response ray = RayAPIStub() with pytest.raises(RuntimeError): _ = ray.connect("localhost:50051") ray = RayAPIStub() info3 = ray.connect("localhost:50051", ignore_version=True) assert info3["num_clients"] == 1, info3 ray.disconnect()
def test_max_clients(init_and_serve): # Tests max clients. Should support up to CLIENT_SERVER_MAX_THREADS / 2. def get_job_id(api): return api.get_runtime_context().worker.current_job_id for i in range(3): api1 = RayAPIStub() info1 = api1.connect("localhost:50051") assert info1["num_clients"] == i + 1, info1 with pytest.raises(ConnectionError): api = RayAPIStub() _ = api.connect("localhost:50051")
def connect_api(): api = RayAPIStub() api.connect("localhost:50051") api.get_actor("actor") return api
def test_num_clients(): # Tests num clients reporting; useful if you want to build an app that # load balances clients between Ray client servers. server_handle, _ = ray_client_server.init_and_serve("localhost:50051") server = server_handle.grpc_server try: api1 = RayAPIStub() info1 = api1.connect("localhost:50051") assert info1["num_clients"] == 1, info1 api2 = RayAPIStub() info2 = api2.connect("localhost:50051") assert info2["num_clients"] == 2, info2 # Disconnect the first two clients. api1.disconnect() api2.disconnect() time.sleep(1) api3 = RayAPIStub() info3 = api3.connect("localhost:50051") assert info3["num_clients"] == 1, info3 # Check info contains ray and python version. assert isinstance(info3["ray_version"], str), info3 assert isinstance(info3["ray_commit"], str), info3 assert isinstance(info3["python_version"], str), info3 assert isinstance(info3["protocol_version"], str), info3 api3.disconnect() finally: ray_client_server.shutdown_with_server(server) time.sleep(2)
def test_num_clients(init_and_serve_lazy): # Tests num clients reporting; useful if you want to build an app that # load balances clients between Ray client servers. def get_job_id(api): return api.get_runtime_context().worker.current_job_id api1 = RayAPIStub() info1 = api1.connect("localhost:50051") job_id_1 = get_job_id(api1) assert info1["num_clients"] == 1, info1 api2 = RayAPIStub() info2 = api2.connect("localhost:50051") job_id_2 = get_job_id(api2) assert info2["num_clients"] == 2, info2 assert job_id_1 == job_id_2 # Disconnect the first two clients. api1.disconnect() api2.disconnect() time.sleep(1) api3 = RayAPIStub() info3 = api3.connect("localhost:50051") job_id_3 = get_job_id(api3) assert info3["num_clients"] == 1, info3 assert job_id_1 != job_id_3 # Check info contains ray and python version. assert isinstance(info3["ray_version"], str), info3 assert isinstance(info3["ray_commit"], str), info3 assert isinstance(info3["python_version"], str), info3 assert isinstance(info3["protocol_version"], str), info3 api3.disconnect()
def test_num_clients(shutdown_only): # Tests num clients reporting; useful if you want to build an app that # load balances clients between Ray client servers. server = ray_client_server.serve("localhost:50051") try: api1 = RayAPIStub() info1 = api1.connect("localhost:50051") assert info1["num_clients"] == 1, info1 api2 = RayAPIStub() info2 = api2.connect("localhost:50051") assert info2["num_clients"] == 2, info2 # Disconnect the first two clients. api1.disconnect() api2.disconnect() time.sleep(1) api3 = RayAPIStub() info3 = api3.connect("localhost:50051") assert info3["num_clients"] == 1, info3 finally: server.stop(0)