mirror of
https://github.com/wassname/ray.git
synced 2026-06-27 17:49:47 +08:00
[Placement Group] Move PlacementGroup public method to interface. (#13629)
This commit is contained in:
@@ -1,9 +1,57 @@
|
||||
package io.ray.api.placementgroup;
|
||||
|
||||
import io.ray.api.id.PlacementGroupId;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* A placement group is used to place interdependent actors according to a specific strategy {@link
|
||||
* PlacementStrategy}. When a placement group is created, the corresponding actor slots and
|
||||
* resources are preallocated. A placement group consists of one or more bundles plus a specific
|
||||
* placement strategy.
|
||||
*/
|
||||
public interface PlacementGroup {}
|
||||
public interface PlacementGroup {
|
||||
|
||||
/**
|
||||
* Get the id of current placement group.
|
||||
*
|
||||
* @return Id of current placement group.
|
||||
*/
|
||||
PlacementGroupId getId();
|
||||
|
||||
/**
|
||||
* Get the name of current placement group.
|
||||
*
|
||||
* @return Name of current placement group.
|
||||
*/
|
||||
String getName();
|
||||
|
||||
/**
|
||||
* Get all bundles which key is resource name and value is resource value.
|
||||
*
|
||||
* @return All bundles of current placement group.
|
||||
*/
|
||||
List<Map<String, Double>> getBundles();
|
||||
|
||||
/**
|
||||
* Get the strategy of current placement group.
|
||||
*
|
||||
* @return Strategy of current placement group.
|
||||
*/
|
||||
PlacementStrategy getStrategy();
|
||||
|
||||
/**
|
||||
* Get the state of current placement group.
|
||||
*
|
||||
* @return Creation state of current placement group.
|
||||
*/
|
||||
PlacementGroupState getState();
|
||||
|
||||
/**
|
||||
* Wait for the placement group to be ready within the specified time.
|
||||
*
|
||||
* @param timeoutSeconds Timeout in seconds.
|
||||
* @return True if the placement group is created. False otherwise.
|
||||
*/
|
||||
boolean wait(int timeoutSeconds);
|
||||
}
|
||||
|
||||
@@ -30,32 +30,32 @@ public class PlacementGroupImpl implements PlacementGroup {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlacementGroupId getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Double>> getBundles() {
|
||||
return bundles;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlacementStrategy getStrategy() {
|
||||
return strategy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlacementGroupState getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wait for the placement group to be ready within the specified time.
|
||||
*
|
||||
* @param timeoutSeconds Timeout in seconds.
|
||||
* @return True if the placement group is created. False otherwise.
|
||||
*/
|
||||
@Override
|
||||
public boolean wait(int timeoutSeconds) {
|
||||
return Ray.internal().waitPlacementGroupReady(id, timeoutSeconds);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import io.ray.api.placementgroup.PlacementGroup;
|
||||
import io.ray.api.placementgroup.PlacementGroupState;
|
||||
import io.ray.api.placementgroup.PlacementStrategy;
|
||||
import io.ray.runtime.exception.RayException;
|
||||
import io.ray.runtime.placementgroup.PlacementGroupImpl;
|
||||
import java.util.List;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
@@ -32,8 +31,7 @@ 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() {
|
||||
PlacementGroupImpl placementGroup =
|
||||
(PlacementGroupImpl) PlacementGroupTestUtils.createSimpleGroup();
|
||||
PlacementGroup placementGroup = PlacementGroupTestUtils.createSimpleGroup();
|
||||
Assert.assertTrue(placementGroup.wait(10));
|
||||
Assert.assertEquals(placementGroup.getName(), "unnamed_group");
|
||||
|
||||
@@ -48,22 +46,18 @@ public class PlacementGroupTest extends BaseTest {
|
||||
|
||||
@Test(groups = {"cluster"})
|
||||
public void testGetPlacementGroup() {
|
||||
PlacementGroupImpl firstPlacementGroup =
|
||||
(PlacementGroupImpl)
|
||||
PlacementGroupTestUtils.createNameSpecifiedSimpleGroup(
|
||||
"CPU", 1, PlacementStrategy.PACK, 1.0, "first_placement_group");
|
||||
PlacementGroup firstPlacementGroup =
|
||||
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");
|
||||
PlacementGroup secondPlacementGroup =
|
||||
PlacementGroupTestUtils.createNameSpecifiedSimpleGroup(
|
||||
"CPU", 1, PlacementStrategy.PACK, 1.0, "second_placement_group");
|
||||
Assert.assertTrue(firstPlacementGroup.wait(10));
|
||||
Assert.assertTrue(secondPlacementGroup.wait(10));
|
||||
|
||||
PlacementGroupImpl firstPlacementGroupRes =
|
||||
(PlacementGroupImpl) Ray.getPlacementGroup((firstPlacementGroup).getId());
|
||||
PlacementGroupImpl secondPlacementGroupRes =
|
||||
(PlacementGroupImpl) Ray.getPlacementGroup((secondPlacementGroup).getId());
|
||||
PlacementGroup firstPlacementGroupRes = Ray.getPlacementGroup((firstPlacementGroup).getId());
|
||||
PlacementGroup secondPlacementGroupRes = Ray.getPlacementGroup((secondPlacementGroup).getId());
|
||||
|
||||
Assert.assertNotNull(firstPlacementGroupRes);
|
||||
Assert.assertNotNull(secondPlacementGroupRes);
|
||||
@@ -76,9 +70,9 @@ public class PlacementGroupTest extends BaseTest {
|
||||
List<PlacementGroup> allPlacementGroup = Ray.getAllPlacementGroups();
|
||||
Assert.assertEquals(allPlacementGroup.size(), 2);
|
||||
|
||||
PlacementGroupImpl placementGroupRes = (PlacementGroupImpl) allPlacementGroup.get(0);
|
||||
PlacementGroup placementGroupRes = allPlacementGroup.get(0);
|
||||
Assert.assertNotNull(placementGroupRes.getId());
|
||||
PlacementGroupImpl expectPlacementGroup =
|
||||
PlacementGroup expectPlacementGroup =
|
||||
placementGroupRes.getId().equals(firstPlacementGroup.getId())
|
||||
? firstPlacementGroup
|
||||
: secondPlacementGroup;
|
||||
@@ -94,18 +88,16 @@ public class PlacementGroupTest extends BaseTest {
|
||||
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");
|
||||
PlacementGroup secondPlacementGroup =
|
||||
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());
|
||||
PlacementGroup removedPlacementGroup = Ray.getPlacementGroup((secondPlacementGroup).getId());
|
||||
Assert.assertEquals(removedPlacementGroup.getState(), PlacementGroupState.REMOVED);
|
||||
|
||||
// Wait for placement group after it is removed.
|
||||
|
||||
Reference in New Issue
Block a user