mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
* [MM-20979] Add first implementation of the Bleve search engine * Fix i18n * Migrate searchengine utils tests * Fix linter * Don't add allTermsQ if both termQueries and notTermQueries are empty * Fix test that should work if user is system admin * Modify naming according to review comments * Abstract getIndexDir function * Extracting bleve engine name as a constant * Merge both Indexer interfaces into one * Add worker stopped message * Allow worker to be started/stopped with config change * Use constants for index names * Modify test order * Fix linter * Trying to unlock the CI
79 lines
1.8 KiB
Go
79 lines
1.8 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package searchtest
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/mattermost/mattermost-server/v5/store"
|
|
"github.com/mattermost/mattermost-server/v5/utils"
|
|
)
|
|
|
|
const (
|
|
ENGINE_ALL = "all"
|
|
ENGINE_MYSQL = "mysql"
|
|
ENGINE_POSTGRES = "postgres"
|
|
ENGINE_ELASTICSEARCH = "elasticsearch"
|
|
ENGINE_BLEVE = "bleve"
|
|
)
|
|
|
|
type SearchTestEngine struct {
|
|
Driver string
|
|
BeforeTest func(*testing.T, store.Store)
|
|
AfterTest func(*testing.T, store.Store)
|
|
}
|
|
|
|
type searchTest struct {
|
|
Name string
|
|
Fn func(*testing.T, *SearchTestHelper)
|
|
Tags []string
|
|
Skip bool
|
|
SkipMessage string
|
|
}
|
|
|
|
func filterTestsByTag(tests []searchTest, tags ...string) []searchTest {
|
|
filteredTests := []searchTest{}
|
|
for _, test := range tests {
|
|
if utils.StringInSlice(ENGINE_ALL, test.Tags) {
|
|
filteredTests = append(filteredTests, test)
|
|
continue
|
|
}
|
|
for _, tag := range tags {
|
|
if utils.StringInSlice(tag, test.Tags) {
|
|
filteredTests = append(filteredTests, test)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
return filteredTests
|
|
}
|
|
|
|
func runTestSearch(t *testing.T, testEngine *SearchTestEngine, tests []searchTest, th *SearchTestHelper) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping advanced search test")
|
|
return
|
|
}
|
|
|
|
filteredTests := filterTestsByTag(tests, testEngine.Driver)
|
|
|
|
for _, test := range filteredTests {
|
|
|
|
if test.Skip {
|
|
t.Log("SKIPPED: " + test.Name + ". Reason: " + test.SkipMessage)
|
|
continue
|
|
}
|
|
|
|
if testEngine.BeforeTest != nil {
|
|
testEngine.BeforeTest(t, th.Store)
|
|
}
|
|
testName := test.Name
|
|
testFn := test.Fn
|
|
t.Run(testName, func(t *testing.T) { testFn(t, th) })
|
|
if testEngine.AfterTest != nil {
|
|
testEngine.AfterTest(t, th.Store)
|
|
}
|
|
}
|
|
}
|