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  }