ray/cpp/test_python_call_cpp.py
clarng 2b270fd9cb
apply isort uniformly for a subset of directories (#25824)
Simplify isort filters and move it into isort cfg file.

With this change, isort will not longer apply to diffs other than to files that are in whitelisted directory (isort only supports blacklist so we implement that instead) This is much simpler than building our own whitelist logic since our formatter runs multiple codepaths depending on whether it is formatting a single file / PR / entire repo in CI.
2022-06-17 13:40:32 -07:00

102 lines
2.9 KiB
Python

import pytest
import ray
import ray.cluster_utils
from ray.exceptions import CrossLanguageError, RayActorError
def test_cross_language_cpp():
ray.init(
job_config=ray.job_config.JobConfig(
code_search_path=["../../plus.so:../../counter.so"]
)
)
obj = ray.cross_language.cpp_function("Plus1").remote(1)
assert 2 == ray.get(obj)
obj1 = ray.cross_language.cpp_function("ThrowTask").remote()
with pytest.raises(CrossLanguageError):
ray.get(obj1)
obj = ray.cross_language.cpp_function("Plus1").remote("invalid arg")
with pytest.raises(CrossLanguageError):
ray.get(obj)
obj = ray.cross_language.cpp_function("Plus1").remote(1, 2)
with pytest.raises(CrossLanguageError):
ray.get(obj)
obj = ray.cross_language.cpp_function("Plus1").remote()
with pytest.raises(CrossLanguageError):
ray.get(obj)
obj2 = ray.cross_language.cpp_function("NotExsitTask").remote()
with pytest.raises(CrossLanguageError):
ray.get(obj2)
obj3 = ray.cross_language.cpp_function("Echo").remote("hello")
assert "hello" == ray.get(obj3)
list = [0] * 100000
obj4 = ray.cross_language.cpp_function("ReturnLargeArray").remote(list)
assert list == ray.get(obj4)
map = {0: "hello"}
obj5 = ray.cross_language.cpp_function("GetMap").remote(map)
assert {0: "hello", 1: "world"} == ray.get(obj5)
v = ["hello", "world"]
obj6 = ray.cross_language.cpp_function("GetList").remote(v)
assert v == ray.get(obj6)
obj6 = ray.cross_language.cpp_function("GetArray").remote(v)
assert v == ray.get(obj6)
tuple = [1, "hello"]
obj7 = ray.cross_language.cpp_function("GetTuple").remote(tuple)
assert tuple == ray.get(obj7)
student = ["tom", 20]
obj8 = ray.cross_language.cpp_function("GetStudent").remote(student)
assert student == ray.get(obj8)
students = {0: ["tom", 20], 1: ["jerry", 10]}
obj9 = ray.cross_language.cpp_function("GetStudents").remote(students)
assert students == ray.get(obj9)
def test_cross_language_cpp_actor():
actor = ray.cross_language.cpp_actor_class("CreateCounter", "Counter").remote()
obj = actor.Plus1.remote()
assert 1 == ray.get(obj)
actor1 = ray.cross_language.cpp_actor_class(
"RAY_FUNC(Counter::FactoryCreate)", "Counter"
).remote("invalid arg")
obj = actor1.Plus1.remote()
with pytest.raises(RayActorError):
ray.get(obj)
actor1 = ray.cross_language.cpp_actor_class(
"RAY_FUNC(Counter::FactoryCreate)", "Counter"
).remote()
obj = actor1.Plus1.remote()
assert 1 == ray.get(obj)
obj = actor1.Add.remote(2)
assert 3 == ray.get(obj)
obj2 = actor1.ExceptionFunc.remote()
with pytest.raises(CrossLanguageError):
ray.get(obj2)
obj3 = actor1.NotExistFunc.remote()
with pytest.raises(CrossLanguageError):
ray.get(obj3)
if __name__ == "__main__":
import sys
sys.exit(pytest.main(["-v", __file__]))