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