diff --git a/java/api/src/main/java/io/ray/api/placementgroup/PlacementGroup.java b/java/api/src/main/java/io/ray/api/placementgroup/PlacementGroup.java index 9b4080deb..0c5b31b67 100644 --- a/java/api/src/main/java/io/ray/api/placementgroup/PlacementGroup.java +++ b/java/api/src/main/java/io/ray/api/placementgroup/PlacementGroup.java @@ -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> 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); +} diff --git a/java/runtime/src/main/java/io/ray/runtime/placementgroup/PlacementGroupImpl.java b/java/runtime/src/main/java/io/ray/runtime/placementgroup/PlacementGroupImpl.java index 1d0d54084..55ca446f8 100644 --- a/java/runtime/src/main/java/io/ray/runtime/placementgroup/PlacementGroupImpl.java +++ b/java/runtime/src/main/java/io/ray/runtime/placementgroup/PlacementGroupImpl.java @@ -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> 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); } diff --git a/java/test/src/main/java/io/ray/test/PlacementGroupTest.java b/java/test/src/main/java/io/ray/test/PlacementGroupTest.java index 14bf0fd6a..edbd2c30e 100644 --- a/java/test/src/main/java/io/ray/test/PlacementGroupTest.java +++ b/java/test/src/main/java/io/ray/test/PlacementGroupTest.java @@ -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 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 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.