go.temporal.io/server@v1.23.0/common/persistence/tests/sqlite_test.go (about)

     1  // The MIT License
     2  //
     3  // Copyright (c) 2020 Temporal Technologies Inc.  All rights reserved.
     4  //
     5  // Copyright (c) 2020 Uber Technologies, Inc.
     6  //
     7  // Permission is hereby granted, free of charge, to any person obtaining a copy
     8  // of this software and associated documentation files (the "Software"), to deal
     9  // in the Software without restriction, including without limitation the rights
    10  // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    11  // copies of the Software, and to permit persons to whom the Software is
    12  // furnished to do so, subject to the following conditions:
    13  //
    14  // The above copyright notice and this permission notice shall be included in
    15  // all copies or substantial portions of the Software.
    16  //
    17  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    18  // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    19  // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    20  // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    21  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    22  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    23  // THE SOFTWARE.
    24  
    25  package tests
    26  
    27  import (
    28  	"fmt"
    29  	"os"
    30  	"path"
    31  	"testing"
    32  
    33  	"github.com/stretchr/testify/assert"
    34  	"github.com/stretchr/testify/suite"
    35  
    36  	"go.temporal.io/server/common/config"
    37  	"go.temporal.io/server/common/log"
    38  	"go.temporal.io/server/common/log/tag"
    39  	"go.temporal.io/server/common/persistence"
    40  	persistencetests "go.temporal.io/server/common/persistence/persistence-tests"
    41  	"go.temporal.io/server/common/persistence/serialization"
    42  	"go.temporal.io/server/common/persistence/sql"
    43  	"go.temporal.io/server/common/persistence/sql/sqlplugin"
    44  	_ "go.temporal.io/server/common/persistence/sql/sqlplugin/sqlite"
    45  	sqltests "go.temporal.io/server/common/persistence/sql/sqlplugin/tests"
    46  	"go.temporal.io/server/common/resolver"
    47  	"go.temporal.io/server/environment"
    48  )
    49  
    50  // TODO merge the initialization with existing persistence setup
    51  const (
    52  	testSQLiteClusterName = "temporal_sqlite_cluster"
    53  	testSQLiteSchemaDir   = "../../../schema/sqlite/v3" // specify if mode is not "memory"
    54  )
    55  
    56  // NewSQLiteMemoryConfig returns a new SQLite config for test
    57  func NewSQLiteMemoryConfig() *config.SQL {
    58  	return &config.SQL{
    59  		User:              "",
    60  		Password:          "",
    61  		ConnectAddr:       environment.GetLocalhostIP(),
    62  		ConnectProtocol:   "tcp",
    63  		PluginName:        "sqlite",
    64  		DatabaseName:      "default",
    65  		ConnectAttributes: map[string]string{"mode": "memory", "cache": "private"},
    66  	}
    67  }
    68  
    69  // NewSQLiteMemoryConfig returns a new SQLite config for test
    70  func NewSQLiteFileConfig() *config.SQL {
    71  	return &config.SQL{
    72  		User:              "",
    73  		Password:          "",
    74  		ConnectAddr:       environment.GetLocalhostIP(),
    75  		ConnectProtocol:   "tcp",
    76  		PluginName:        "sqlite",
    77  		DatabaseName:      "test_" + persistencetests.GenerateRandomDBName(3),
    78  		ConnectAttributes: map[string]string{"cache": "private"},
    79  	}
    80  }
    81  
    82  func SetupSQLiteDatabase(cfg *config.SQL) {
    83  	db, err := sql.NewSQLAdminDB(sqlplugin.DbKindUnknown, cfg, resolver.NewNoopResolver())
    84  	if err != nil {
    85  		panic(fmt.Sprintf("unable to create SQLite admin DB: %v", err))
    86  	}
    87  	defer func() { _ = db.Close() }()
    88  
    89  	err = db.CreateDatabase(cfg.DatabaseName)
    90  	if err != nil {
    91  		panic(fmt.Sprintf("unable to create SQLite database: %v", err))
    92  	}
    93  
    94  	LoadSchema(db, path.Join(testSQLiteSchemaDir, "temporal", "schema.sql"))
    95  	LoadSchema(db, path.Join(testSQLiteSchemaDir, "visibility", "schema.sql"))
    96  }
    97  
    98  func LoadSchema(db sqlplugin.AdminDB, schemaFile string) {
    99  	statements, err := persistence.LoadAndSplitQuery([]string{schemaFile})
   100  	if err != nil {
   101  		panic(fmt.Sprintf("LoadSchema %+v", tag.Error(err)))
   102  	}
   103  
   104  	for _, stmt := range statements {
   105  		if err = db.Exec(stmt); err != nil {
   106  			panic(fmt.Sprintf("LoadSchema %+v", tag.Error(err)))
   107  		}
   108  	}
   109  }
   110  
   111  func TestSQLiteExecutionMutableStateStoreSuite(t *testing.T) {
   112  	cfg := NewSQLiteMemoryConfig()
   113  	logger := log.NewNoopLogger()
   114  	factory := sql.NewFactory(
   115  		*cfg,
   116  		resolver.NewNoopResolver(),
   117  		testSQLiteClusterName,
   118  		logger,
   119  	)
   120  	shardStore, err := factory.NewShardStore()
   121  	if err != nil {
   122  		t.Fatalf("unable to create SQLite DB: %v", err)
   123  	}
   124  	executionStore, err := factory.NewExecutionStore()
   125  	if err != nil {
   126  		t.Fatalf("unable to create SQLite DB: %v", err)
   127  	}
   128  	defer func() {
   129  		factory.Close()
   130  	}()
   131  
   132  	s := NewExecutionMutableStateSuite(
   133  		t,
   134  		shardStore,
   135  		executionStore,
   136  		serialization.NewSerializer(),
   137  		logger,
   138  	)
   139  	suite.Run(t, s)
   140  }
   141  
   142  func TestSQLiteExecutionMutableStateTaskStoreSuite(t *testing.T) {
   143  	cfg := NewSQLiteMemoryConfig()
   144  	logger := log.NewNoopLogger()
   145  	factory := sql.NewFactory(
   146  		*cfg,
   147  		resolver.NewNoopResolver(),
   148  		testSQLiteClusterName,
   149  		logger,
   150  	)
   151  	shardStore, err := factory.NewShardStore()
   152  	if err != nil {
   153  		t.Fatalf("unable to create SQLite DB: %v", err)
   154  	}
   155  	executionStore, err := factory.NewExecutionStore()
   156  	if err != nil {
   157  		t.Fatalf("unable to create SQLite DB: %v", err)
   158  	}
   159  	defer func() {
   160  		factory.Close()
   161  	}()
   162  
   163  	s := NewExecutionMutableStateTaskSuite(
   164  		t,
   165  		shardStore,
   166  		executionStore,
   167  		serialization.NewSerializer(),
   168  		logger,
   169  	)
   170  	suite.Run(t, s)
   171  }
   172  
   173  func TestSQLiteHistoryStoreSuite(t *testing.T) {
   174  	cfg := NewSQLiteMemoryConfig()
   175  	logger := log.NewNoopLogger()
   176  	factory := sql.NewFactory(
   177  		*cfg,
   178  		resolver.NewNoopResolver(),
   179  		testSQLiteClusterName,
   180  		logger,
   181  	)
   182  	store, err := factory.NewExecutionStore()
   183  	if err != nil {
   184  		t.Fatalf("unable to create SQLite DB: %v", err)
   185  	}
   186  	defer func() {
   187  		factory.Close()
   188  	}()
   189  
   190  	s := NewHistoryEventsSuite(t, store, logger)
   191  	suite.Run(t, s)
   192  }
   193  
   194  func TestSQLiteTaskQueueSuite(t *testing.T) {
   195  	cfg := NewSQLiteMemoryConfig()
   196  	logger := log.NewNoopLogger()
   197  	factory := sql.NewFactory(
   198  		*cfg,
   199  		resolver.NewNoopResolver(),
   200  		testSQLiteClusterName,
   201  		logger,
   202  	)
   203  	taskQueueStore, err := factory.NewTaskStore()
   204  	if err != nil {
   205  		t.Fatalf("unable to create SQLite DB: %v", err)
   206  	}
   207  	defer func() {
   208  		factory.Close()
   209  	}()
   210  
   211  	s := NewTaskQueueSuite(t, taskQueueStore, logger)
   212  	suite.Run(t, s)
   213  }
   214  
   215  func TestSQLiteTaskQueueTaskSuite(t *testing.T) {
   216  	cfg := NewSQLiteMemoryConfig()
   217  	logger := log.NewNoopLogger()
   218  	factory := sql.NewFactory(
   219  		*cfg,
   220  		resolver.NewNoopResolver(),
   221  		testSQLiteClusterName,
   222  		logger,
   223  	)
   224  	taskQueueStore, err := factory.NewTaskStore()
   225  	if err != nil {
   226  		t.Fatalf("unable to create SQLite DB: %v", err)
   227  	}
   228  	defer func() {
   229  		factory.Close()
   230  	}()
   231  
   232  	s := NewTaskQueueTaskSuite(t, taskQueueStore, logger)
   233  	suite.Run(t, s)
   234  }
   235  
   236  func TestSQLiteFileExecutionMutableStateStoreSuite(t *testing.T) {
   237  	cfg := NewSQLiteFileConfig()
   238  	SetupSQLiteDatabase(cfg)
   239  	defer func() {
   240  		assert.NoError(t, os.Remove(cfg.DatabaseName))
   241  	}()
   242  	logger := log.NewNoopLogger()
   243  	factory := sql.NewFactory(
   244  		*cfg,
   245  		resolver.NewNoopResolver(),
   246  		testSQLiteClusterName,
   247  		logger,
   248  	)
   249  	shardStore, err := factory.NewShardStore()
   250  	if err != nil {
   251  		t.Fatalf("unable to create SQLite DB: %v", err)
   252  	}
   253  	executionStore, err := factory.NewExecutionStore()
   254  	if err != nil {
   255  		t.Fatalf("unable to create SQLite DB: %v", err)
   256  	}
   257  	defer func() {
   258  		factory.Close()
   259  	}()
   260  
   261  	s := NewExecutionMutableStateSuite(
   262  		t,
   263  		shardStore,
   264  		executionStore,
   265  		serialization.NewSerializer(),
   266  		logger,
   267  	)
   268  	suite.Run(t, s)
   269  }
   270  
   271  func TestSQLiteFileExecutionMutableStateTaskStoreSuite(t *testing.T) {
   272  	cfg := NewSQLiteFileConfig()
   273  	SetupSQLiteDatabase(cfg)
   274  	defer func() {
   275  		assert.NoError(t, os.Remove(cfg.DatabaseName))
   276  	}()
   277  	logger := log.NewNoopLogger()
   278  	factory := sql.NewFactory(
   279  		*cfg,
   280  		resolver.NewNoopResolver(),
   281  		testSQLiteClusterName,
   282  		logger,
   283  	)
   284  	shardStore, err := factory.NewShardStore()
   285  	if err != nil {
   286  		t.Fatalf("unable to create SQLite DB: %v", err)
   287  	}
   288  	executionStore, err := factory.NewExecutionStore()
   289  	if err != nil {
   290  		t.Fatalf("unable to create SQLite DB: %v", err)
   291  	}
   292  	defer func() {
   293  		factory.Close()
   294  	}()
   295  
   296  	s := NewExecutionMutableStateTaskSuite(
   297  		t,
   298  		shardStore,
   299  		executionStore,
   300  		serialization.NewSerializer(),
   301  		logger,
   302  	)
   303  	suite.Run(t, s)
   304  }
   305  
   306  func TestSQLiteFileHistoryStoreSuite(t *testing.T) {
   307  	cfg := NewSQLiteFileConfig()
   308  	SetupSQLiteDatabase(cfg)
   309  	defer func() {
   310  		assert.NoError(t, os.Remove(cfg.DatabaseName))
   311  	}()
   312  	logger := log.NewNoopLogger()
   313  	factory := sql.NewFactory(
   314  		*cfg,
   315  		resolver.NewNoopResolver(),
   316  		testSQLiteClusterName,
   317  		logger,
   318  	)
   319  	store, err := factory.NewExecutionStore()
   320  	if err != nil {
   321  		t.Fatalf("unable to create SQLite DB: %v", err)
   322  	}
   323  	defer func() {
   324  		factory.Close()
   325  	}()
   326  
   327  	s := NewHistoryEventsSuite(t, store, logger)
   328  	suite.Run(t, s)
   329  }
   330  
   331  func TestSQLiteFileTaskQueueSuite(t *testing.T) {
   332  	cfg := NewSQLiteFileConfig()
   333  	SetupSQLiteDatabase(cfg)
   334  	defer func() {
   335  		assert.NoError(t, os.Remove(cfg.DatabaseName))
   336  	}()
   337  	logger := log.NewNoopLogger()
   338  	factory := sql.NewFactory(
   339  		*cfg,
   340  		resolver.NewNoopResolver(),
   341  		testSQLiteClusterName,
   342  		logger,
   343  	)
   344  	taskQueueStore, err := factory.NewTaskStore()
   345  	if err != nil {
   346  		t.Fatalf("unable to create SQLite DB: %v", err)
   347  	}
   348  	defer func() {
   349  		factory.Close()
   350  	}()
   351  
   352  	s := NewTaskQueueSuite(t, taskQueueStore, logger)
   353  	suite.Run(t, s)
   354  }
   355  
   356  func TestSQLiteFileTaskQueueTaskSuite(t *testing.T) {
   357  	cfg := NewSQLiteFileConfig()
   358  	SetupSQLiteDatabase(cfg)
   359  	defer func() {
   360  		assert.NoError(t, os.Remove(cfg.DatabaseName))
   361  	}()
   362  	logger := log.NewNoopLogger()
   363  	factory := sql.NewFactory(
   364  		*cfg,
   365  		resolver.NewNoopResolver(),
   366  		testSQLiteClusterName,
   367  		logger,
   368  	)
   369  	taskQueueStore, err := factory.NewTaskStore()
   370  	if err != nil {
   371  		t.Fatalf("unable to create SQLite DB: %v", err)
   372  	}
   373  	defer func() {
   374  		factory.Close()
   375  	}()
   376  
   377  	s := NewTaskQueueTaskSuite(t, taskQueueStore, logger)
   378  	suite.Run(t, s)
   379  }
   380  
   381  // TODO: Merge persistence-tests into the tests directory.
   382  
   383  func TestSQLiteVisibilityPersistenceSuite(t *testing.T) {
   384  	s := new(VisibilityPersistenceSuite)
   385  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetSQLiteMemoryTestClusterOption())
   386  	suite.Run(t, s)
   387  }
   388  
   389  func TestSQLiteHistoryV2PersistenceSuite(t *testing.T) {
   390  	s := new(persistencetests.HistoryV2PersistenceSuite)
   391  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetSQLiteMemoryTestClusterOption())
   392  	s.TestBase.Setup(nil)
   393  	suite.Run(t, s)
   394  }
   395  
   396  func TestSQLiteMetadataPersistenceSuiteV2(t *testing.T) {
   397  	s := new(persistencetests.MetadataPersistenceSuiteV2)
   398  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetSQLiteMemoryTestClusterOption())
   399  	s.TestBase.Setup(nil)
   400  	suite.Run(t, s)
   401  }
   402  
   403  func TestSQLiteClusterMetadataPersistence(t *testing.T) {
   404  	s := new(persistencetests.ClusterMetadataManagerSuite)
   405  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetSQLiteMemoryTestClusterOption())
   406  	s.TestBase.Setup(nil)
   407  	suite.Run(t, s)
   408  }
   409  
   410  func TestSQLiteQueuePersistence(t *testing.T) {
   411  	s := new(persistencetests.QueuePersistenceSuite)
   412  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetSQLiteMemoryTestClusterOption())
   413  	s.TestBase.Setup(nil)
   414  	suite.Run(t, s)
   415  }
   416  
   417  func TestSQLiteFileHistoryV2PersistenceSuite(t *testing.T) {
   418  	s := new(persistencetests.HistoryV2PersistenceSuite)
   419  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetSQLiteFileTestClusterOption())
   420  	s.TestBase.Setup(nil)
   421  	suite.Run(t, s)
   422  }
   423  
   424  func TestSQLiteFileMetadataPersistenceSuiteV2(t *testing.T) {
   425  	s := new(persistencetests.MetadataPersistenceSuiteV2)
   426  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetSQLiteFileTestClusterOption())
   427  	s.TestBase.Setup(nil)
   428  	suite.Run(t, s)
   429  }
   430  
   431  func TestSQLiteFileClusterMetadataPersistence(t *testing.T) {
   432  	s := new(persistencetests.ClusterMetadataManagerSuite)
   433  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetSQLiteFileTestClusterOption())
   434  	s.TestBase.Setup(nil)
   435  	suite.Run(t, s)
   436  }
   437  
   438  func TestSQLiteFileQueuePersistence(t *testing.T) {
   439  	s := new(persistencetests.QueuePersistenceSuite)
   440  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetSQLiteFileTestClusterOption())
   441  	s.TestBase.Setup(nil)
   442  	suite.Run(t, s)
   443  }
   444  
   445  // SQL store tests
   446  
   447  func TestSQLiteNamespaceSuite(t *testing.T) {
   448  	cfg := NewSQLiteMemoryConfig()
   449  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   450  	if err != nil {
   451  		t.Fatalf("unable to create SQLite DB: %v", err)
   452  	}
   453  	defer func() {
   454  		_ = store.Close()
   455  	}()
   456  
   457  	s := sqltests.NewNamespaceSuite(t, store)
   458  	suite.Run(t, s)
   459  }
   460  
   461  func TestSQLiteQueueMessageSuite(t *testing.T) {
   462  	cfg := NewSQLiteMemoryConfig()
   463  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   464  	if err != nil {
   465  		t.Fatalf("unable to create SQLite DB: %v", err)
   466  	}
   467  	defer func() {
   468  		_ = store.Close()
   469  	}()
   470  
   471  	s := sqltests.NewQueueMessageSuite(t, store)
   472  	suite.Run(t, s)
   473  }
   474  
   475  func TestSQLiteQueueMetadataSuite(t *testing.T) {
   476  	cfg := NewSQLiteMemoryConfig()
   477  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   478  	if err != nil {
   479  		t.Fatalf("unable to create SQLite DB: %v", err)
   480  	}
   481  	defer func() {
   482  		_ = store.Close()
   483  	}()
   484  
   485  	s := sqltests.NewQueueMetadataSuite(t, store)
   486  	suite.Run(t, s)
   487  }
   488  
   489  func TestSQLiteMatchingTaskSuite(t *testing.T) {
   490  	cfg := NewSQLiteMemoryConfig()
   491  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   492  	if err != nil {
   493  		t.Fatalf("unable to create SQLite DB: %v", err)
   494  	}
   495  	defer func() {
   496  		_ = store.Close()
   497  	}()
   498  
   499  	s := sqltests.NewMatchingTaskSuite(t, store)
   500  	suite.Run(t, s)
   501  }
   502  
   503  func TestSQLiteMatchingTaskQueueSuite(t *testing.T) {
   504  	cfg := NewSQLiteMemoryConfig()
   505  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   506  	if err != nil {
   507  		t.Fatalf("unable to create SQLite DB: %v", err)
   508  	}
   509  	defer func() {
   510  		_ = store.Close()
   511  	}()
   512  
   513  	s := sqltests.NewMatchingTaskQueueSuite(t, store)
   514  	suite.Run(t, s)
   515  }
   516  
   517  func TestSQLiteHistoryShardSuite(t *testing.T) {
   518  	cfg := NewSQLiteMemoryConfig()
   519  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   520  	if err != nil {
   521  		t.Fatalf("unable to create SQLite DB: %v", err)
   522  	}
   523  	defer func() {
   524  		_ = store.Close()
   525  	}()
   526  
   527  	s := sqltests.NewHistoryShardSuite(t, store)
   528  	suite.Run(t, s)
   529  }
   530  
   531  func TestSQLiteHistoryNodeSuite(t *testing.T) {
   532  	cfg := NewSQLiteMemoryConfig()
   533  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   534  	if err != nil {
   535  		t.Fatalf("unable to create SQLite DB: %v", err)
   536  	}
   537  	defer func() {
   538  		_ = store.Close()
   539  	}()
   540  
   541  	s := sqltests.NewHistoryNodeSuite(t, store)
   542  	suite.Run(t, s)
   543  }
   544  
   545  func TestSQLiteHistoryTreeSuite(t *testing.T) {
   546  	cfg := NewSQLiteMemoryConfig()
   547  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   548  	if err != nil {
   549  		t.Fatalf("unable to create SQLite DB: %v", err)
   550  	}
   551  	defer func() {
   552  		_ = store.Close()
   553  	}()
   554  
   555  	s := sqltests.NewHistoryTreeSuite(t, store)
   556  	suite.Run(t, s)
   557  }
   558  
   559  func TestSQLiteHistoryCurrentExecutionSuite(t *testing.T) {
   560  	cfg := NewSQLiteMemoryConfig()
   561  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   562  	if err != nil {
   563  		t.Fatalf("unable to create SQLite DB: %v", err)
   564  	}
   565  	defer func() {
   566  		_ = store.Close()
   567  	}()
   568  
   569  	s := sqltests.NewHistoryCurrentExecutionSuite(t, store)
   570  	suite.Run(t, s)
   571  }
   572  
   573  func TestSQLiteHistoryExecutionSuite(t *testing.T) {
   574  	cfg := NewSQLiteMemoryConfig()
   575  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   576  	if err != nil {
   577  		t.Fatalf("unable to create SQLite DB: %v", err)
   578  	}
   579  	defer func() {
   580  		_ = store.Close()
   581  	}()
   582  
   583  	s := sqltests.NewHistoryExecutionSuite(t, store)
   584  	suite.Run(t, s)
   585  }
   586  
   587  func TestSQLiteHistoryTransferTaskSuite(t *testing.T) {
   588  	cfg := NewSQLiteMemoryConfig()
   589  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   590  	if err != nil {
   591  		t.Fatalf("unable to create SQLite DB: %v", err)
   592  	}
   593  	defer func() {
   594  		_ = store.Close()
   595  	}()
   596  
   597  	s := sqltests.NewHistoryTransferTaskSuite(t, store)
   598  	suite.Run(t, s)
   599  }
   600  
   601  func TestSQLiteHistoryTimerTaskSuite(t *testing.T) {
   602  	cfg := NewSQLiteMemoryConfig()
   603  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   604  	if err != nil {
   605  		t.Fatalf("unable to create SQLite DB: %v", err)
   606  	}
   607  	defer func() {
   608  		_ = store.Close()
   609  	}()
   610  
   611  	s := sqltests.NewHistoryTimerTaskSuite(t, store)
   612  	suite.Run(t, s)
   613  }
   614  
   615  func TestSQLiteHistoryReplicationTaskSuite(t *testing.T) {
   616  	cfg := NewSQLiteMemoryConfig()
   617  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   618  	if err != nil {
   619  		t.Fatalf("unable to create SQLite DB: %v", err)
   620  	}
   621  	defer func() {
   622  		_ = store.Close()
   623  	}()
   624  
   625  	s := sqltests.NewHistoryReplicationTaskSuite(t, store)
   626  	suite.Run(t, s)
   627  }
   628  
   629  func TestSQLiteHistoryVisibilityTaskSuite(t *testing.T) {
   630  	cfg := NewSQLiteMemoryConfig()
   631  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   632  	if err != nil {
   633  		t.Fatalf("unable to create SQLite DB: %v", err)
   634  	}
   635  	defer func() {
   636  		_ = store.Close()
   637  	}()
   638  
   639  	s := sqltests.NewHistoryVisibilityTaskSuite(t, store)
   640  	suite.Run(t, s)
   641  }
   642  
   643  func TestSQLiteHistoryReplicationDLQTaskSuite(t *testing.T) {
   644  	cfg := NewSQLiteMemoryConfig()
   645  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   646  	if err != nil {
   647  		t.Fatalf("unable to create SQLite DB: %v", err)
   648  	}
   649  	defer func() {
   650  		_ = store.Close()
   651  	}()
   652  
   653  	s := sqltests.NewHistoryReplicationDLQTaskSuite(t, store)
   654  	suite.Run(t, s)
   655  }
   656  
   657  func TestSQLiteHistoryExecutionBufferSuite(t *testing.T) {
   658  	cfg := NewSQLiteMemoryConfig()
   659  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   660  	if err != nil {
   661  		t.Fatalf("unable to create SQLite DB: %v", err)
   662  	}
   663  	defer func() {
   664  		_ = store.Close()
   665  	}()
   666  
   667  	s := sqltests.NewHistoryExecutionBufferSuite(t, store)
   668  	suite.Run(t, s)
   669  }
   670  
   671  func TestSQLiteHistoryExecutionActivitySuite(t *testing.T) {
   672  	cfg := NewSQLiteMemoryConfig()
   673  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   674  	if err != nil {
   675  		t.Fatalf("unable to create SQLite DB: %v", err)
   676  	}
   677  	defer func() {
   678  		_ = store.Close()
   679  	}()
   680  
   681  	s := sqltests.NewHistoryExecutionActivitySuite(t, store)
   682  	suite.Run(t, s)
   683  }
   684  
   685  func TestSQLiteHistoryExecutionChildWorkflowSuite(t *testing.T) {
   686  	cfg := NewSQLiteMemoryConfig()
   687  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   688  	if err != nil {
   689  		t.Fatalf("unable to create SQLite DB: %v", err)
   690  	}
   691  	defer func() {
   692  		_ = store.Close()
   693  	}()
   694  
   695  	s := sqltests.NewHistoryExecutionChildWorkflowSuite(t, store)
   696  	suite.Run(t, s)
   697  }
   698  
   699  func TestSQLiteHistoryExecutionTimerSuite(t *testing.T) {
   700  	cfg := NewSQLiteMemoryConfig()
   701  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   702  	if err != nil {
   703  		t.Fatalf("unable to create SQLite DB: %v", err)
   704  	}
   705  	defer func() {
   706  		_ = store.Close()
   707  	}()
   708  
   709  	s := sqltests.NewHistoryExecutionTimerSuite(t, store)
   710  	suite.Run(t, s)
   711  }
   712  
   713  func TestSQLiteHistoryExecutionRequestCancelSuite(t *testing.T) {
   714  	cfg := NewSQLiteMemoryConfig()
   715  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   716  	if err != nil {
   717  		t.Fatalf("unable to create SQLite DB: %v", err)
   718  	}
   719  	defer func() {
   720  		_ = store.Close()
   721  	}()
   722  
   723  	s := sqltests.NewHistoryExecutionRequestCancelSuite(t, store)
   724  	suite.Run(t, s)
   725  }
   726  
   727  func TestSQLiteHistoryExecutionSignalSuite(t *testing.T) {
   728  	cfg := NewSQLiteMemoryConfig()
   729  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   730  	if err != nil {
   731  		t.Fatalf("unable to create SQLite DB: %v", err)
   732  	}
   733  	defer func() {
   734  		_ = store.Close()
   735  	}()
   736  
   737  	s := sqltests.NewHistoryExecutionSignalSuite(t, store)
   738  	suite.Run(t, s)
   739  }
   740  
   741  func TestSQLiteHistoryExecutionSignalRequestSuite(t *testing.T) {
   742  	cfg := NewSQLiteMemoryConfig()
   743  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   744  	if err != nil {
   745  		t.Fatalf("unable to create SQLite DB: %v", err)
   746  	}
   747  	defer func() {
   748  		_ = store.Close()
   749  	}()
   750  
   751  	s := sqltests.NewHistoryExecutionSignalRequestSuite(t, store)
   752  	suite.Run(t, s)
   753  }
   754  
   755  func TestSQLiteVisibilitySuite(t *testing.T) {
   756  	cfg := NewSQLiteMemoryConfig()
   757  	store, err := sql.NewSQLDB(sqlplugin.DbKindVisibility, cfg, resolver.NewNoopResolver())
   758  	if err != nil {
   759  		t.Fatalf("unable to create SQLite DB: %v", err)
   760  	}
   761  	defer func() {
   762  		_ = store.Close()
   763  	}()
   764  
   765  	s := sqltests.NewVisibilitySuite(t, store)
   766  	suite.Run(t, s)
   767  }
   768  
   769  func TestSQLiteFileNamespaceSuite(t *testing.T) {
   770  	cfg := NewSQLiteFileConfig()
   771  	SetupSQLiteDatabase(cfg)
   772  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   773  	if err != nil {
   774  		t.Fatalf("unable to create SQLite DB: %v", err)
   775  	}
   776  	defer os.Remove(cfg.DatabaseName)
   777  
   778  	s := sqltests.NewNamespaceSuite(t, store)
   779  	suite.Run(t, s)
   780  }
   781  
   782  func TestSQLiteFileQueueMessageSuite(t *testing.T) {
   783  	cfg := NewSQLiteFileConfig()
   784  	SetupSQLiteDatabase(cfg)
   785  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   786  	if err != nil {
   787  		t.Fatalf("unable to create SQLite DB: %v", err)
   788  	}
   789  	defer os.Remove(cfg.DatabaseName)
   790  
   791  	s := sqltests.NewQueueMessageSuite(t, store)
   792  	suite.Run(t, s)
   793  }
   794  
   795  func TestSQLiteFileQueueMetadataSuite(t *testing.T) {
   796  	cfg := NewSQLiteFileConfig()
   797  	SetupSQLiteDatabase(cfg)
   798  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   799  	if err != nil {
   800  		t.Fatalf("unable to create SQLite DB: %v", err)
   801  	}
   802  	defer os.Remove(cfg.DatabaseName)
   803  
   804  	s := sqltests.NewQueueMetadataSuite(t, store)
   805  	suite.Run(t, s)
   806  }
   807  
   808  func TestSQLiteFileMatchingTaskSuite(t *testing.T) {
   809  	cfg := NewSQLiteFileConfig()
   810  	SetupSQLiteDatabase(cfg)
   811  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   812  	if err != nil {
   813  		t.Fatalf("unable to create SQLite DB: %v", err)
   814  	}
   815  	defer os.Remove(cfg.DatabaseName)
   816  
   817  	s := sqltests.NewMatchingTaskSuite(t, store)
   818  	suite.Run(t, s)
   819  }
   820  
   821  func TestSQLiteFileMatchingTaskQueueSuite(t *testing.T) {
   822  	cfg := NewSQLiteFileConfig()
   823  	SetupSQLiteDatabase(cfg)
   824  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   825  	if err != nil {
   826  		t.Fatalf("unable to create SQLite DB: %v", err)
   827  	}
   828  	defer os.Remove(cfg.DatabaseName)
   829  
   830  	s := sqltests.NewMatchingTaskQueueSuite(t, store)
   831  	suite.Run(t, s)
   832  }
   833  
   834  func TestSQLiteFileHistoryShardSuite(t *testing.T) {
   835  	cfg := NewSQLiteFileConfig()
   836  	SetupSQLiteDatabase(cfg)
   837  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   838  	if err != nil {
   839  		t.Fatalf("unable to create SQLite DB: %v", err)
   840  	}
   841  	defer os.Remove(cfg.DatabaseName)
   842  
   843  	s := sqltests.NewHistoryShardSuite(t, store)
   844  	suite.Run(t, s)
   845  }
   846  
   847  func TestSQLiteFileHistoryNodeSuite(t *testing.T) {
   848  	cfg := NewSQLiteFileConfig()
   849  	SetupSQLiteDatabase(cfg)
   850  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   851  	if err != nil {
   852  		t.Fatalf("unable to create SQLite DB: %v", err)
   853  	}
   854  	defer os.Remove(cfg.DatabaseName)
   855  
   856  	s := sqltests.NewHistoryNodeSuite(t, store)
   857  	suite.Run(t, s)
   858  }
   859  
   860  func TestSQLiteFileHistoryTreeSuite(t *testing.T) {
   861  	cfg := NewSQLiteFileConfig()
   862  	SetupSQLiteDatabase(cfg)
   863  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   864  	if err != nil {
   865  		t.Fatalf("unable to create SQLite DB: %v", err)
   866  	}
   867  	defer os.Remove(cfg.DatabaseName)
   868  
   869  	s := sqltests.NewHistoryTreeSuite(t, store)
   870  	suite.Run(t, s)
   871  }
   872  
   873  func TestSQLiteFileHistoryCurrentExecutionSuite(t *testing.T) {
   874  	cfg := NewSQLiteFileConfig()
   875  	SetupSQLiteDatabase(cfg)
   876  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   877  	if err != nil {
   878  		t.Fatalf("unable to create SQLite DB: %v", err)
   879  	}
   880  	defer os.Remove(cfg.DatabaseName)
   881  
   882  	s := sqltests.NewHistoryCurrentExecutionSuite(t, store)
   883  	suite.Run(t, s)
   884  }
   885  
   886  func TestSQLiteFileHistoryExecutionSuite(t *testing.T) {
   887  	cfg := NewSQLiteFileConfig()
   888  	SetupSQLiteDatabase(cfg)
   889  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   890  	if err != nil {
   891  		t.Fatalf("unable to create SQLite DB: %v", err)
   892  	}
   893  	defer os.Remove(cfg.DatabaseName)
   894  
   895  	s := sqltests.NewHistoryExecutionSuite(t, store)
   896  	suite.Run(t, s)
   897  }
   898  
   899  func TestSQLiteFileHistoryTransferTaskSuite(t *testing.T) {
   900  	cfg := NewSQLiteFileConfig()
   901  	SetupSQLiteDatabase(cfg)
   902  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   903  	if err != nil {
   904  		t.Fatalf("unable to create SQLite DB: %v", err)
   905  	}
   906  	defer os.Remove(cfg.DatabaseName)
   907  
   908  	s := sqltests.NewHistoryTransferTaskSuite(t, store)
   909  	suite.Run(t, s)
   910  }
   911  
   912  func TestSQLiteFileHistoryTimerTaskSuite(t *testing.T) {
   913  	cfg := NewSQLiteFileConfig()
   914  	SetupSQLiteDatabase(cfg)
   915  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   916  	if err != nil {
   917  		t.Fatalf("unable to create SQLite DB: %v", err)
   918  	}
   919  	defer os.Remove(cfg.DatabaseName)
   920  
   921  	s := sqltests.NewHistoryTimerTaskSuite(t, store)
   922  	suite.Run(t, s)
   923  }
   924  
   925  func TestSQLiteFileHistoryReplicationTaskSuite(t *testing.T) {
   926  	cfg := NewSQLiteFileConfig()
   927  	SetupSQLiteDatabase(cfg)
   928  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   929  	if err != nil {
   930  		t.Fatalf("unable to create SQLite DB: %v", err)
   931  	}
   932  	defer os.Remove(cfg.DatabaseName)
   933  
   934  	s := sqltests.NewHistoryReplicationTaskSuite(t, store)
   935  	suite.Run(t, s)
   936  }
   937  
   938  func TestSQLiteFileHistoryVisibilityTaskSuite(t *testing.T) {
   939  	cfg := NewSQLiteFileConfig()
   940  	SetupSQLiteDatabase(cfg)
   941  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   942  	if err != nil {
   943  		t.Fatalf("unable to create SQLite DB: %v", err)
   944  	}
   945  	defer os.Remove(cfg.DatabaseName)
   946  
   947  	s := sqltests.NewHistoryVisibilityTaskSuite(t, store)
   948  	suite.Run(t, s)
   949  }
   950  
   951  func TestSQLiteFileHistoryReplicationDLQTaskSuite(t *testing.T) {
   952  	cfg := NewSQLiteFileConfig()
   953  	SetupSQLiteDatabase(cfg)
   954  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   955  	if err != nil {
   956  		t.Fatalf("unable to create SQLite DB: %v", err)
   957  	}
   958  	defer os.Remove(cfg.DatabaseName)
   959  
   960  	s := sqltests.NewHistoryReplicationDLQTaskSuite(t, store)
   961  	suite.Run(t, s)
   962  }
   963  
   964  func TestSQLiteFileHistoryExecutionBufferSuite(t *testing.T) {
   965  	cfg := NewSQLiteFileConfig()
   966  	SetupSQLiteDatabase(cfg)
   967  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   968  	if err != nil {
   969  		t.Fatalf("unable to create SQLite DB: %v", err)
   970  	}
   971  	defer os.Remove(cfg.DatabaseName)
   972  
   973  	s := sqltests.NewHistoryExecutionBufferSuite(t, store)
   974  	suite.Run(t, s)
   975  }
   976  
   977  func TestSQLiteFileHistoryExecutionActivitySuite(t *testing.T) {
   978  	cfg := NewSQLiteFileConfig()
   979  	SetupSQLiteDatabase(cfg)
   980  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   981  	if err != nil {
   982  		t.Fatalf("unable to create SQLite DB: %v", err)
   983  	}
   984  	defer os.Remove(cfg.DatabaseName)
   985  
   986  	s := sqltests.NewHistoryExecutionActivitySuite(t, store)
   987  	suite.Run(t, s)
   988  }
   989  
   990  func TestSQLiteFileHistoryExecutionChildWorkflowSuite(t *testing.T) {
   991  	cfg := NewSQLiteFileConfig()
   992  	SetupSQLiteDatabase(cfg)
   993  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   994  	if err != nil {
   995  		t.Fatalf("unable to create SQLite DB: %v", err)
   996  	}
   997  	defer os.Remove(cfg.DatabaseName)
   998  
   999  	s := sqltests.NewHistoryExecutionChildWorkflowSuite(t, store)
  1000  	suite.Run(t, s)
  1001  }
  1002  
  1003  func TestSQLiteFileHistoryExecutionTimerSuite(t *testing.T) {
  1004  	cfg := NewSQLiteFileConfig()
  1005  	SetupSQLiteDatabase(cfg)
  1006  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
  1007  	if err != nil {
  1008  		t.Fatalf("unable to create SQLite DB: %v", err)
  1009  	}
  1010  	defer os.Remove(cfg.DatabaseName)
  1011  
  1012  	s := sqltests.NewHistoryExecutionTimerSuite(t, store)
  1013  	suite.Run(t, s)
  1014  }
  1015  
  1016  func TestSQLiteFileHistoryExecutionRequestCancelSuite(t *testing.T) {
  1017  	cfg := NewSQLiteFileConfig()
  1018  	SetupSQLiteDatabase(cfg)
  1019  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
  1020  	if err != nil {
  1021  		t.Fatalf("unable to create SQLite DB: %v", err)
  1022  	}
  1023  	defer os.Remove(cfg.DatabaseName)
  1024  
  1025  	s := sqltests.NewHistoryExecutionRequestCancelSuite(t, store)
  1026  	suite.Run(t, s)
  1027  }
  1028  
  1029  func TestSQLiteFileHistoryExecutionSignalSuite(t *testing.T) {
  1030  	cfg := NewSQLiteFileConfig()
  1031  	SetupSQLiteDatabase(cfg)
  1032  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
  1033  	if err != nil {
  1034  		t.Fatalf("unable to create SQLite DB: %v", err)
  1035  	}
  1036  	defer os.Remove(cfg.DatabaseName)
  1037  
  1038  	s := sqltests.NewHistoryExecutionSignalSuite(t, store)
  1039  	suite.Run(t, s)
  1040  }
  1041  
  1042  func TestSQLiteFileHistoryExecutionSignalRequestSuite(t *testing.T) {
  1043  	cfg := NewSQLiteFileConfig()
  1044  	SetupSQLiteDatabase(cfg)
  1045  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
  1046  	if err != nil {
  1047  		t.Fatalf("unable to create SQLite DB: %v", err)
  1048  	}
  1049  	defer os.Remove(cfg.DatabaseName)
  1050  
  1051  	s := sqltests.NewHistoryExecutionSignalRequestSuite(t, store)
  1052  	suite.Run(t, s)
  1053  }
  1054  
  1055  func TestSQLiteFileVisibilitySuite(t *testing.T) {
  1056  	cfg := NewSQLiteFileConfig()
  1057  	SetupSQLiteDatabase(cfg)
  1058  	store, err := sql.NewSQLDB(sqlplugin.DbKindVisibility, cfg, resolver.NewNoopResolver())
  1059  	if err != nil {
  1060  		t.Fatalf("unable to create SQLite DB: %v", err)
  1061  	}
  1062  	defer os.Remove(cfg.DatabaseName)
  1063  
  1064  	s := sqltests.NewVisibilitySuite(t, store)
  1065  	suite.Run(t, s)
  1066  }
  1067  
  1068  func TestSQLiteQueueV2(t *testing.T) {
  1069  	cfg := NewSQLiteFileConfig()
  1070  	SetupSQLiteDatabase(cfg)
  1071  	logger := log.NewNoopLogger()
  1072  	factory := sql.NewFactory(
  1073  		*cfg,
  1074  		resolver.NewNoopResolver(),
  1075  		testSQLiteClusterName,
  1076  		logger,
  1077  	)
  1078  	t.Cleanup(func() {
  1079  		factory.Close()
  1080  		assert.NoError(t, os.Remove(cfg.DatabaseName))
  1081  	})
  1082  	RunQueueV2TestSuiteForSQL(t, factory)
  1083  }