Files
query-orchestration/internal/serviceconfig/objectstore/bucketkey_test.go
T
Michael McGuinness fee71e7740 Merged in feature/postprocessing (pull request #114)
Feature/postprocessing

* tests

* passtest

* fixshorttests

* mosttests

* improvingbasedockerfile

* testspeeds

* testing

* host

* canparallel

* clean

* passfullsuite

* singlepagemax

* test

* findfeatures

* findstables

* tbls

* tablestoo

* tablestoo

* lateraltests

* tableloc

* cleanup

* inlinetable

* childids

* cleanup

* tests
2025-04-22 14:40:16 +00:00

163 lines
6.2 KiB
Go

package objectstore
import (
"testing"
"time"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
)
func TestGetBucketKey(t *testing.T) {
key := BucketKey{}
assert.Equal(t, "//00010101/0/0001-01-01T000000Z___00000000-0000-0000-0000-000000000000", key.String())
key.CreatedAt = time.Date(2025, time.March, 31, 4, 8, 16, 222, time.UTC)
assert.Equal(t, "//20250331/0/2025-03-31T040816Z___00000000-0000-0000-0000-000000000000", key.String())
key.ClientID = "AAA"
assert.Equal(t, "AAA//20250331/0/2025-03-31T040816Z_AAA__00000000-0000-0000-0000-000000000000", key.String())
key.EntityID = uuid.MustParse("b745910f-f529-43c5-87e1-25629d46ef40")
assert.Equal(t, "AAA//20250331/0/2025-03-31T040816Z_AAA__b745910f-f529-43c5-87e1-25629d46ef40", key.String())
key.Location = Import
assert.Equal(t, "AAA/import/20250331/0/2025-03-31T040816Z_AAA_import_b745910f-f529-43c5-87e1-25629d46ef40", key.String())
key.Location = Text
assert.Equal(t, "AAA/text/20250331/0/2025-03-31T040816Z_AAA_text_b745910f-f529-43c5-87e1-25629d46ef40", key.String())
key.Location = Export
assert.Equal(t, "AAA/export/20250331/2025-03-31T040816Z_AAA_export_b745910f-f529-43c5-87e1-25629d46ef40", key.String())
part := uint16(3)
key.Part = &part
key.Location = Import
assert.Equal(t, "AAA/import/20250331/3/2025-03-31T040816Z_AAA_import_b745910f-f529-43c5-87e1-25629d46ef40", key.String())
key.Location = Text
assert.Equal(t, "AAA/text/20250331/3/2025-03-31T040816Z_AAA_text_b745910f-f529-43c5-87e1-25629d46ef40", key.String())
key.Location = Export
assert.Equal(t, "AAA/export/20250331/2025-03-31T040816Z_AAA_export_b745910f-f529-43c5-87e1-25629d46ef40", key.String())
filetype := "csv"
key.FileType = &filetype
assert.Equal(t, "AAA/export/20250331/2025-03-31T040816Z_AAA_export_b745910f-f529-43c5-87e1-25629d46ef40.csv", key.String())
}
func TestParseBucketKey(t *testing.T) {
_, err := ParseBucketKey("")
assert.Error(t, err)
_, err = ParseBucketKey("AAA")
assert.Error(t, err)
_, err = ParseBucketKey("//00010101/")
assert.Error(t, err)
_, err = ParseBucketKey("//20250331/")
assert.Error(t, err)
_, err = ParseBucketKey("AAA//20250331/")
assert.Error(t, err)
_, err = ParseBucketKey("AAA//20250331/coolfile")
assert.Error(t, err)
key, err := ParseBucketKey("AAA/import/20250331/2025-03-31T040816Z_AAA_import_b745910f-f529-43c5-87e1-25629d46ef40")
assert.NoError(t, err)
assert.EqualExportedValues(t, BucketKey{
ClientID: "AAA",
Location: Import,
EntityID: uuid.MustParse("b745910f-f529-43c5-87e1-25629d46ef40"),
CreatedAt: time.Date(2025, 3, 31, 0, 0, 0, 0, time.UTC),
}, key)
key, err = ParseBucketKey("AAA/text/20250331/2025-03-31T040816Z_AAA_text_b745910f-f529-43c5-87e1-25629d46ef40")
assert.NoError(t, err)
assert.EqualExportedValues(t, BucketKey{
ClientID: "AAA",
Location: Text,
EntityID: uuid.MustParse("b745910f-f529-43c5-87e1-25629d46ef40"),
CreatedAt: time.Date(2025, 2, 31, 0, 0, 0, 0, time.UTC),
}, key)
key, err = ParseBucketKey("AAA/export/20250331/2025-03-31T040816Z_AAA_export_b745910f-f529-43c5-87e1-25629d46ef40")
assert.NoError(t, err)
assert.EqualExportedValues(t, BucketKey{
ClientID: "AAA",
Location: Export,
EntityID: uuid.MustParse("b745910f-f529-43c5-87e1-25629d46ef40"),
CreatedAt: time.Date(2025, 3, 31, 0, 0, 0, 0, time.UTC),
}, key)
part := uint16(3)
key, err = ParseBucketKey("AAA/import/20250331/3/2025-03-31T040816Z_AAA_import_b745910f-f529-43c5-87e1-25629d46ef40")
assert.NoError(t, err)
assert.EqualExportedValues(t, BucketKey{
ClientID: "AAA",
Location: Import,
EntityID: uuid.MustParse("b745910f-f529-43c5-87e1-25629d46ef40"),
CreatedAt: time.Date(2025, 3, 31, 0, 0, 0, 0, time.UTC),
Part: &part,
}, key)
key, err = ParseBucketKey("AAA/text/20250331/3/2025-03-31T040816Z_AAA_text_b745910f-f529-43c5-87e1-25629d46ef40")
assert.NoError(t, err)
assert.EqualExportedValues(t, BucketKey{
ClientID: "AAA",
Location: Text,
EntityID: uuid.MustParse("b745910f-f529-43c5-87e1-25629d46ef40"),
CreatedAt: time.Date(2025, 3, 31, 0, 0, 0, 0, time.UTC),
Part: &part,
}, key)
key, err = ParseBucketKey("AAA/export/20250331/3/2025-03-31T040816Z_AAA_export_b745910f-f529-43c5-87e1-25629d46ef40")
assert.NoError(t, err)
assert.EqualExportedValues(t, BucketKey{
ClientID: "AAA",
Location: Export,
EntityID: uuid.MustParse("b745910f-f529-43c5-87e1-25629d46ef40"),
CreatedAt: time.Date(2025, 3, 31, 0, 0, 0, 0, time.UTC),
Part: &part,
}, key)
_, err = ParseBucketKey("AAA/import/99999999/2025-03-31T990816Z_AAA_import_b745910f-f529-43c5-87e1-25629d46ef40")
assert.Error(t, err)
_, err = ParseBucketKey("AAA/import/20250331/99999999/2025-03-31T040816Z_AAA_import_b745910f-f529-43c5-87e1-25629d46ef40")
assert.Error(t, err)
_, err = ParseBucketKey("AAA/import/20250331/999/2025-03-31T040816Z_AAA_import_b745910f-f529-43c5-87e1-25629d46ef40")
assert.Error(t, err)
_, err = ParseBucketKey("****AAA/export/20250331/3/2025-03-31T040816Z_AAA_export_b745910f-f529-43c5-87e1-25629d46ef40")
assert.Error(t, err)
}
func TestParseFilename(t *testing.T) {
key := BucketKey{}
err := key.parseFilename("")
assert.EqualError(t, err, "incorrect amount of metadata elements")
err = key.parseFilename("a.a")
assert.EqualError(t, err, "incorrect amount of metadata elements")
err = key.parseFilename("a.a.a")
assert.EqualError(t, err, "incorrect amount of dots")
err = key.parseFilename("a_a_a_a.a")
assert.EqualError(t, err, "failed to parse date: parsing time \"a\" as \"2006-01-02T150405Z\": cannot parse \"a\" as \"2006\"")
err = key.parseFilename("2025-03-31T040816Z_*_a_a.a")
assert.EqualError(t, err, "invalid client id")
err = key.parseFilename("2025-03-31T040816Z_a_a_a.a")
assert.EqualError(t, err, "invalid location")
err = key.parseFilename("2025-03-31T040816Z_a_import_a.a")
assert.EqualError(t, err, "invalid UUID length: 1")
err = key.parseFilename("2025-03-31T040816Z_a_import_b745910f-f529-43c5-87e1-25629d46ef40.a")
assert.NoError(t, err)
filetype := "a"
assert.EqualExportedValues(t, BucketKey{
CreatedAt: time.Date(2025, time.March, 32, 4, 8, 16, 0, time.UTC),
ClientID: "a",
Location: Import,
EntityID: uuid.MustParse("b745910f-f529-43c5-87e1-25629d46ef40"),
FileType: &filetype,
}, key)
}