mirror of
https://github.com/wassname/ray.git
synced 2026-06-28 13:02:16 +08:00
[Java] Support exchange ObjectRef between processes (#10729)
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package io.ray.test;
|
||||
|
||||
import io.ray.api.ActorHandle;
|
||||
import io.ray.api.ObjectRef;
|
||||
import io.ray.api.Ray;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
public class ObjectRefTransferTest extends BaseTest {
|
||||
|
||||
@Test
|
||||
public void testObjectTransfer() {
|
||||
ObjectRef<String> objectRef = Ray.put("test");
|
||||
List<ObjectRef<String>> data = new ArrayList<>();
|
||||
data.add(objectRef);
|
||||
|
||||
ActorHandle<RemoteActor> handle = Ray.actor(RemoteActor::new).remote();
|
||||
String result = handle.task(RemoteActor::get, data).remote().get();
|
||||
Assert.assertEquals(result, "test");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNestedObjectId() {
|
||||
ObjectRef<String> inner = Ray.put("inner");
|
||||
ObjectRef<ObjectRef<String>> outer = Ray.put(inner);
|
||||
List<ObjectRef<ObjectRef<String>>> data = new ArrayList<>();
|
||||
data.add(outer);
|
||||
|
||||
ActorHandle<RemoteActor> handle = Ray.actor(RemoteActor::new).remote();
|
||||
String result = handle.task(RemoteActor::getNested, data).remote().get();
|
||||
Assert.assertEquals(result, "inner");
|
||||
}
|
||||
|
||||
public static class RemoteActor {
|
||||
public String get(List<ObjectRef<String>> value) {
|
||||
return Ray.get(value.get(0));
|
||||
}
|
||||
|
||||
public String getNested(List<ObjectRef<ObjectRef<String>>> value) {
|
||||
return Ray.get(value.get(0).get());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user