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  }