github.com/mattermost/mattermost-server/v5@v5.39.3/services/searchengine/bleveengine/indexer/indexing_job_test.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package ebleveengine 5 6 import ( 7 "errors" 8 "io/ioutil" 9 "os" 10 "testing" 11 12 "github.com/mattermost/mattermost-server/v5/jobs" 13 "github.com/mattermost/mattermost-server/v5/model" 14 "github.com/mattermost/mattermost-server/v5/services/searchengine/bleveengine" 15 "github.com/mattermost/mattermost-server/v5/store/storetest" 16 "github.com/mattermost/mattermost-server/v5/utils/testutils" 17 "github.com/stretchr/testify/require" 18 ) 19 20 func TestBleveIndexer(t *testing.T) { 21 mockStore := &storetest.Store{} 22 defer mockStore.AssertExpectations(t) 23 24 t.Run("Call GetOldestEntityCreationTime for the first indexing call", func(t *testing.T) { 25 job := &model.Job{ 26 Id: model.NewId(), 27 CreateAt: model.GetMillis(), 28 Status: model.JOB_STATUS_PENDING, 29 Type: model.JOB_TYPE_BLEVE_POST_INDEXING, 30 } 31 32 mockStore.JobStore.On("UpdateStatusOptimistically", job.Id, model.JOB_STATUS_PENDING, model.JOB_STATUS_IN_PROGRESS).Return(true, nil) 33 mockStore.JobStore.On("UpdateOptimistically", job, model.JOB_STATUS_IN_PROGRESS).Return(true, nil) 34 mockStore.PostStore.On("GetOldestEntityCreationTime").Return(int64(1), errors.New("")) // intentionally return error to return from function 35 36 tempDir, err := ioutil.TempDir("", "setupConfigFile") 37 require.NoError(t, err) 38 39 t.Cleanup(func() { 40 os.RemoveAll(tempDir) 41 }) 42 43 cfg := &model.Config{ 44 BleveSettings: model.BleveSettings{ 45 EnableIndexing: model.NewBool(true), 46 IndexDir: model.NewString(tempDir), 47 }, 48 } 49 50 jobServer := &jobs.JobServer{ 51 Store: mockStore, 52 ConfigService: &testutils.StaticConfigService{ 53 Cfg: cfg, 54 }, 55 } 56 57 bleveEngine := bleveengine.NewBleveEngine(cfg, jobServer) 58 aErr := bleveEngine.Start() 59 require.Nil(t, aErr) 60 61 worker := &BleveIndexerWorker{ 62 jobServer: jobServer, 63 engine: bleveEngine, 64 } 65 66 worker.DoJob(job) 67 }) 68 }