[Placement Group]Enhance create placement group java api (#11702)

* enhance create pg java api

* add state for PlacementGroup

* fix comment

* move default pg

* make default pg name private

* add bundle size and bundle resource size check when placement group create
This commit is contained in:
DK.Pino
2020-11-05 09:59:36 +08:00
committed by GitHub
parent 69145d6215
commit 50110b934c
12 changed files with 236 additions and 52 deletions
@@ -4,11 +4,7 @@ import io.ray.api.ActorHandle;
import io.ray.api.Ray;
import io.ray.api.id.ActorId;
import io.ray.api.placementgroup.PlacementGroup;
import io.ray.api.placementgroup.PlacementStrategy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.ray.runtime.placementgroup.PlacementGroupImpl;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -32,12 +28,8 @@ public class PlacementGroupTest extends BaseTest {
// This test just creates a placement group with one bundle.
// It's not comprehensive to test all placement group test cases.
public void testCreateAndCallActor() {
List<Map<String, Double>> bundles = new ArrayList<>();
Map<String, Double> bundle = new HashMap<>();
bundle.put("CPU", 1.0);
bundles.add(bundle);
PlacementStrategy strategy = PlacementStrategy.PACK;
PlacementGroup placementGroup = Ray.createPlacementGroup(bundles, strategy);
PlacementGroup placementGroup = PlacementGroupTestUtils.createSimpleGroup();
Assert.assertEquals(((PlacementGroupImpl)placementGroup).getName(),"unnamed_group");
// Test creating an actor from a constructor.
ActorHandle<Counter> actor = Ray.actor(Counter::new, 1)
@@ -49,12 +41,7 @@ public class PlacementGroupTest extends BaseTest {
}
public void testCheckBundleIndex() {
List<Map<String, Double>> bundles = new ArrayList<>();
Map<String, Double> bundle = new HashMap<>();
bundle.put("CPU", 1.0);
bundles.add(bundle);
PlacementStrategy strategy = PlacementStrategy.PACK;
PlacementGroup placementGroup = Ray.createPlacementGroup(bundles, strategy);
PlacementGroup placementGroup = PlacementGroupTestUtils.createSimpleGroup();
int exceptionCount = 0;
try {
@@ -64,7 +51,6 @@ public class PlacementGroupTest extends BaseTest {
}
Assert.assertEquals(1, exceptionCount);
try {
Ray.actor(Counter::new, 1).setPlacementGroup(placementGroup, -1).remote();
} catch (IllegalArgumentException e) {
@@ -72,4 +58,14 @@ public class PlacementGroupTest extends BaseTest {
}
Assert.assertEquals(2, exceptionCount);
}
@Test (expectedExceptions = { IllegalArgumentException.class })
public void testBundleSizeValidCheckWhenCreate() {
PlacementGroupTestUtils.createBundleSizeInvalidGroup();
}
@Test (expectedExceptions = { IllegalArgumentException.class })
public void testBundleResourceValidCheckWhenCreate() {
PlacementGroupTestUtils.createBundleResourceInvalidGroup();
}
}
@@ -0,0 +1,41 @@
package io.ray.test;
import io.ray.api.Ray;
import io.ray.api.placementgroup.PlacementGroup;
import io.ray.api.placementgroup.PlacementStrategy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* A utils class for Placement Group test.
*/
public class PlacementGroupTestUtils {
public static PlacementGroup createSpecifiedSimpleGroup(String resourceName, int bundleSize,
PlacementStrategy strategy, Double resourceSize) {
List<Map<String, Double>> bundles = new ArrayList<>();
for (int i = 0; i < bundleSize; i++) {
Map<String, Double> bundle = new HashMap<>();
bundle.put(resourceName, resourceSize);
bundles.add(bundle);
}
return Ray.createPlacementGroup(bundles, strategy);
}
public static PlacementGroup createSimpleGroup() {
return createSpecifiedSimpleGroup("CPU", 1, PlacementStrategy.PACK, 1.0);
}
public static void createBundleSizeInvalidGroup() {
createSpecifiedSimpleGroup("CPU", 0, PlacementStrategy.PACK, 1.0);
}
public static void createBundleResourceInvalidGroup() {
createSpecifiedSimpleGroup("CPU", 1, PlacementStrategy.PACK, 0.0);
}
}