github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/css/v1/flavors_test.go (about)

     1  package v1
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  
     7  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients"
     8  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/css/v1/flavors"
     9  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    10  )
    11  
    12  var emptyFlavor = flavors.Flavor{}
    13  
    14  func TestFlavorList(t *testing.T) {
    15  	client, err := clients.NewCssV1Client()
    16  	th.AssertNoErr(t, err)
    17  
    18  	versions, err := flavors.List(client)
    19  	th.AssertNoErr(t, err)
    20  
    21  	if len(versions) == 0 {
    22  		t.Fatalf("empty version list")
    23  	}
    24  	for _, version := range versions {
    25  		t.Logf("%+v", version)
    26  		if version.Version == "" {
    27  			t.Error("version object has no object")
    28  		}
    29  		if version.Type == "" {
    30  			t.Error("version object has no type")
    31  		}
    32  		if len(version.Flavors) == 0 {
    33  			t.Errorf("empty flavor list in version")
    34  		}
    35  		for _, flavor := range version.Flavors {
    36  			if reflect.DeepEqual(emptyFlavor, flavor) {
    37  				t.Error("flavor is empty")
    38  			}
    39  		}
    40  	}
    41  	expectedVersion := versions[0]
    42  	expectedFlavor := expectedVersion.Flavors[0]
    43  
    44  	filterOpts := flavors.FilterOpts{
    45  		Version: expectedVersion.Version,
    46  		Type:    expectedVersion.Type,
    47  		DiskMin: &flavors.Limit{Min: expectedFlavor.DiskMin, Max: expectedFlavor.DiskMin},
    48  		DiskMax: &flavors.Limit{Min: expectedFlavor.DiskMax, Max: expectedFlavor.DiskMax},
    49  		Region:  expectedFlavor.Region,
    50  		CPU:     &flavors.Limit{Min: expectedFlavor.CPU, Max: expectedFlavor.CPU},
    51  		RAM:     &flavors.Limit{Min: expectedFlavor.RAM, Max: expectedFlavor.RAM},
    52  	}
    53  
    54  	filteredVersions := flavors.FilterVersions(versions, filterOpts)
    55  
    56  	th.AssertEquals(t, 1, len(filteredVersions))
    57  	th.AssertEquals(t, 1, len(filteredVersions[0].Flavors))
    58  	th.AssertEquals(t, expectedVersion.Type, filteredVersions[0].Type)
    59  	th.AssertEquals(t, expectedVersion.Version, filteredVersions[0].Version)
    60  	th.AssertDeepEquals(t, expectedFlavor, filteredVersions[0].Flavors[0])
    61  
    62  	foundFlavor := flavors.FindFlavor(versions, filterOpts)
    63  	th.AssertDeepEquals(t, expectedFlavor, *foundFlavor)
    64  
    65  	foundByName := flavors.FindFlavor(versions, flavors.FilterOpts{FlavorName: expectedFlavor.Name})
    66  	th.AssertDeepEquals(t, expectedFlavor, *foundByName)
    67  }