Skip to content

Commit aede101

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

4 files changed

+161
-0
lines changed

Diff for: tests/e2e/local_interactive_sdk_kind_test.py

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

Diff for: tests/e2e/local_interactive_sdk_oauth_test.py

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

Diff for: tests/e2e/mnist_raycluster_sdk_kind_test.py

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def test_mnist_ray_cluster_sdk_kind(self):
2525
create_namespace(self)
2626
create_kueue_resources(self)
2727
self.run_mnist_raycluster_sdk_kind()
28+
self.teardown_method()
2829

2930
def run_mnist_raycluster_sdk_kind(self):
3031
ray_image = get_ray_image()

Diff for: tests/e2e/mnist_raycluster_sdk_oauth_test.py

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def test_mnist_ray_cluster_sdk_auth(self):
2525
create_namespace(self)
2626
create_kueue_resources(self)
2727
self.run_mnist_raycluster_sdk_oauth()
28+
self.teardown_method()
2829

2930
def run_mnist_raycluster_sdk_oauth(self):
3031
ray_image = get_ray_image()

0 commit comments

Comments
 (0)