Move Elasticsearch to source available 🎉 🎉 (#29015)
* Move Elasticsearch to source available
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
311381940d
Коммит
65ed87bda0
126
server/enterprise/elasticsearch/opensearch/opensearch_test.go
Обычный файл
126
server/enterprise/elasticsearch/opensearch/opensearch_test.go
Обычный файл
@@ -0,0 +1,126 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.enterprise for license information.
|
||||
|
||||
package opensearch
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/opensearch-project/opensearch-go/v4/opensearchapi"
|
||||
"github.com/stretchr/testify/suite"
|
||||
|
||||
"github.com/mattermost/mattermost/server/public/model"
|
||||
"github.com/mattermost/mattermost/server/v8/channels/api4"
|
||||
"github.com/mattermost/mattermost/server/v8/enterprise/elasticsearch/common"
|
||||
"github.com/mattermost/mattermost/server/v8/platform/shared/filestore"
|
||||
"github.com/mattermost/mattermost/server/v8/platform/shared/filestore/mocks"
|
||||
)
|
||||
|
||||
type OpensearchInterfaceTestSuite struct {
|
||||
common.CommonTestSuite
|
||||
|
||||
th *api4.TestHelper
|
||||
client *opensearchapi.Client
|
||||
ctx context.Context
|
||||
fileBackend filestore.FileBackend
|
||||
}
|
||||
|
||||
func TestOpensearchInterfaceTestSuite(t *testing.T) {
|
||||
testSuite := &OpensearchInterfaceTestSuite{
|
||||
CommonTestSuite: common.CommonTestSuite{},
|
||||
}
|
||||
suite.Run(t, testSuite)
|
||||
}
|
||||
|
||||
func (s *OpensearchInterfaceTestSuite) SetupSuite() {
|
||||
if os.Getenv("IS_CI") == "true" {
|
||||
os.Setenv("MM_ELASTICSEARCHSETTINGS_CONNECTIONURL", "http://opensearch:9201")
|
||||
os.Setenv("MM_ELASTICSEARCHSETTINGS_BACKEND", "opensearch")
|
||||
}
|
||||
|
||||
s.th = api4.SetupEnterprise(s.T()).InitBasic()
|
||||
s.CommonTestSuite.TH = s.th
|
||||
s.CommonTestSuite.GetDocumentFn = func(index, documentID string) (bool, json.RawMessage, error) {
|
||||
resp, err := s.client.Document.Get(s.ctx, opensearchapi.DocumentGetReq{
|
||||
Index: index,
|
||||
DocumentID: documentID,
|
||||
})
|
||||
if resp == nil {
|
||||
return false, nil, err
|
||||
}
|
||||
return resp.Found, resp.Source, err
|
||||
}
|
||||
s.CommonTestSuite.RefreshIndexFn = func() error {
|
||||
_, err := s.client.Indices.Refresh(context.Background(), nil)
|
||||
return err
|
||||
}
|
||||
s.CommonTestSuite.CreateIndexFn = func(index string) error {
|
||||
_, err := s.client.Indices.Create(s.ctx, opensearchapi.IndicesCreateReq{
|
||||
Index: index,
|
||||
})
|
||||
return err
|
||||
}
|
||||
s.CommonTestSuite.GetIndexFn = func(indexPattern string) ([]string, error) {
|
||||
res, err := s.client.Indices.Get(s.ctx, opensearchapi.IndicesGetReq{
|
||||
Indices: []string{indexPattern},
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var names []string
|
||||
for name := range res.Indices {
|
||||
names = append(names, name)
|
||||
}
|
||||
return names, nil
|
||||
}
|
||||
|
||||
// Set up the state for the tests.
|
||||
s.th.App.UpdateConfig(func(cfg *model.Config) {
|
||||
if os.Getenv("IS_CI") == "true" {
|
||||
*cfg.ElasticsearchSettings.ConnectionURL = "http://opensearch:9201"
|
||||
} else {
|
||||
*cfg.ElasticsearchSettings.ConnectionURL = "http://localhost:9201"
|
||||
}
|
||||
*cfg.ElasticsearchSettings.Backend = model.ElasticsearchSettingsOSBackend
|
||||
*cfg.ElasticsearchSettings.EnableIndexing = true
|
||||
*cfg.ElasticsearchSettings.EnableSearching = true
|
||||
*cfg.ElasticsearchSettings.EnableAutocomplete = true
|
||||
*cfg.ElasticsearchSettings.LiveIndexingBatchSize = 1
|
||||
*cfg.SqlSettings.DisableDatabaseSearch = true
|
||||
})
|
||||
s.th.App.Srv().SetLicense(model.NewTestLicense())
|
||||
|
||||
if s.fileBackend == nil {
|
||||
s.fileBackend = &mocks.FileBackend{}
|
||||
}
|
||||
|
||||
// Initialise other stuff for the test.
|
||||
s.client = createTestClient(s.T(), s.th.Context, s.th.App.Config(), s.th.App.FileBackend())
|
||||
s.ctx = context.Background()
|
||||
|
||||
// Register search engine
|
||||
s.th.App.SearchEngine().RegisterElasticsearchEngine(&OpensearchInterfaceImpl{Platform: s.th.Server.Platform()})
|
||||
}
|
||||
|
||||
func (s *OpensearchInterfaceTestSuite) TearDownSuite() {
|
||||
if os.Getenv("IS_CI") == "true" {
|
||||
os.Setenv("MM_ELASTICSEARCHSETTINGS_CONNECTIONURL", "http://elasticsearch:9201")
|
||||
os.Unsetenv("MM_ELASTICSEARCHSETTINGS_BACKEND")
|
||||
}
|
||||
}
|
||||
|
||||
func (s *OpensearchInterfaceTestSuite) SetupTest() {
|
||||
s.CommonTestSuite.ESImpl = s.th.App.SearchEngine().ElasticsearchEngine
|
||||
|
||||
if s.CommonTestSuite.ESImpl.IsActive() {
|
||||
appErr := s.CommonTestSuite.ESImpl.Stop()
|
||||
s.Require().Nil(appErr)
|
||||
}
|
||||
|
||||
s.Require().Nil(s.CommonTestSuite.ESImpl.Start())
|
||||
|
||||
s.Nil(s.CommonTestSuite.ESImpl.PurgeIndexes(s.th.Context))
|
||||
}
|
||||
Ссылка в новой задаче
Block a user