Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
Signed-off-by: Nicolas Bigler <nicolas.bigler@vshn.ch>
  • Loading branch information
TheBigLee committed Dec 14, 2023
1 parent 0d06535 commit fcd0672
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 33 deletions.
11 changes: 6 additions & 5 deletions pkg/exoscale/dbaas.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package exoscale
import (
"context"
"fmt"
"time"

egoscale "github.com/exoscale/egoscale/v2"
apiv1 "github.com/prometheus/client_golang/api/prometheus/v1"
"github.com/vshn/billing-collector-cloudservices/pkg/kubernetes"
Expand All @@ -13,7 +15,6 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
k8s "sigs.k8s.io/controller-runtime/pkg/client"
"time"
)

const productIdPrefix = "appcat-exoscale-dbaas"
Expand Down Expand Up @@ -88,7 +89,7 @@ func (ds *DBaaS) GetMetrics(ctx context.Context) ([]odoo.OdooMeteredBillingRecor
return nil, fmt.Errorf("fetchDBaaSUsage: %w", err)
}

return ds.aggregateDBaaS(ctx, ds.promClient, usage, detail)
return ds.AggregateDBaaS(ctx, usage, detail)
}

// fetchManagedDBaaSAndNamespaces fetches instances and namespaces from kubernetes cluster
Expand Down Expand Up @@ -170,8 +171,8 @@ func (ds *DBaaS) fetchDBaaSUsage(ctx context.Context) ([]*egoscale.DatabaseServi
return databaseServices, nil
}

// aggregateDBaaS aggregates DBaaS services by namespaces and plan
func (ds *DBaaS) aggregateDBaaS(ctx context.Context, promClient apiv1.API, exoscaleDBaaS []*egoscale.DatabaseService, dbaasDetails []Detail) ([]odoo.OdooMeteredBillingRecord, error) {
// AggregateDBaaS aggregates DBaaS services by namespaces and plan
func (ds *DBaaS) AggregateDBaaS(ctx context.Context, exoscaleDBaaS []*egoscale.DatabaseService, dbaasDetails []Detail) ([]odoo.OdooMeteredBillingRecord, error) {
logger := log.Logger(ctx)
logger.Info("Aggregating DBaaS instances by namespace and plan")

Expand Down Expand Up @@ -199,7 +200,7 @@ func (ds *DBaaS) aggregateDBaaS(ctx context.Context, promClient apiv1.API, exosc
logger.V(1).Info("Found exoscale dbaas usage", "instance", dbaasUsage.Name, "instance created", dbaasUsage.CreatedAt)

if ds.salesOrderId == "" {
ds.salesOrderId, err = prom.GetSalesOrderId(ctx, promClient, dbaasDetail.Organization)
ds.salesOrderId, err = prom.GetSalesOrderId(ctx, ds.promClient, dbaasDetail.Organization)
if err != nil {
logger.Error(err, "Unable to sync DBaaS, cannot get salesOrderId", "namespace", dbaasDetail.Namespace)
continue
Expand Down
64 changes: 36 additions & 28 deletions pkg/exoscale/dbaas_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,41 +9,47 @@ import (
"github.com/stretchr/testify/assert"
"github.com/vshn/billing-collector-cloudservices/pkg/exofixtures"
"github.com/vshn/billing-collector-cloudservices/pkg/log"
"github.com/vshn/billing-collector-cloudservices/pkg/odoo"
)

func TestDBaaS_aggregatedDBaaS(t *testing.T) {
ctx := getTestContext(t)

key1 := NewKey("vshn-xyz", "hobbyist-2", string(exofixtures.PostgresDBaaSType))
key2 := NewKey("vshn-abc", "business-128", string(exofixtures.PostgresDBaaSType))
location, _ := time.LoadLocation("Europe/Zurich")

expectedAggregatedDBaaS := map[Key]Aggregated{
key1: {
Key: key1,
Value: 1,
Source: &exofixtures.DBaaSSourceString{
Query: "",
Organization: "org1",
Namespace: "vshn-xyz",
Plan: "hobbyist-2",
},
now := time.Now().In(location)
record1 := odoo.OdooMeteredBillingRecord{
ProductID: "appcat-exoscale-dbaas-appcat_postgres-hobbyist-2",
InstanceID: "postgres-abc",
ItemDescription: "Exoscale DBaaS",
ItemGroupDescription: "AppCat Exoscale DBaaS",
SalesOrderID: "1234",
UnitID: "",
ConsumedUnits: 1,
TimeRange: odoo.TimeRange{
From: time.Date(now.Year(), now.Month(), now.Day(), now.Hour()-1, 0, 0, 0, now.Location()),
To: time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()),
},
key2: {
Key: key2,
Value: 1,
Source: &exofixtures.DBaaSSourceString{
Query: "",
Organization: "org2",
Namespace: "vshn-abc",
Plan: "business-128",
},
}
record2 := odoo.OdooMeteredBillingRecord{
ProductID: "appcat-exoscale-dbaas-appcat_postgres-business-128",
InstanceID: "postgres-def", ItemDescription: "Exoscale DBaaS",
ItemGroupDescription: "AppCat Exoscale DBaaS",
SalesOrderID: "1234",
UnitID: "",
ConsumedUnits: 1,
TimeRange: odoo.TimeRange{
From: time.Date(now.Year(), now.Month(), now.Day(), now.Hour()-1, 0, 0, 0, now.Location()),
To: time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()),
},
}

expectedAggregatedOdooRecords := []odoo.OdooMeteredBillingRecord{record1, record2}

tests := map[string]struct {
dbaasDetails []Detail
exoscaleDBaaS []*egoscale.DatabaseService
expectedAggregatedDBaaS map[Key]Aggregated
dbaasDetails []Detail
exoscaleDBaaS []*egoscale.DatabaseService
expectedAggregatedOdooRecords []odoo.OdooMeteredBillingRecord
}{
"given DBaaS details and Exoscale DBaasS, we should get the ExpectedAggregatedDBaasS": {
dbaasDetails: []Detail{
Expand Down Expand Up @@ -72,7 +78,7 @@ func TestDBaaS_aggregatedDBaaS(t *testing.T) {
Plan: strToPointer("business-128"),
},
},
expectedAggregatedDBaaS: expectedAggregatedDBaaS,
expectedAggregatedOdooRecords: expectedAggregatedOdooRecords,
},
"given DBaaS details and different names in Exoscale DBaasS, we should not get the ExpectedAggregatedDBaasS": {
dbaasDetails: []Detail{
Expand Down Expand Up @@ -100,14 +106,16 @@ func TestDBaaS_aggregatedDBaaS(t *testing.T) {
},
},

expectedAggregatedDBaaS: map[Key]Aggregated{},
expectedAggregatedOdooRecords: []odoo.OdooMeteredBillingRecord{},
},
}

for name, tc := range tests {
t.Run(name, func(t *testing.T) {
aggregatedDBaaS := aggregateDBaaS(ctx, tc.exoscaleDBaaS, tc.dbaasDetails)
assert.Equal(t, tc.expectedAggregatedDBaaS, aggregatedDBaaS)
ds, _ := NewDBaaS(nil, nil, nil, 1, "1234", "c-test1", map[string]string{})
aggregatedOdooRecords, err := ds.AggregateDBaaS(ctx, tc.exoscaleDBaaS, tc.dbaasDetails)
assert.NoError(t, err)
assert.Equal(t, tc.expectedAggregatedOdooRecords, aggregatedOdooRecords)
})
}
}
Expand Down

0 comments on commit fcd0672

Please sign in to comment.