go.temporal.io/server@v1.23.0/common/persistence/tests/mysql_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  	"testing"
    29  
    30  	"github.com/stretchr/testify/suite"
    31  
    32  	persistencetests "go.temporal.io/server/common/persistence/persistence-tests"
    33  	"go.temporal.io/server/common/persistence/serialization"
    34  	"go.temporal.io/server/common/persistence/sql"
    35  	"go.temporal.io/server/common/persistence/sql/sqlplugin"
    36  	_ "go.temporal.io/server/common/persistence/sql/sqlplugin/mysql"
    37  	sqltests "go.temporal.io/server/common/persistence/sql/sqlplugin/tests"
    38  	"go.temporal.io/server/common/resolver"
    39  )
    40  
    41  func TestMySQLShardStoreSuite(t *testing.T) {
    42  	testData, tearDown := setUpMySQLTest(t)
    43  	defer tearDown()
    44  
    45  	shardStore, err := testData.Factory.NewShardStore()
    46  	if err != nil {
    47  		t.Fatalf("unable to create MySQL DB: %v", err)
    48  	}
    49  
    50  	s := NewShardSuite(
    51  		t,
    52  		shardStore,
    53  		serialization.NewSerializer(),
    54  		testData.Logger,
    55  	)
    56  	suite.Run(t, s)
    57  }
    58  
    59  func TestMySQLExecutionMutableStateStoreSuite(t *testing.T) {
    60  	testData, tearDown := setUpMySQLTest(t)
    61  	defer tearDown()
    62  
    63  	shardStore, err := testData.Factory.NewShardStore()
    64  	if err != nil {
    65  		t.Fatalf("unable to create MySQL DB: %v", err)
    66  	}
    67  	executionStore, err := testData.Factory.NewExecutionStore()
    68  	if err != nil {
    69  		t.Fatalf("unable to create MySQL DB: %v", err)
    70  	}
    71  
    72  	s := NewExecutionMutableStateSuite(
    73  		t,
    74  		shardStore,
    75  		executionStore,
    76  		serialization.NewSerializer(),
    77  		testData.Logger,
    78  	)
    79  	suite.Run(t, s)
    80  }
    81  
    82  func TestMySQLExecutionMutableStateTaskStoreSuite(t *testing.T) {
    83  	testData, tearDown := setUpMySQLTest(t)
    84  	defer tearDown()
    85  
    86  	shardStore, err := testData.Factory.NewShardStore()
    87  	if err != nil {
    88  		t.Fatalf("unable to create MySQL DB: %v", err)
    89  	}
    90  	executionStore, err := testData.Factory.NewExecutionStore()
    91  	if err != nil {
    92  		t.Fatalf("unable to create MySQL DB: %v", err)
    93  	}
    94  
    95  	s := NewExecutionMutableStateTaskSuite(
    96  		t,
    97  		shardStore,
    98  		executionStore,
    99  		serialization.NewSerializer(),
   100  		testData.Logger,
   101  	)
   102  	suite.Run(t, s)
   103  }
   104  
   105  func TestMySQLHistoryStoreSuite(t *testing.T) {
   106  	testData, tearDown := setUpMySQLTest(t)
   107  	defer tearDown()
   108  
   109  	store, err := testData.Factory.NewExecutionStore()
   110  	if err != nil {
   111  		t.Fatalf("unable to create MySQL DB: %v", err)
   112  	}
   113  
   114  	s := NewHistoryEventsSuite(t, store, testData.Logger)
   115  	suite.Run(t, s)
   116  }
   117  
   118  func TestMySQLTaskQueueSuite(t *testing.T) {
   119  	testData, tearDown := setUpMySQLTest(t)
   120  	defer tearDown()
   121  
   122  	taskQueueStore, err := testData.Factory.NewTaskStore()
   123  	if err != nil {
   124  		t.Fatalf("unable to create MySQL DB: %v", err)
   125  	}
   126  	defer func() {
   127  		testData.Factory.Close()
   128  		TearDownMySQLDatabase(testData.Cfg)
   129  	}()
   130  
   131  	s := NewTaskQueueSuite(t, taskQueueStore, testData.Logger)
   132  	suite.Run(t, s)
   133  }
   134  
   135  func TestMySQLTaskQueueTaskSuite(t *testing.T) {
   136  	testData, tearDown := setUpMySQLTest(t)
   137  	defer tearDown()
   138  
   139  	taskQueueStore, err := testData.Factory.NewTaskStore()
   140  	if err != nil {
   141  		t.Fatalf("unable to create MySQL DB: %v", err)
   142  	}
   143  
   144  	s := NewTaskQueueTaskSuite(t, taskQueueStore, testData.Logger)
   145  	suite.Run(t, s)
   146  }
   147  
   148  func TestMySQLVisibilityPersistenceSuite(t *testing.T) {
   149  	s := &VisibilityPersistenceSuite{
   150  		TestBase: persistencetests.NewTestBaseWithSQL(persistencetests.GetMySQLTestClusterOption()),
   151  	}
   152  	suite.Run(t, s)
   153  }
   154  
   155  func TestMySQL8VisibilityPersistenceSuite(t *testing.T) {
   156  	s := &VisibilityPersistenceSuite{
   157  		TestBase: persistencetests.NewTestBaseWithSQL(persistencetests.GetMySQL8TestClusterOption()),
   158  	}
   159  	suite.Run(t, s)
   160  }
   161  
   162  // TODO: Merge persistence-tests into the tests directory.
   163  
   164  func TestMySQLHistoryV2PersistenceSuite(t *testing.T) {
   165  	s := new(persistencetests.HistoryV2PersistenceSuite)
   166  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetMySQLTestClusterOption())
   167  	s.TestBase.Setup(nil)
   168  	suite.Run(t, s)
   169  }
   170  
   171  func TestMySQLMetadataPersistenceSuiteV2(t *testing.T) {
   172  	s := new(persistencetests.MetadataPersistenceSuiteV2)
   173  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetMySQLTestClusterOption())
   174  	s.TestBase.Setup(nil)
   175  	suite.Run(t, s)
   176  }
   177  
   178  func TestMySQLQueuePersistence(t *testing.T) {
   179  	s := new(persistencetests.QueuePersistenceSuite)
   180  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetMySQLTestClusterOption())
   181  	s.TestBase.Setup(nil)
   182  	suite.Run(t, s)
   183  }
   184  
   185  func TestMySQLClusterMetadataPersistence(t *testing.T) {
   186  	s := new(persistencetests.ClusterMetadataManagerSuite)
   187  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetMySQLTestClusterOption())
   188  	s.TestBase.Setup(nil)
   189  	suite.Run(t, s)
   190  }
   191  
   192  func TestMySQL8HistoryV2PersistenceSuite(t *testing.T) {
   193  	s := new(persistencetests.HistoryV2PersistenceSuite)
   194  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetMySQL8TestClusterOption())
   195  	s.TestBase.Setup(nil)
   196  	suite.Run(t, s)
   197  }
   198  
   199  func TestMySQL8MetadataPersistenceSuiteV2(t *testing.T) {
   200  	s := new(persistencetests.MetadataPersistenceSuiteV2)
   201  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetMySQL8TestClusterOption())
   202  	s.TestBase.Setup(nil)
   203  	suite.Run(t, s)
   204  }
   205  
   206  func TestMySQL8QueuePersistence(t *testing.T) {
   207  	s := new(persistencetests.QueuePersistenceSuite)
   208  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetMySQL8TestClusterOption())
   209  	s.TestBase.Setup(nil)
   210  	suite.Run(t, s)
   211  }
   212  
   213  func TestMySQL8ClusterMetadataPersistence(t *testing.T) {
   214  	s := new(persistencetests.ClusterMetadataManagerSuite)
   215  	s.TestBase = persistencetests.NewTestBaseWithSQL(persistencetests.GetMySQL8TestClusterOption())
   216  	s.TestBase.Setup(nil)
   217  	suite.Run(t, s)
   218  }
   219  
   220  // SQL Store tests
   221  
   222  func TestMySQLNamespaceSuite(t *testing.T) {
   223  	cfg := NewMySQLConfig()
   224  	SetupMySQLDatabase(cfg)
   225  	SetupMySQLSchema(cfg)
   226  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   227  	if err != nil {
   228  		t.Fatalf("unable to create MySQL DB: %v", err)
   229  	}
   230  	defer func() {
   231  		_ = store.Close()
   232  		TearDownMySQLDatabase(cfg)
   233  	}()
   234  
   235  	s := sqltests.NewNamespaceSuite(t, store)
   236  	suite.Run(t, s)
   237  }
   238  
   239  func TestMySQLQueueMessageSuite(t *testing.T) {
   240  	cfg := NewMySQLConfig()
   241  	SetupMySQLDatabase(cfg)
   242  	SetupMySQLSchema(cfg)
   243  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   244  	if err != nil {
   245  		t.Fatalf("unable to create MySQL DB: %v", err)
   246  	}
   247  	defer func() {
   248  		_ = store.Close()
   249  		TearDownMySQLDatabase(cfg)
   250  	}()
   251  
   252  	s := sqltests.NewQueueMessageSuite(t, store)
   253  	suite.Run(t, s)
   254  }
   255  
   256  func TestMySQLQueueMetadataSuite(t *testing.T) {
   257  	cfg := NewMySQLConfig()
   258  	SetupMySQLDatabase(cfg)
   259  	SetupMySQLSchema(cfg)
   260  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   261  	if err != nil {
   262  		t.Fatalf("unable to create MySQL DB: %v", err)
   263  	}
   264  	defer func() {
   265  		_ = store.Close()
   266  		TearDownMySQLDatabase(cfg)
   267  	}()
   268  
   269  	s := sqltests.NewQueueMetadataSuite(t, store)
   270  	suite.Run(t, s)
   271  }
   272  
   273  func TestMySQLMatchingTaskSuite(t *testing.T) {
   274  	cfg := NewMySQLConfig()
   275  	SetupMySQLDatabase(cfg)
   276  	SetupMySQLSchema(cfg)
   277  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   278  	if err != nil {
   279  		t.Fatalf("unable to create MySQL DB: %v", err)
   280  	}
   281  	defer func() {
   282  		_ = store.Close()
   283  		TearDownMySQLDatabase(cfg)
   284  	}()
   285  
   286  	s := sqltests.NewMatchingTaskSuite(t, store)
   287  	suite.Run(t, s)
   288  }
   289  
   290  func TestMySQLMatchingTaskQueueSuite(t *testing.T) {
   291  	cfg := NewMySQLConfig()
   292  	SetupMySQLDatabase(cfg)
   293  	SetupMySQLSchema(cfg)
   294  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   295  	if err != nil {
   296  		t.Fatalf("unable to create MySQL DB: %v", err)
   297  	}
   298  	defer func() {
   299  		_ = store.Close()
   300  		TearDownMySQLDatabase(cfg)
   301  	}()
   302  
   303  	s := sqltests.NewMatchingTaskQueueSuite(t, store)
   304  	suite.Run(t, s)
   305  }
   306  
   307  func TestMySQLHistoryShardSuite(t *testing.T) {
   308  	cfg := NewMySQLConfig()
   309  	SetupMySQLDatabase(cfg)
   310  	SetupMySQLSchema(cfg)
   311  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   312  	if err != nil {
   313  		t.Fatalf("unable to create MySQL DB: %v", err)
   314  	}
   315  	defer func() {
   316  		_ = store.Close()
   317  		TearDownMySQLDatabase(cfg)
   318  	}()
   319  
   320  	s := sqltests.NewHistoryShardSuite(t, store)
   321  	suite.Run(t, s)
   322  }
   323  
   324  func TestMySQLHistoryNodeSuite(t *testing.T) {
   325  	cfg := NewMySQLConfig()
   326  	SetupMySQLDatabase(cfg)
   327  	SetupMySQLSchema(cfg)
   328  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   329  	if err != nil {
   330  		t.Fatalf("unable to create MySQL DB: %v", err)
   331  	}
   332  	defer func() {
   333  		_ = store.Close()
   334  		TearDownMySQLDatabase(cfg)
   335  	}()
   336  
   337  	s := sqltests.NewHistoryNodeSuite(t, store)
   338  	suite.Run(t, s)
   339  }
   340  
   341  func TestMySQLHistoryTreeSuite(t *testing.T) {
   342  	cfg := NewMySQLConfig()
   343  	SetupMySQLDatabase(cfg)
   344  	SetupMySQLSchema(cfg)
   345  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   346  	if err != nil {
   347  		t.Fatalf("unable to create MySQL DB: %v", err)
   348  	}
   349  	defer func() {
   350  		_ = store.Close()
   351  		TearDownMySQLDatabase(cfg)
   352  	}()
   353  
   354  	s := sqltests.NewHistoryTreeSuite(t, store)
   355  	suite.Run(t, s)
   356  }
   357  
   358  func TestMySQLHistoryCurrentExecutionSuite(t *testing.T) {
   359  	cfg := NewMySQLConfig()
   360  	SetupMySQLDatabase(cfg)
   361  	SetupMySQLSchema(cfg)
   362  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   363  	if err != nil {
   364  		t.Fatalf("unable to create MySQL DB: %v", err)
   365  	}
   366  	defer func() {
   367  		_ = store.Close()
   368  		TearDownMySQLDatabase(cfg)
   369  	}()
   370  
   371  	s := sqltests.NewHistoryCurrentExecutionSuite(t, store)
   372  	suite.Run(t, s)
   373  }
   374  
   375  func TestMySQLHistoryExecutionSuite(t *testing.T) {
   376  	cfg := NewMySQLConfig()
   377  	SetupMySQLDatabase(cfg)
   378  	SetupMySQLSchema(cfg)
   379  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   380  	if err != nil {
   381  		t.Fatalf("unable to create MySQL DB: %v", err)
   382  	}
   383  	defer func() {
   384  		_ = store.Close()
   385  		TearDownMySQLDatabase(cfg)
   386  	}()
   387  
   388  	s := sqltests.NewHistoryExecutionSuite(t, store)
   389  	suite.Run(t, s)
   390  }
   391  
   392  func TestMySQLHistoryTransferTaskSuite(t *testing.T) {
   393  	cfg := NewMySQLConfig()
   394  	SetupMySQLDatabase(cfg)
   395  	SetupMySQLSchema(cfg)
   396  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   397  	if err != nil {
   398  		t.Fatalf("unable to create MySQL DB: %v", err)
   399  	}
   400  	defer func() {
   401  		_ = store.Close()
   402  		TearDownMySQLDatabase(cfg)
   403  	}()
   404  
   405  	s := sqltests.NewHistoryTransferTaskSuite(t, store)
   406  	suite.Run(t, s)
   407  }
   408  
   409  func TestMySQLHistoryTimerTaskSuite(t *testing.T) {
   410  	cfg := NewMySQLConfig()
   411  	SetupMySQLDatabase(cfg)
   412  	SetupMySQLSchema(cfg)
   413  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   414  	if err != nil {
   415  		t.Fatalf("unable to create MySQL DB: %v", err)
   416  	}
   417  	defer func() {
   418  		_ = store.Close()
   419  		TearDownMySQLDatabase(cfg)
   420  	}()
   421  
   422  	s := sqltests.NewHistoryTimerTaskSuite(t, store)
   423  	suite.Run(t, s)
   424  }
   425  
   426  func TestMySQLHistoryReplicationTaskSuite(t *testing.T) {
   427  	cfg := NewMySQLConfig()
   428  	SetupMySQLDatabase(cfg)
   429  	SetupMySQLSchema(cfg)
   430  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   431  	if err != nil {
   432  		t.Fatalf("unable to create MySQL DB: %v", err)
   433  	}
   434  	defer func() {
   435  		_ = store.Close()
   436  		TearDownMySQLDatabase(cfg)
   437  	}()
   438  
   439  	s := sqltests.NewHistoryReplicationTaskSuite(t, store)
   440  	suite.Run(t, s)
   441  }
   442  
   443  func TestMySQLHistoryVisibilityTaskSuite(t *testing.T) {
   444  	cfg := NewMySQLConfig()
   445  	SetupMySQLDatabase(cfg)
   446  	SetupMySQLSchema(cfg)
   447  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   448  	if err != nil {
   449  		t.Fatalf("unable to create MySQL DB: %v", err)
   450  	}
   451  	defer func() {
   452  		_ = store.Close()
   453  		TearDownMySQLDatabase(cfg)
   454  	}()
   455  
   456  	s := sqltests.NewHistoryVisibilityTaskSuite(t, store)
   457  	suite.Run(t, s)
   458  }
   459  
   460  func TestMySQLHistoryReplicationDLQTaskSuite(t *testing.T) {
   461  	cfg := NewMySQLConfig()
   462  	SetupMySQLDatabase(cfg)
   463  	SetupMySQLSchema(cfg)
   464  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   465  	if err != nil {
   466  		t.Fatalf("unable to create MySQL DB: %v", err)
   467  	}
   468  	defer func() {
   469  		_ = store.Close()
   470  		TearDownMySQLDatabase(cfg)
   471  	}()
   472  
   473  	s := sqltests.NewHistoryReplicationDLQTaskSuite(t, store)
   474  	suite.Run(t, s)
   475  }
   476  
   477  func TestMySQLHistoryExecutionBufferSuite(t *testing.T) {
   478  	cfg := NewMySQLConfig()
   479  	SetupMySQLDatabase(cfg)
   480  	SetupMySQLSchema(cfg)
   481  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   482  	if err != nil {
   483  		t.Fatalf("unable to create MySQL DB: %v", err)
   484  	}
   485  	defer func() {
   486  		_ = store.Close()
   487  		TearDownMySQLDatabase(cfg)
   488  	}()
   489  
   490  	s := sqltests.NewHistoryExecutionBufferSuite(t, store)
   491  	suite.Run(t, s)
   492  }
   493  
   494  func TestMySQLHistoryExecutionActivitySuite(t *testing.T) {
   495  	cfg := NewMySQLConfig()
   496  	SetupMySQLDatabase(cfg)
   497  	SetupMySQLSchema(cfg)
   498  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   499  	if err != nil {
   500  		t.Fatalf("unable to create MySQL DB: %v", err)
   501  	}
   502  	defer func() {
   503  		_ = store.Close()
   504  		TearDownMySQLDatabase(cfg)
   505  	}()
   506  
   507  	s := sqltests.NewHistoryExecutionActivitySuite(t, store)
   508  	suite.Run(t, s)
   509  }
   510  
   511  func TestMySQLHistoryExecutionChildWorkflowSuite(t *testing.T) {
   512  	cfg := NewMySQLConfig()
   513  	SetupMySQLDatabase(cfg)
   514  	SetupMySQLSchema(cfg)
   515  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   516  	if err != nil {
   517  		t.Fatalf("unable to create MySQL DB: %v", err)
   518  	}
   519  	defer func() {
   520  		_ = store.Close()
   521  		TearDownMySQLDatabase(cfg)
   522  	}()
   523  
   524  	s := sqltests.NewHistoryExecutionChildWorkflowSuite(t, store)
   525  	suite.Run(t, s)
   526  }
   527  
   528  func TestMySQLHistoryExecutionTimerSuite(t *testing.T) {
   529  	cfg := NewMySQLConfig()
   530  	SetupMySQLDatabase(cfg)
   531  	SetupMySQLSchema(cfg)
   532  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   533  	if err != nil {
   534  		t.Fatalf("unable to create MySQL DB: %v", err)
   535  	}
   536  	defer func() {
   537  		_ = store.Close()
   538  		TearDownMySQLDatabase(cfg)
   539  	}()
   540  
   541  	s := sqltests.NewHistoryExecutionTimerSuite(t, store)
   542  	suite.Run(t, s)
   543  }
   544  
   545  func TestMySQLHistoryExecutionRequestCancelSuite(t *testing.T) {
   546  	cfg := NewMySQLConfig()
   547  	SetupMySQLDatabase(cfg)
   548  	SetupMySQLSchema(cfg)
   549  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   550  	if err != nil {
   551  		t.Fatalf("unable to create MySQL DB: %v", err)
   552  	}
   553  	defer func() {
   554  		_ = store.Close()
   555  		TearDownMySQLDatabase(cfg)
   556  	}()
   557  
   558  	s := sqltests.NewHistoryExecutionRequestCancelSuite(t, store)
   559  	suite.Run(t, s)
   560  }
   561  
   562  func TestMySQLHistoryExecutionSignalSuite(t *testing.T) {
   563  	cfg := NewMySQLConfig()
   564  	SetupMySQLDatabase(cfg)
   565  	SetupMySQLSchema(cfg)
   566  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   567  	if err != nil {
   568  		t.Fatalf("unable to create MySQL DB: %v", err)
   569  	}
   570  	defer func() {
   571  		_ = store.Close()
   572  		TearDownMySQLDatabase(cfg)
   573  	}()
   574  
   575  	s := sqltests.NewHistoryExecutionSignalSuite(t, store)
   576  	suite.Run(t, s)
   577  }
   578  
   579  func TestMySQLHistoryExecutionSignalRequestSuite(t *testing.T) {
   580  	cfg := NewMySQLConfig()
   581  	SetupMySQLDatabase(cfg)
   582  	SetupMySQLSchema(cfg)
   583  	store, err := sql.NewSQLDB(sqlplugin.DbKindMain, cfg, resolver.NewNoopResolver())
   584  	if err != nil {
   585  		t.Fatalf("unable to create MySQL DB: %v", err)
   586  	}
   587  	defer func() {
   588  		_ = store.Close()
   589  		TearDownMySQLDatabase(cfg)
   590  	}()
   591  
   592  	s := sqltests.NewHistoryExecutionSignalRequestSuite(t, store)
   593  	suite.Run(t, s)
   594  }
   595  
   596  func TestMySQLVisibilitySuite(t *testing.T) {
   597  	cfg := NewMySQLConfig()
   598  	SetupMySQLDatabase(cfg)
   599  	SetupMySQLSchema(cfg)
   600  	store, err := sql.NewSQLDB(sqlplugin.DbKindVisibility, cfg, resolver.NewNoopResolver())
   601  	if err != nil {
   602  		t.Fatalf("unable to create MySQL DB: %v", err)
   603  	}
   604  	defer func() {
   605  		_ = store.Close()
   606  		TearDownMySQLDatabase(cfg)
   607  	}()
   608  
   609  	s := sqltests.NewVisibilitySuite(t, store)
   610  	suite.Run(t, s)
   611  }
   612  
   613  func TestMySQLClosedConnectionError(t *testing.T) {
   614  	testData, tearDown := setUpMySQLTest(t)
   615  	defer tearDown()
   616  
   617  	s := newConnectionSuite(t, testData.Factory)
   618  	suite.Run(t, s)
   619  }
   620  
   621  func TestMySQLQueueV2(t *testing.T) {
   622  	testData, tearDown := setUpMySQLTest(t)
   623  	t.Cleanup(tearDown)
   624  	RunQueueV2TestSuiteForSQL(t, testData.Factory)
   625  }