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 }