github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/compute/v2/usage_test.go (about)

     1  //go:build acceptance || compute || usage
     2  // +build acceptance compute usage
     3  
     4  package v2
     5  
     6  import (
     7  	"strings"
     8  	"testing"
     9  	"time"
    10  
    11  	"github.com/gophercloud/gophercloud/internal/acceptance/clients"
    12  	"github.com/gophercloud/gophercloud/internal/acceptance/tools"
    13  	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/usage"
    14  	"github.com/gophercloud/gophercloud/pagination"
    15  	th "github.com/gophercloud/gophercloud/testhelper"
    16  )
    17  
    18  func TestUsageSingleTenant(t *testing.T) {
    19  	// TODO(emilien): This test is failing for now
    20  	t.Skip("This is not passing now, will fix later")
    21  
    22  	clients.RequireLong(t)
    23  
    24  	client, err := clients.NewComputeV2Client()
    25  	th.AssertNoErr(t, err)
    26  
    27  	server, err := CreateServer(t, client)
    28  	th.AssertNoErr(t, err)
    29  	DeleteServer(t, client, server)
    30  
    31  	endpointParts := strings.Split(client.Endpoint, "/")
    32  	tenantID := endpointParts[4]
    33  
    34  	end := time.Now()
    35  	start := end.AddDate(0, -1, 0)
    36  	opts := usage.SingleTenantOpts{
    37  		Start: &start,
    38  		End:   &end,
    39  	}
    40  
    41  	err = usage.SingleTenant(client, tenantID, opts).EachPage(func(page pagination.Page) (bool, error) {
    42  		tenantUsage, err := usage.ExtractSingleTenant(page)
    43  		th.AssertNoErr(t, err)
    44  
    45  		tools.PrintResource(t, tenantUsage)
    46  		if tenantUsage.TotalHours == 0 {
    47  			t.Fatalf("TotalHours should not be 0")
    48  		}
    49  
    50  		return true, nil
    51  	})
    52  
    53  	th.AssertNoErr(t, err)
    54  }
    55  
    56  func TestUsageAllTenants(t *testing.T) {
    57  	t.Skip("This is not passing in OpenLab. Works locally")
    58  
    59  	clients.RequireLong(t)
    60  
    61  	client, err := clients.NewComputeV2Client()
    62  	th.AssertNoErr(t, err)
    63  
    64  	server, err := CreateServer(t, client)
    65  	th.AssertNoErr(t, err)
    66  	DeleteServer(t, client, server)
    67  
    68  	end := time.Now()
    69  	start := end.AddDate(0, -1, 0)
    70  	opts := usage.AllTenantsOpts{
    71  		Detailed: true,
    72  		Start:    &start,
    73  		End:      &end,
    74  	}
    75  
    76  	err = usage.AllTenants(client, opts).EachPage(func(page pagination.Page) (bool, error) {
    77  		allUsage, err := usage.ExtractAllTenants(page)
    78  		th.AssertNoErr(t, err)
    79  
    80  		tools.PrintResource(t, allUsage)
    81  
    82  		if len(allUsage) == 0 {
    83  			t.Fatalf("No usage returned")
    84  		}
    85  
    86  		if allUsage[0].TotalHours == 0 {
    87  			t.Fatalf("TotalHours should not be 0")
    88  		}
    89  		return true, nil
    90  	})
    91  
    92  	th.AssertNoErr(t, err)
    93  }