123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- 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__]))
|