ray/test/test_functions.py

119 lines
2.2 KiB
Python
Raw Normal View History

2016-06-10 14:12:15 -07:00
import ray
import numpy as np
# Test simple functionality
2016-06-10 14:12:15 -07:00
@ray.remote([int, int], [int, int])
def handle_int(a, b):
return a + 1, b + 1
# Test aliasing
2016-06-10 14:12:15 -07:00
@ray.remote([], [np.ndarray])
def test_alias_f():
return np.ones([3, 4, 5])
2016-06-10 14:12:15 -07:00
@ray.remote([], [np.ndarray])
def test_alias_g():
return test_alias_f()
2016-06-10 14:12:15 -07:00
@ray.remote([], [np.ndarray])
def test_alias_h():
return test_alias_g()
2016-05-22 10:05:14 -07:00
# Test timing
2016-06-10 14:12:15 -07:00
@ray.remote([], [])
2016-05-22 10:05:14 -07:00
def empty_function():
pass
2016-05-22 10:05:14 -07:00
2016-06-10 14:12:15 -07:00
@ray.remote([], [int])
2016-05-22 10:05:14 -07:00
def trivial_function():
return 1
2016-06-03 00:10:17 -07:00
# Test keyword arguments
2016-06-10 14:12:15 -07:00
@ray.remote([int, str], [str])
2016-06-03 00:10:17 -07:00
def keyword_fct1(a, b="hello"):
return "{} {}".format(a, b)
2016-06-10 14:12:15 -07:00
@ray.remote([str, str], [str])
2016-06-03 00:10:17 -07:00
def keyword_fct2(a="hello", b="world"):
return "{} {}".format(a, b)
2016-06-10 14:12:15 -07:00
@ray.remote([int, int, str, str], [str])
2016-06-03 00:10:17 -07:00
def keyword_fct3(a, b, c="hello", d="world"):
return "{} {} {} {}".format(a, b, c, d)
# Test variable numbers of arguments
2016-06-10 14:12:15 -07:00
@ray.remote([int], [str])
def varargs_fct1(*a):
return " ".join(map(str, a))
2016-06-10 14:12:15 -07:00
@ray.remote([int, int], [str])
def varargs_fct2(a, *b):
return " ".join(map(str, b))
try:
2016-06-10 14:12:15 -07:00
@ray.remote([int], [])
def kwargs_throw_exception(**c):
return ()
kwargs_exception_thrown = False
except:
kwargs_exception_thrown = True
try:
2016-06-10 14:12:15 -07:00
@ray.remote([int, str, int], [str])
def varargs_and_kwargs_throw_exception(a, b="hi", *c):
return "{} {} {}".format(a, b, c)
varargs_and_kwargs_exception_thrown = False
except:
varargs_and_kwargs_exception_thrown = True
# test throwing an exception
@ray.remote([], [])
2016-06-25 09:43:57 -07:00
def throw_exception_fct1():
raise Exception("Test function 1 intentionally failed.")
@ray.remote([], [int])
def throw_exception_fct2():
raise Exception("Test function 2 intentionally failed.")
@ray.remote([float], [int, str, np.ndarray])
def throw_exception_fct3(x):
raise Exception("Test function 3 intentionally failed.")
# test Python mode
@ray.remote([], [np.ndarray])
def python_mode_f():
return np.array([0, 0])
@ray.remote([np.ndarray], [np.ndarray])
def python_mode_g(x):
x[0] = 1
return x
# test no return values
@ray.remote([], [])
def no_op():
pass
@ray.remote([], [])
def no_op_fail():
return 0
# test wrong return types
@ray.remote([], [int])
def test_return1():
return 0.0
@ray.remote([], [int, float])
def test_return2():
return 2.0, 3.0