Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions providers/azure/provider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ import (
"testing"

"github.com/Azure/azure-sdk-for-go/sdk/azcore"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/consumption/armconsumption"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
Expand Down Expand Up @@ -440,6 +442,37 @@ func TestAzureProvider_GetServiceClient_AllServiceTypes(t *testing.T) {
}
}

func TestAzureClients_GetExistingCommitments_PagerConstructionError(t *testing.T) {
// Keep this test sequential: the SDK reads this process-wide configuration.
originalCloud := cloud.AzurePublic
t.Cleanup(func() { cloud.AzurePublic = originalCloud })
cloud.AzurePublic = cloud.Configuration{}

_, sdkErr := armconsumption.NewReservationsDetailsClient(nil, nil)
require.Error(t, sdkErr)
require.Contains(t, sdkErr.Error(), "missing Azure Resource Manager configuration")

for _, tc := range []struct {
name string
client provider.ServiceClient
}{
{"cache", NewCacheClient(nil, "test-subscription", "eastus")},
{"cosmosdb", NewCosmosDBClient(nil, "test-subscription", "eastus")},
{"database", NewDatabaseClient(nil, "test-subscription", "eastus")},
{"search", NewSearchClient(nil, "test-subscription", "eastus")},
} {
t.Run(tc.name, func(t *testing.T) {
commitments, err := tc.client.GetExistingCommitments(context.Background())
require.Error(t, err)
assert.Nil(t, commitments)
assert.Contains(t, err.Error(), tc.name+": create reservations pager")
cause := errors.Unwrap(err)
require.NotNil(t, cause)
assert.Equal(t, sdkErr.Error(), cause.Error())
})
}
}

func TestAzureProvider_GetRecommendationsClient_NotConfigured(t *testing.T) {
// Test GetRecommendationsClient when Azure is not configured. Inject a
// mock credential provider that fails so IsConfigured() deterministically
Expand Down
3 changes: 1 addition & 2 deletions providers/azure/services/cache/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,7 @@ func (c *Client) GetRecommendations(ctx context.Context, _ *common.Recommendatio
func (c *Client) GetExistingCommitments(ctx context.Context) ([]common.Commitment, error) {
pager, err := c.createReservationsPager()
if err != nil {
log.Printf("WARNING: failed to create Redis reservations pager: %v", err)
return []common.Commitment{}, nil
return nil, fmt.Errorf("cache: create reservations pager: %w", err)
}

return c.collectRedisReservations(ctx, pager)
Expand Down
3 changes: 1 addition & 2 deletions providers/azure/services/cosmosdb/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,7 @@ func (c *Client) GetRecommendations(ctx context.Context, _ *common.Recommendatio
func (c *Client) GetExistingCommitments(ctx context.Context) ([]common.Commitment, error) {
pager, err := c.createReservationsPager()
if err != nil {
log.Printf("WARNING: failed to create Cosmos DB reservations pager: %v", err)
return []common.Commitment{}, nil
return nil, fmt.Errorf("cosmosdb: create reservations pager: %w", err)
}

return c.collectCosmosReservations(ctx, pager)
Expand Down
4 changes: 1 addition & 3 deletions providers/azure/services/database/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"context"
"encoding/json"
"fmt"
"log"
"net/http"
"net/url"
"strings"
Expand Down Expand Up @@ -217,8 +216,7 @@ func (c *Client) GetRecommendations(ctx context.Context, _ *common.Recommendatio
func (c *Client) GetExistingCommitments(ctx context.Context) ([]common.Commitment, error) {
pager, err := c.createReservationsPager()
if err != nil {
log.Printf("WARNING: failed to create SQL reservations pager: %v", err)
return []common.Commitment{}, nil
return nil, fmt.Errorf("database: create reservations pager: %w", err)
}

return c.collectSQLReservations(ctx, pager)
Expand Down
3 changes: 1 addition & 2 deletions providers/azure/services/search/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,7 @@ func (c *Client) GetRecommendations(_ context.Context, _ *common.RecommendationP
func (c *Client) GetExistingCommitments(ctx context.Context) ([]common.Commitment, error) {
pager, err := c.createReservationsPager()
if err != nil {
log.Printf("WARNING: failed to create Search reservations pager: %v", err)
return []common.Commitment{}, nil
return nil, fmt.Errorf("search: create reservations pager: %w", err)
}

return c.collectSearchReservations(ctx, pager)
Expand Down
Loading