[Java] Support exchange ObjectRef between processes (#10729)

This commit is contained in:
Xianyang Liu
2020-09-13 11:54:45 +08:00
committed by GitHub
parent 9f9b53e624
commit 8166d71bde
8 changed files with 175 additions and 1 deletions
@@ -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());
}
}
}