fee71e7740
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
163 lines
6.2 KiB
Go
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)
|
|
}
|