KevinStephenson
Adding in weaviate code
b110593
raw
history blame
4.33 kB
// _ _
// __ _____ __ ___ ___ __ _| |_ ___
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
// \ V V / __/ (_| |\ V /| | (_| | || __/
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___|
//
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved.
//
// CONTACT: [email protected]
//
package inverted
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/weaviate/weaviate/adapters/repos/db/inverted/stopwords"
"github.com/weaviate/weaviate/entities/models"
"github.com/weaviate/weaviate/usecases/config"
)
func TestValidateUserConfigUpdate(t *testing.T) {
validInitial := &models.InvertedIndexConfig{
CleanupIntervalSeconds: 1,
Bm25: &models.BM25Config{
K1: config.DefaultBM25k1,
B: config.DefaultBM25b,
},
Stopwords: &models.StopwordConfig{
Preset: stopwords.EnglishPreset,
},
}
t.Run("with valid updated config all fields", func(t *testing.T) {
updated := &models.InvertedIndexConfig{
CleanupIntervalSeconds: 2,
Bm25: &models.BM25Config{
K1: 1.3,
B: 0.778,
},
Stopwords: &models.StopwordConfig{
Preset: "en",
Additions: []string{"star", "nebula"},
Removals: []string{"the", "a"},
},
}
err := ValidateUserConfigUpdate(validInitial, updated)
require.Nil(t, err)
})
t.Run("with valid updated config missing BM25", func(t *testing.T) {
updated := &models.InvertedIndexConfig{
CleanupIntervalSeconds: 2,
}
err := ValidateUserConfigUpdate(validInitial, updated)
require.Nil(t, err)
assert.Equal(t, validInitial.Bm25.K1, updated.Bm25.K1)
assert.Equal(t, validInitial.Bm25.B, updated.Bm25.B)
})
t.Run("with valid updated config missing Stopwords", func(t *testing.T) {
updated := &models.InvertedIndexConfig{
CleanupIntervalSeconds: 2,
}
err := ValidateUserConfigUpdate(validInitial, updated)
require.Nil(t, err)
assert.Equal(t, validInitial.Stopwords.Preset, updated.Stopwords.Preset)
assert.Equal(t, validInitial.Stopwords.Additions, updated.Stopwords.Additions)
assert.Equal(t, validInitial.Stopwords.Removals, updated.Stopwords.Removals)
})
t.Run("with invalid cleanup interval", func(t *testing.T) {
updated := &models.InvertedIndexConfig{
CleanupIntervalSeconds: -1,
}
err := ValidateUserConfigUpdate(validInitial, updated)
require.EqualError(t, err, "cleanup interval seconds must be > 0")
})
t.Run("with invalid updated Bm25 config", func(t *testing.T) {
updated := &models.InvertedIndexConfig{
CleanupIntervalSeconds: 1,
Bm25: &models.BM25Config{
K1: 1.2,
B: 1.2,
},
}
err := ValidateUserConfigUpdate(validInitial, updated)
require.EqualError(t, err, "BM25.b must be <= 0 and <= 1")
})
t.Run("with invalid updated Stopwords preset config", func(t *testing.T) {
updated := &models.InvertedIndexConfig{
CleanupIntervalSeconds: 1,
Stopwords: &models.StopwordConfig{
Preset: "mongolian",
},
}
err := ValidateUserConfigUpdate(validInitial, updated)
require.EqualError(t, err, "stopwordPreset 'mongolian' does not exist")
})
t.Run("with invalid updated Stopwords addition/removal config", func(t *testing.T) {
updated := &models.InvertedIndexConfig{
CleanupIntervalSeconds: 1,
Stopwords: &models.StopwordConfig{
Additions: []string{"duplicate"},
Removals: []string{"duplicate"},
},
}
err := ValidateUserConfigUpdate(validInitial, updated)
require.EqualError(t, err, "found 'duplicate' in both stopwords.additions and stopwords.removals")
})
t.Run("with invalid updated inverted index null state change", func(t *testing.T) {
updated := &models.InvertedIndexConfig{
IndexNullState: true,
}
err := ValidateUserConfigUpdate(validInitial, updated)
require.EqualError(t, err, "IndexNullState cannot be changed when updating a schema")
})
t.Run("with invalid updated inverted index property length change", func(t *testing.T) {
updated := &models.InvertedIndexConfig{
IndexPropertyLength: true,
}
err := ValidateUserConfigUpdate(validInitial, updated)
require.EqualError(t, err, "IndexPropertyLength cannot be changed when updating a schema")
})
}