influxdb/tenant/service_bucket_test.go

126 lines
2.9 KiB
Go
Raw Normal View History

package tenant_test
import (
"context"
"testing"
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/kv"
"github.com/influxdata/influxdb/v2/tenant"
influxdbtesting "github.com/influxdata/influxdb/v2/testing"
)
func TestInmemBucketService(t *testing.T) {
influxdbtesting.BucketService(initInmemBucketService, t)
}
func initInmemBucketService(f influxdbtesting.BucketFields, t *testing.T) (influxdb.BucketService, string, func()) {
s := influxdbtesting.NewTestInmemStore(t)
return initBucketService(s, f, t)
}
func initBucketService(s kv.SchemaStore, f influxdbtesting.BucketFields, t *testing.T) (influxdb.BucketService, string, func()) {
storage := tenant.NewStore(s)
if f.IDGenerator != nil {
storage.IDGen = f.IDGenerator
}
if f.OrgIDs != nil {
storage.OrgIDGen = f.OrgIDs
}
if f.BucketIDs != nil {
storage.BucketIDGen = f.BucketIDs
}
// go direct to storage for test data
if err := s.Update(context.Background(), func(tx kv.Tx) error {
for _, o := range f.Organizations {
if err := storage.CreateOrg(tx.Context(), tx, o); err != nil {
return err
}
}
for _, b := range f.Buckets {
if err := storage.CreateBucket(tx.Context(), tx, b); err != nil {
return err
}
}
return nil
}); err != nil {
t.Fatalf("failed to populate organizations: %s", err)
}
return tenant.NewService(storage), "tenant/", func() {
if err := s.Update(context.Background(), func(tx kv.Tx) error {
for _, b := range f.Buckets {
if err := storage.DeleteBucket(tx.Context(), tx, b.ID); err != nil {
return err
}
}
for _, o := range f.Organizations {
if err := storage.DeleteOrg(tx.Context(), tx, o.ID); err != nil {
return err
}
}
return nil
}); err != nil {
t.Logf("failed to cleanup organizations: %s", err)
}
}
}
func TestBucketFind(t *testing.T) {
s := influxdbtesting.NewTestInmemStore(t)
storage := tenant.NewStore(s)
svc := tenant.NewService(storage)
o := &influxdb.Organization{
Name: "theorg",
}
if err := svc.CreateOrganization(context.Background(), o); err != nil {
t.Fatal(err)
}
name := "thebucket"
_, _, err := svc.FindBuckets(context.Background(), influxdb.BucketFilter{
Name: &name,
Org: &o.Name,
})
if err.Error() != `bucket "thebucket" not found` {
t.Fatal(err)
}
}
func TestSystemBucketsInNameFind(t *testing.T) {
s := influxdbtesting.NewTestInmemStore(t)
storage := tenant.NewStore(s)
svc := tenant.NewService(storage)
o := &influxdb.Organization{
Name: "theorg",
}
if err := svc.CreateOrganization(context.Background(), o); err != nil {
t.Fatal(err)
}
b := &influxdb.Bucket{
OrgID: o.ID,
Name: "thebucket",
}
if err := svc.CreateBucket(context.Background(), b); err != nil {
t.Fatal(err)
}
name := "thebucket"
buckets, _, _ := svc.FindBuckets(context.Background(), influxdb.BucketFilter{
Name: &name,
Org: &o.Name,
})
if len(buckets) != 1 {
t.Fatal("failed to return a single bucket when doing a bucket lookup by name")
}
}