Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
Signed-off-by: Nicolas Bigler <[email protected]>
  • Loading branch information
TheBigLee committed Dec 19, 2023
1 parent 4c55be9 commit 0552dbc
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 30 deletions.
2 changes: 1 addition & 1 deletion pkg/exofixtures/kafka.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

// KafkaDBaaSType represents kafka DBaaS type
const KafkaDBaaSType ObjectType = "appcat_kafka"
const KafkaDBaaSType ObjectType = "kafka"

// Available plans for Kafka
var kafkaProductDBaaS = []productDBaaS{
Expand Down
2 changes: 1 addition & 1 deletion pkg/exofixtures/mysql.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

// MysqlDBaaSType represents mysql DBaaS type
const MysqlDBaaSType ObjectType = "appcat_mysql"
const MysqlDBaaSType ObjectType = "mysql"

// Available plans for MySQL
var mysqlProductDBaaS = []productDBaaS{
Expand Down
2 changes: 1 addition & 1 deletion pkg/exofixtures/opensearch.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

// OpensearchDBaaSType represents opensearch DBaaS type
const OpensearchDBaaSType ObjectType = "appcat_opensearch"
const OpensearchDBaaSType ObjectType = "opesearch"

// Available plans for OpenSearch
var opensearchProductDBaaS = []productDBaaS{
Expand Down
2 changes: 1 addition & 1 deletion pkg/exofixtures/postgres.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

// PostgresDBaaSType represents postgres DBaaS type
const PostgresDBaaSType ObjectType = "appcat_postgres"
const PostgresDBaaSType ObjectType = "pg"

// Available plans for PostgreSQL
var postgresProductDBaaS = []productDBaaS{
Expand Down
2 changes: 1 addition & 1 deletion pkg/exofixtures/redis.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

// RedisDBaaSType represents redis DBaaS type
const RedisDBaaSType ObjectType = "appcat_redis"
const RedisDBaaSType ObjectType = "redis"

// Available plans for Redis
var redisProductDBaaS = []productDBaaS{
Expand Down
9 changes: 5 additions & 4 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"
"github.com/vshn/billing-collector-cloudservices/pkg/controlAPI"
"github.com/vshn/billing-collector-cloudservices/pkg/kubernetes"
Expand All @@ -12,7 +14,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 @@ -95,7 +96,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 @@ -178,8 +179,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
49 changes: 28 additions & 21 deletions pkg/exoscale/dbaas_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,47 +9,48 @@ 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")

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",
ProductID: "appcat-exoscale-dbaas-pg-hobbyist-2",
InstanceID: "ch-gva-2/postgres-abc",
ItemDescription: "Exoscale DBaaS PostgreSQL",
ItemGroupDescription: "APPUiO Managed - Zone: c-test1 / Namespace: vshn-xyz",
SalesOrder: "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()),
From: time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()).In(time.UTC),
To: time.Date(now.Year(), now.Month(), now.Day(), now.Hour()+1, 0, 0, 0, now.Location()).In(time.UTC),
},
}
record2 := odoo.OdooMeteredBillingRecord{
ProductID: "appcat-exoscale-dbaas-appcat_postgres-business-128",
InstanceID: "postgres-def", ItemDescription: "Exoscale DBaaS",
ItemGroupDescription: "AppCat Exoscale DBaaS",
ProductID: "appcat-exoscale-dbaas-pg-business-128",
InstanceID: "ch-gva-2/postgres-def",
ItemDescription: "Exoscale DBaaS PostgreSQL",
ItemGroupDescription: "APPUiO Managed - Zone: c-test1 / Namespace: vshn-uvw",
SalesOrder: "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()),
From: time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()).In(time.UTC),
To: time.Date(now.Year(), now.Month(), now.Day(), now.Hour()+1, 0, 0, 0, now.Location()).In(time.UTC),
},
}

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 All @@ -58,12 +59,14 @@ func TestDBaaS_aggregatedDBaaS(t *testing.T) {
DBName: "postgres-abc",
Namespace: "vshn-xyz",
Zone: "ch-gva-2",
Kind: "PostgreSQLList",
},
{
Organization: "org2",
DBName: "postgres-def",
Namespace: "vshn-abc",
Namespace: "vshn-uvw",
Zone: "ch-gva-2",
Kind: "PostgreSQLList",
},
},
exoscaleDBaaS: []*egoscale.DatabaseService{
Expand All @@ -78,7 +81,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 All @@ -87,12 +90,14 @@ func TestDBaaS_aggregatedDBaaS(t *testing.T) {
DBName: "postgres-abc",
Namespace: "vshn-xyz",
Zone: "ch-gva-2",
Kind: "PostgreSQLList",
},
{
Organization: "org2",
DBName: "postgres-def",
Namespace: "vshn-abc",
Zone: "ch-gva-2",
Kind: "PostgreSQLList",
},
},
exoscaleDBaaS: []*egoscale.DatabaseService{
Expand All @@ -106,14 +111,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 0552dbc

Please sign in to comment.