[Placement Group] Add get / get all / remove interface for Placement Group Java api. (#11821)

* add placement group java get/get all interface

* add remove placement group api

* fix some issue like: Placement Group -> placement group

* extract dumplicate code to placement group utils

* specify running mode for placement group ut

* update checkGlobalStateAccessorPointerValid -> validateGlobalStateAccessorPointer

* use THROW_EXCEPTION_AND_RETURN_IF_NOT_OK

* update pg log print
This commit is contained in:
DK.Pino
2020-11-17 12:32:39 +08:00
committed by GitHub
parent 90574b66cc
commit 0f9e2fec12
22 changed files with 479 additions and 71 deletions
@@ -4,7 +4,10 @@ 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.PlacementGroupState;
import io.ray.api.placementgroup.PlacementStrategy;
import io.ray.runtime.placementgroup.PlacementGroupImpl;
import java.util.List;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -40,6 +43,62 @@ public class PlacementGroupTest extends BaseTest {
Assert.assertEquals(Integer.valueOf(1), actor.task(Counter::getValue).remote().get());
}
@Test(groups = {"cluster"})
public void testGetPlacementGroup() {
PlacementGroupImpl firstPlacementGroup = (PlacementGroupImpl)PlacementGroupTestUtils
.createNameSpecifiedSimpleGroup("CPU", 1, PlacementStrategy.PACK,
1.0, "first_placement_group");
PlacementGroupImpl secondPlacementGroup = (PlacementGroupImpl)PlacementGroupTestUtils
.createNameSpecifiedSimpleGroup("CPU", 1, PlacementStrategy.PACK,
1.0, "second_placement_group");
PlacementGroupImpl firstPlacementGroupRes =
(PlacementGroupImpl)Ray.getPlacementGroup((firstPlacementGroup).getId());
PlacementGroupImpl secondPlacementGroupRes =
(PlacementGroupImpl)Ray.getPlacementGroup((secondPlacementGroup).getId());
Assert.assertNotNull(firstPlacementGroupRes);
Assert.assertNotNull(secondPlacementGroupRes);
Assert.assertEquals(firstPlacementGroup.getId(), firstPlacementGroupRes.getId());
Assert.assertEquals(firstPlacementGroup.getName(), firstPlacementGroupRes.getName());
Assert.assertEquals(firstPlacementGroupRes.getBundles().size(), 1);
Assert.assertEquals(firstPlacementGroupRes.getStrategy(), PlacementStrategy.PACK);
List<PlacementGroup> allPlacementGroup = Ray.getAllPlacementGroups();
Assert.assertEquals(allPlacementGroup.size(), 2);
PlacementGroupImpl placementGroupRes = (PlacementGroupImpl)allPlacementGroup.get(0);
Assert.assertNotNull(placementGroupRes.getId());
PlacementGroupImpl expectPlacementGroup = placementGroupRes.getId()
.equals(firstPlacementGroup.getId()) ? firstPlacementGroup : secondPlacementGroup;
Assert.assertEquals(placementGroupRes.getName(), expectPlacementGroup.getName());
Assert.assertEquals(placementGroupRes.getBundles().size(),
expectPlacementGroup.getBundles().size());
Assert.assertEquals(placementGroupRes.getStrategy(), expectPlacementGroup.getStrategy());
}
@Test(groups = {"cluster"})
public void testRemovePlacementGroup() {
PlacementGroupTestUtils.createNameSpecifiedSimpleGroup("CPU",
1, PlacementStrategy.PACK, 1.0, "first_placement_group");
PlacementGroupImpl secondPlacementGroup = (PlacementGroupImpl)PlacementGroupTestUtils
.createNameSpecifiedSimpleGroup("CPU", 1, PlacementStrategy.PACK,
1.0, "second_placement_group");
List<PlacementGroup> allPlacementGroup = Ray.getAllPlacementGroups();
Assert.assertEquals(allPlacementGroup.size(), 2);
Ray.removePlacementGroup(secondPlacementGroup.getId());
PlacementGroupImpl removedPlacementGroup =
(PlacementGroupImpl)Ray.getPlacementGroup((secondPlacementGroup).getId());
Assert.assertEquals(removedPlacementGroup.getState(), PlacementGroupState.REMOVED);
}
public void testCheckBundleIndex() {
PlacementGroup placementGroup = PlacementGroupTestUtils.createSimpleGroup();
@@ -9,12 +9,12 @@ import java.util.List;
import java.util.Map;
/**
* A utils class for Placement Group test.
* A utils class for placement group test.
*/
public class PlacementGroupTestUtils {
public static PlacementGroup createSpecifiedSimpleGroup(String resourceName, int bundleSize,
PlacementStrategy strategy, Double resourceSize) {
public static PlacementGroup createNameSpecifiedSimpleGroup(String resourceName, int bundleSize,
PlacementStrategy strategy, Double resourceSize, String groupName) {
List<Map<String, Double>> bundles = new ArrayList<>();
for (int i = 0; i < bundleSize; i++) {
@@ -23,7 +23,13 @@ public class PlacementGroupTestUtils {
bundles.add(bundle);
}
return Ray.createPlacementGroup(bundles, strategy);
return Ray.createPlacementGroup(groupName, bundles, strategy);
}
public static PlacementGroup createSpecifiedSimpleGroup(String resourceName, int bundleSize,
PlacementStrategy strategy, Double resourceSize) {
return createNameSpecifiedSimpleGroup(resourceName, bundleSize, strategy,
resourceSize, "unnamed_group");
}
public static PlacementGroup createSimpleGroup() {