github.com/vmware/govmomi@v0.51.0/simulator/vm_compatibility_checker_test.go (about) 1 // © Broadcom. All Rights Reserved. 2 // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. 3 // SPDX-License-Identifier: Apache-2.0 4 5 package simulator_test 6 7 import ( 8 "context" 9 "testing" 10 11 "github.com/vmware/govmomi/find" 12 "github.com/vmware/govmomi/object" 13 "github.com/vmware/govmomi/simulator" 14 "github.com/vmware/govmomi/vim25" 15 "github.com/vmware/govmomi/vim25/types" 16 ) 17 18 func TestVmCompatibilityChecker(t *testing.T) { 19 simulator.Test(func(ctx context.Context, c *vim25.Client) { 20 finder := find.NewFinder(c, true) 21 datacenter, err := finder.DefaultDatacenter(ctx) 22 if err != nil { 23 t.Fatalf("default datacenter not found: %s", err) 24 } 25 finder.SetDatacenter(datacenter) 26 vmList, err := finder.VirtualMachineList(ctx, "*") 27 if len(vmList) == 0 { 28 t.Fatal("vmList == 0") 29 } 30 vm := vmList[0] 31 vmRef := vm.Reference() 32 33 vmcc := object.NewVmCompatibilityChecker(c) 34 35 t.Run("CheckCompatibility", func(t *testing.T) { 36 results, err := vmcc.CheckCompatibility( 37 ctx, 38 vm.Reference(), 39 nil, 40 nil) 41 42 if err != nil { 43 t.Fatal(err) 44 } 45 46 for _, result := range results { 47 if len(result.Error) > 0 { 48 t.Fatal("result has errors") 49 } 50 if len(result.Warning) > 0 { 51 t.Fatal("result has warnings") 52 } 53 } 54 }) 55 56 t.Run("CheckVmConfig", func(t *testing.T) { 57 t.Run("for existing VM", func(t *testing.T) { 58 results, err := vmcc.CheckVmConfig( 59 ctx, 60 types.VirtualMachineConfigSpec{ 61 NumCPUs: 2, 62 }, 63 &vmRef, 64 nil, 65 nil) 66 67 if err != nil { 68 t.Fatal(err) 69 } 70 71 for _, result := range results { 72 if len(result.Error) > 0 { 73 t.Fatal("result has errors") 74 } 75 if len(result.Warning) > 0 { 76 t.Fatal("result has warnings") 77 } 78 } 79 }) 80 t.Run("for new VM", func(t *testing.T) { 81 results, err := vmcc.CheckVmConfig( 82 ctx, 83 types.VirtualMachineConfigSpec{ 84 Name: "my-vm", 85 NumCPUs: 2, 86 }, 87 &vmRef, 88 nil, 89 nil) 90 91 if err != nil { 92 t.Fatal(err) 93 } 94 95 for _, result := range results { 96 if len(result.Error) > 0 { 97 t.Fatal("result has errors") 98 } 99 if len(result.Warning) > 0 { 100 t.Fatal("result has warnings") 101 } 102 } 103 }) 104 }) 105 }) 106 }