-
Notifications
You must be signed in to change notification settings - Fork 6.3k
/
Copy pathtest_python_call_cpp.py
104 lines (77 loc) · 2.98 KB
/
test_python_call_cpp.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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(
"RAY_FUNC(Counter::FactoryCreate)", "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__]))