Skip to content

Commit 063d83a

Browse files
committed
RHOAIENG-5344 - E2E test for Ray local interactive
1 parent 179fd75 commit 063d83a

File tree

2 files changed

+136
-0
lines changed

2 files changed

+136
-0
lines changed

Diff for: tests/e2e/local_interactive_sdk_kind_test.py

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
from codeflare_sdk import Cluster, ClusterConfiguration
2+
3+
import pytest
4+
import ray
5+
import math
6+
7+
from support import *
8+
9+
@pytest.mark.kind
10+
class TestRayLocalInteractiveOauth:
11+
def setup_method(self):
12+
initialize_kubernetes_client(self)
13+
14+
def teardown_method(self):
15+
delete_namespace(self)
16+
17+
def test_local_interactives(self):
18+
self.setup_method()
19+
create_namespace(self)
20+
create_kueue_resources(self)
21+
self.run_local_interactives()
22+
23+
def run_local_interactives(self):
24+
ray_image = get_ray_image()
25+
26+
cluster_name = "test-ray-cluster"
27+
28+
cluster = Cluster(ClusterConfiguration(namespace=self.namespace,
29+
name=cluster_name,
30+
num_workers=1,
31+
min_cpus=1,
32+
max_cpus=1,
33+
min_memory=4,
34+
max_memory=4,
35+
num_gpus=0,
36+
image=ray_image,
37+
verify_tls=False))
38+
cluster.up()
39+
cluster.wait_ready()
40+
41+
ray.shutdown()
42+
ray.init(address=cluster.local_client_url(), logging_level="DEBUG")
43+
44+
@ray.remote
45+
def heavy_calculation_part(num_iterations):
46+
result = 0.0
47+
for i in range(num_iterations):
48+
for j in range(num_iterations):
49+
for k in range(num_iterations):
50+
result += math.sin(i) * math.cos(j) * math.tan(k)
51+
return result
52+
@ray.remote
53+
def heavy_calculation(num_iterations):
54+
results = ray.get([heavy_calculation_part.remote(num_iterations//30) for _ in range(30)])
55+
return sum(results)
56+
57+
ref = heavy_calculation.remote(3000)
58+
result = ray.get(ref)
59+
assert result == 1789.4644387076714
60+
ray.cancel(ref)
61+
ray.shutdown()
62+
63+
cluster.down()

Diff for: tests/e2e/local_interactive_sdk_oauth_test.py

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
from codeflare_sdk import Cluster, ClusterConfiguration, TokenAuthentication, generate_cert
2+
3+
import math
4+
import pytest
5+
import ray
6+
7+
from support import *
8+
9+
@pytest.mark.openshift
10+
class TestRayLocalInteractiveOauth:
11+
def setup_method(self):
12+
initialize_kubernetes_client(self)
13+
14+
def teardown_method(self):
15+
delete_namespace(self)
16+
17+
def test_local_interactives(self):
18+
self.setup_method()
19+
create_namespace(self)
20+
create_kueue_resources(self)
21+
self.run_local_interactives()
22+
23+
def run_local_interactives(self):
24+
ray_image = get_ray_image()
25+
26+
auth = TokenAuthentication(
27+
token=run_oc_command(["whoami", "--show-token=true"]),
28+
server=run_oc_command(["whoami", "--show-server=true"]),
29+
skip_tls=True,
30+
)
31+
auth.login()
32+
33+
cluster_name = "test-ray-cluster"
34+
35+
cluster = Cluster(ClusterConfiguration(namespace=self.namespace,
36+
name=cluster_name,
37+
num_workers=1,
38+
min_cpus=1,
39+
max_cpus=1,
40+
min_memory=4,
41+
max_memory=4,
42+
num_gpus=0,
43+
image=ray_image,
44+
verify_tls=False))
45+
cluster.up()
46+
cluster.wait_ready()
47+
48+
generate_cert.generate_tls_cert(cluster_name, self.namespace)
49+
generate_cert.export_env(cluster_name, self.namespace)
50+
51+
ray.shutdown()
52+
ray.init(address=cluster.local_client_url(), logging_level="DEBUG")
53+
54+
@ray.remote
55+
def heavy_calculation_part(num_iterations):
56+
result = 0.0
57+
for i in range(num_iterations):
58+
for j in range(num_iterations):
59+
for k in range(num_iterations):
60+
result += math.sin(i) * math.cos(j) * math.tan(k)
61+
return result
62+
@ray.remote
63+
def heavy_calculation(num_iterations):
64+
results = ray.get([heavy_calculation_part.remote(num_iterations//30) for _ in range(30)])
65+
return sum(results)
66+
67+
ref = heavy_calculation.remote(3000)
68+
result = ray.get(ref)
69+
assert result == 1789.4644387076714
70+
ray.cancel(ref)
71+
ray.shutdown()
72+
73+
cluster.down()

0 commit comments

Comments
 (0)