@@ -161,7 +161,8 @@ func TestCreatePodGroupForRayCluster(t *testing.T) {
161161
162162 minMember := utils .CalculateDesiredReplicas (context .Background (), & cluster ) + 1
163163 totalResource := utils .CalculateDesiredResources (& cluster )
164- pg := createPodGroup (& cluster , getAppPodGroupName (& cluster ), minMember , totalResource )
164+ pg , err := createPodGroup (& cluster , getAppPodGroupName (& cluster ), minMember , totalResource )
165+ require .NoError (t , err )
165166
166167 a .Equal (cluster .Namespace , pg .Namespace )
167168
@@ -185,7 +186,8 @@ func TestCreatePodGroupForRayCluster_NumOfHosts2(t *testing.T) {
185186
186187 minMember := utils .CalculateDesiredReplicas (context .Background (), & cluster ) + 1
187188 totalResource := utils .CalculateDesiredResources (& cluster )
188- pg := createPodGroup (& cluster , getAppPodGroupName (& cluster ), minMember , totalResource )
189+ pg , err := createPodGroup (& cluster , getAppPodGroupName (& cluster ), minMember , totalResource )
190+ require .NoError (t , err )
189191
190192 a .Equal (cluster .Namespace , pg .Namespace )
191193
@@ -206,6 +208,74 @@ func TestCreatePodGroupForRayCluster_NumOfHosts2(t *testing.T) {
206208 a .Equal ("4" , pg .Spec .MinResources .Name ("nvidia.com/gpu" , resource .BinarySI ).String ())
207209}
208210
211+ func createTestRayClusterWithLabels (labels map [string ]string ) rayv1.RayCluster {
212+ cluster := createTestRayCluster (1 )
213+ if cluster .ObjectMeta .Labels == nil {
214+ cluster .ObjectMeta .Labels = make (map [string ]string )
215+ }
216+ for k , v := range labels {
217+ cluster .ObjectMeta .Labels [k ] = v
218+ }
219+ return cluster
220+ }
221+
222+ func TestCreatePodGroup_NetworkTopologyBothLabels (t * testing.T ) {
223+ a := assert .New (t )
224+
225+ // Test with both network topology mode and highest tier allowed
226+ cluster := createTestRayClusterWithLabels (map [string ]string {
227+ NetworkTopologyModeLabelKey : "soft" ,
228+ NetworkTopologyHighestTierAllowedLabelKey : "3" ,
229+ })
230+
231+ minMember := utils .CalculateDesiredReplicas (context .Background (), & cluster ) + 1
232+ totalResource := utils .CalculateDesiredResources (& cluster )
233+ pg , err := createPodGroup (& cluster , getAppPodGroupName (& cluster ), minMember , totalResource )
234+ require .NoError (t , err )
235+
236+ a .Equal (cluster .Namespace , pg .Namespace )
237+ a .Equal (volcanoschedulingv1beta1 .NetworkTopologyMode ("soft" ), pg .Spec .NetworkTopology .Mode )
238+ a .NotNil (pg .Spec .NetworkTopology .HighestTierAllowed )
239+ a .Equal (3 , * pg .Spec .NetworkTopology .HighestTierAllowed )
240+ }
241+
242+ func TestCreatePodGroup_NetworkTopologyOnlyModeLabel (t * testing.T ) {
243+ a := assert .New (t )
244+
245+ // Test with only network topology mode set
246+ cluster := createTestRayClusterWithLabels (map [string ]string {
247+ NetworkTopologyModeLabelKey : "hard" ,
248+ })
249+
250+ minMember := utils .CalculateDesiredReplicas (context .Background (), & cluster ) + 1
251+ totalResource := utils .CalculateDesiredResources (& cluster )
252+ pg , err := createPodGroup (& cluster , getAppPodGroupName (& cluster ), minMember , totalResource )
253+ require .NoError (t , err )
254+
255+ a .Equal (cluster .Namespace , pg .Namespace )
256+ a .NotNil (pg .Spec .NetworkTopology )
257+ a .Equal (volcanoschedulingv1beta1 .NetworkTopologyMode ("hard" ), pg .Spec .NetworkTopology .Mode )
258+ a .Nil (pg .Spec .NetworkTopology .HighestTierAllowed )
259+ }
260+
261+ func TestCreatePodGroup_NetworkTopologyHighestTierAllowedNotInt (t * testing.T ) {
262+ a := assert .New (t )
263+
264+ // Test with network topology mode set and highest tier allowed is not an int
265+ cluster := createTestRayClusterWithLabels (map [string ]string {
266+ NetworkTopologyModeLabelKey : "soft" ,
267+ NetworkTopologyHighestTierAllowedLabelKey : "not-an-int" ,
268+ })
269+
270+ minMember := utils .CalculateDesiredReplicas (context .Background (), & cluster ) + 1
271+ totalResource := utils .CalculateDesiredResources (& cluster )
272+ pg , err := createPodGroup (& cluster , getAppPodGroupName (& cluster ), minMember , totalResource )
273+
274+ require .Error (t , err )
275+ a .Contains (err .Error (), "failed to convert " + NetworkTopologyHighestTierAllowedLabelKey + " label to int" )
276+ a .Equal (cluster .Namespace , pg .Namespace )
277+ }
278+
209279func TestCreatePodGroupForRayJob (t * testing.T ) {
210280 a := assert .New (t )
211281 ctx := context .Background ()
0 commit comments