Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit b69f3fd

Browse files
committedMay 21, 2024·
RHOAIENG-5344 - E2E test for Ray local interactive
1 parent b782a4a commit b69f3fd

4 files changed

+169
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
from codeflare_sdk import Cluster, ClusterConfiguration, TokenAuthentication, generate_cert
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+
name=cluster_name,
33+
namespace=self.namespace,
34+
num_workers=1,
35+
head_cpus="500m",
36+
head_memory=2,
37+
min_cpus="500m",
38+
max_cpus=1,
39+
min_memory=1,
40+
max_memory=2,
41+
num_gpus=0,
42+
image=ray_image,
43+
write_to_file=True,
44+
verify_tls=False,
45+
)
46+
)
47+
cluster.up()
48+
cluster.wait_ready()
49+
50+
generate_cert.generate_tls_cert(cluster_name, self.namespace)
51+
generate_cert.export_env(cluster_name, self.namespace)
52+
53+
print(cluster.local_client_url())
54+
55+
ray.shutdown()
56+
ray.init(address=cluster.local_client_url(), logging_level="DEBUG")
57+
58+
@ray.remote
59+
def heavy_calculation_part(num_iterations):
60+
result = 0.0
61+
for i in range(num_iterations):
62+
for j in range(num_iterations):
63+
for k in range(num_iterations):
64+
result += math.sin(i) * math.cos(j) * math.tan(k)
65+
return result
66+
67+
@ray.remote
68+
def heavy_calculation(num_iterations):
69+
results = ray.get(
70+
[heavy_calculation_part.remote(num_iterations // 30) for _ in range(30)]
71+
)
72+
return sum(results)
73+
74+
ref = heavy_calculation.remote(3000)
75+
result = ray.get(ref)
76+
assert result == 1789.4644387076714
77+
ray.cancel(ref)
78+
ray.shutdown()
79+
80+
cluster.down()
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()

‎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()

‎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)
Please sign in to comment.