|
4 | 4 | "context" |
5 | 5 | "time" |
6 | 6 |
|
| 7 | + aliyunClient "github.com/AliyunContainerService/terway/pkg/aliyun/client" |
7 | 8 | networkv1beta1 "github.com/AliyunContainerService/terway/pkg/apis/network.alibabacloud.com/v1beta1" |
8 | 9 | "github.com/AliyunContainerService/terway/pkg/backoff" |
9 | 10 | . "github.com/onsi/ginkgo/v2" |
@@ -305,4 +306,87 @@ var _ = Describe("Common ENI Operations", func() { |
305 | 306 | Expect(err).To(HaveOccurred()) |
306 | 307 | }) |
307 | 308 | }) |
| 309 | + |
| 310 | + Context("ToNetworkInterfaceCR", func() { |
| 311 | + It("should convert aliyunClient.NetworkInterface to NetworkInterface CR", func() { |
| 312 | + aliyunENI := &aliyunClient.NetworkInterface{ |
| 313 | + NetworkInterfaceID: "eni-123", |
| 314 | + MacAddress: "00:11:22:33:44:55", |
| 315 | + VPCID: "vpc-123", |
| 316 | + ZoneID: "zone-1", |
| 317 | + VSwitchID: "vsw-123", |
| 318 | + ResourceGroupID: "rg-123", |
| 319 | + SecurityGroupIDs: []string{"sg-1", "sg-2"}, |
| 320 | + PrivateIPAddress: "192.168.1.100", |
| 321 | + IPv6Set: []aliyunClient.IPSet{ |
| 322 | + {IPAddress: "2001:db8::1"}, |
| 323 | + }, |
| 324 | + } |
| 325 | + |
| 326 | + result := ToNetworkInterfaceCR(aliyunENI) |
| 327 | + |
| 328 | + Expect(result.Name).To(Equal("eni-123")) |
| 329 | + Expect(result.Spec.ENI.ID).To(Equal("eni-123")) |
| 330 | + Expect(result.Spec.ENI.MAC).To(Equal("00:11:22:33:44:55")) |
| 331 | + Expect(result.Spec.IPv4).To(Equal("192.168.1.100")) |
| 332 | + Expect(result.Spec.IPv6).To(Equal("2001:db8::1")) |
| 333 | + }) |
| 334 | + }) |
| 335 | + |
| 336 | + Context("WaitCreated", func() { |
| 337 | + It("should wait for object to be created successfully", func() { |
| 338 | + obj := &networkv1beta1.NetworkInterface{ |
| 339 | + ObjectMeta: metav1.ObjectMeta{ |
| 340 | + Name: "wait-created-test", |
| 341 | + }, |
| 342 | + } |
| 343 | + Expect(k8sClient.Create(ctx, obj)).To(Succeed()) |
| 344 | + |
| 345 | + err := WaitCreated(ctx, k8sClient, obj, "", "wait-created-test") |
| 346 | + Expect(err).NotTo(HaveOccurred()) |
| 347 | + }) |
| 348 | + }) |
| 349 | + |
| 350 | + Context("WaitDeleted", func() { |
| 351 | + It("should wait for object to be deleted successfully", func() { |
| 352 | + obj := &networkv1beta1.NetworkInterface{ |
| 353 | + ObjectMeta: metav1.ObjectMeta{ |
| 354 | + Name: "wait-deleted-test", |
| 355 | + }, |
| 356 | + } |
| 357 | + Expect(k8sClient.Create(ctx, obj)).To(Succeed()) |
| 358 | + Expect(k8sClient.Delete(ctx, obj)).To(Succeed()) |
| 359 | + |
| 360 | + WaitDeleted(ctx, k8sClient, obj, "", "wait-deleted-test") |
| 361 | + |
| 362 | + err := k8sClient.Get(ctx, client.ObjectKey{Name: "wait-deleted-test"}, obj) |
| 363 | + Expect(k8sErr.IsNotFound(err)).To(BeTrue()) |
| 364 | + }) |
| 365 | + }) |
| 366 | + |
| 367 | + Context("WaitRVChanged", func() { |
| 368 | + It("should wait for resource version to change", func() { |
| 369 | + obj := &networkv1beta1.NetworkInterface{ |
| 370 | + ObjectMeta: metav1.ObjectMeta{ |
| 371 | + Name: "wait-rv-test", |
| 372 | + }, |
| 373 | + } |
| 374 | + Expect(k8sClient.Create(ctx, obj)).To(Succeed()) |
| 375 | + |
| 376 | + Expect(k8sClient.Get(ctx, client.ObjectKey{Name: "wait-rv-test"}, obj)).To(Succeed()) |
| 377 | + initialRV := obj.GetResourceVersion() |
| 378 | + |
| 379 | + update := obj.DeepCopy() |
| 380 | + |
| 381 | + go func() { |
| 382 | + time.Sleep(50 * time.Millisecond) |
| 383 | + update.Spec.IPv4 = "192.168.1.100" |
| 384 | + Expect(k8sClient.Update(ctx, update)).To(Succeed()) |
| 385 | + }() |
| 386 | + |
| 387 | + err := WaitRVChanged(ctx, k8sClient, obj, "", "wait-rv-test", initialRV) |
| 388 | + Expect(err).NotTo(HaveOccurred()) |
| 389 | + Expect(obj.GetResourceVersion()).NotTo(Equal(initialRV)) |
| 390 | + }) |
| 391 | + }) |
308 | 392 | }) |
0 commit comments