This is an automated email from the ASF dual-hosted git repository.

djwang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry-backup.git


The following commit(s) were added to refs/heads/main by this push:
     new 4a23f302 feat(testing): Improve multi-DB compatibility in unit tests
4a23f302 is described below

commit 4a23f3025993abbca3ec9e4f09717bdf4b0c4ecf
Author: Robert Mu <[email protected]>
AuthorDate: Mon Oct 13 21:59:30 2025 +0800

    feat(testing): Improve multi-DB compatibility in unit tests
    
    Refactor the unit test framework to properly support running tests
    against different database types (GPDB and CBDB) and versions.
    
    - Introduce `TEST_DB_TYPE` and rename `TEST_GPDB_VERSION` to
      `TEST_DB_VERSION` in the Makefile for clearer test configuration.
    
    - Update test utilities to use these new environment variables to
      set up the correct database context for each test run.
    
    - Dynamically generate test data in `restore/wrappers_test.go` to
      prevent version compatibility panics when running the full
      test suite.
    
    This makes our testing more robust and easier to maintain.
    
    Fixes #57
---
 Makefile                 |   9 ++--
 restore/wrappers_test.go | 133 ++++++++++++++++++++++++++---------------------
 testutils/functions.go   |  21 ++++++--
 3 files changed, 96 insertions(+), 67 deletions(-)

diff --git a/Makefile b/Makefile
index 431b7ab6..b797fe8d 100644
--- a/Makefile
+++ b/Makefile
@@ -63,12 +63,13 @@ lint : $(GOLANG_LINTER)
                golangci-lint run --tests=false
 
 unit : $(GINKGO)
-       ginkgo $(GINKGO_FLAGS) $(SUBDIRS_HAS_UNIT) 2>&1
+       TEST_DB_TYPE=CBDB TEST_DB_VERSION=2.999.0 ginkgo $(GINKGO_FLAGS) 
$(SUBDIRS_HAS_UNIT) 2>&1
 
 unit_all_gpdb_versions : $(GINKGO)
-               TEST_GPDB_VERSION=5.999.0 ginkgo $(GINKGO_FLAGS) 
$(SUBDIRS_HAS_UNIT) 2>&1
-               TEST_GPDB_VERSION=6.999.0 ginkgo $(GINKGO_FLAGS) 
$(SUBDIRS_HAS_UNIT) 2>&1
-               TEST_GPDB_VERSION=7.999.0 ginkgo $(GINKGO_FLAGS) 
$(SUBDIRS_HAS_UNIT) 2>&1 # GPDB main
+       TEST_DB_TYPE=CBDB TEST_DB_VERSION=2.999.0 ginkgo $(GINKGO_FLAGS) 
$(SUBDIRS_HAS_UNIT) 2>&1
+       TEST_DB_TYPE=GPDB TEST_DB_VERSION=5.999.0 ginkgo $(GINKGO_FLAGS) 
$(SUBDIRS_HAS_UNIT) 2>&1
+       TEST_DB_TYPE=GPDB TEST_DB_VERSION=6.999.0 ginkgo $(GINKGO_FLAGS) 
$(SUBDIRS_HAS_UNIT) 2>&1
+       TEST_DB_TYPE=GPDB TEST_DB_VERSION=7.999.0 ginkgo $(GINKGO_FLAGS) 
$(SUBDIRS_HAS_UNIT) 2>&1 # GPDB main
 
 integration : $(GINKGO)
        ginkgo $(GINKGO_FLAGS) integration 2>&1
diff --git a/restore/wrappers_test.go b/restore/wrappers_test.go
index 5ddccb76..88eea0cd 100644
--- a/restore/wrappers_test.go
+++ b/restore/wrappers_test.go
@@ -1,6 +1,7 @@
 package restore_test
 
 import (
+       "fmt"
        "io/ioutil"
        "os"
        "path/filepath"
@@ -135,64 +136,82 @@ options:
   pgport: 1234
 `
 
-               sampleBackupHistConfig1 := history.BackupConfig{
-                       BackupDir:             "",
-                       BackupVersion:         "1.11.0+dev.28.g10571fdxs",
-                       Compressed:            false,
-                       DatabaseName:          "plugin_test_db",
-                       DatabaseVersion:       "4.3.99.0+dev.18.gb29642fb22 
build dev",
-                       DataOnly:              false,
-                       DateDeleted:           "",
-                       ExcludeRelations:      make([]string, 0),
-                       ExcludeSchemaFiltered: false,
-                       ExcludeSchemas:        make([]string, 0),
-                       ExcludeTableFiltered:  false,
-                       IncludeRelations:      make([]string, 0),
-                       IncludeSchemaFiltered: false,
-                       IncludeSchemas:        make([]string, 0),
-                       IncludeTableFiltered:  false,
-                       Incremental:           false,
-                       LeafPartitionData:     false,
-                       MetadataOnly:          false,
-                       Plugin:                
"/Users/pivotal/workspace/gp-backup-ddboost-plugin/gpbackup_ddboost_plugin",
-                       RestorePlan:           
[]history.RestorePlanEntry{{Timestamp: "20170415154408", TableFQNs: 
[]string{"public.test_table"}}},
-                       SingleDataFile:        false,
-                       Timestamp:             "20170415154408",
-                       WithStatistics:        false,
-               }
-               sampleBackupHistConfig2 := history.BackupConfig{
-                       BackupDir:             "",
-                       BackupVersion:         "1.11.0+dev.28.g10571fd",
-                       Compressed:            false,
-                       DatabaseName:          "plugin_test_db",
-                       DatabaseVersion:       "4.3.99.0+dev.18.gb29642fb22 
build dev",
-                       DataOnly:              false,
-                       DateDeleted:           "",
-                       ExcludeRelations:      make([]string, 0),
-                       ExcludeSchemaFiltered: false,
-                       ExcludeSchemas:        make([]string, 0),
-                       ExcludeTableFiltered:  false,
-                       IncludeRelations:      make([]string, 0),
-                       IncludeSchemaFiltered: false,
-                       IncludeSchemas:        make([]string, 0),
-                       IncludeTableFiltered:  false,
-                       Incremental:           false,
-                       LeafPartitionData:     false,
-                       MetadataOnly:          false,
-                       Plugin:                
"/Users/pivotal/workspace/gp-backup-ddboost-plugin/gpbackup_ddboost_plugin",
-                       PluginVersion:         "99.99.9999",
-                       RestorePlan:           
[]history.RestorePlanEntry{{Timestamp: "20180415154238", TableFQNs: 
[]string{"public.test_table"}}},
-                       SingleDataFile:        true,
-                       Timestamp:             "20180415154238",
-                       WithStatistics:        false,
-               }
+               var sampleBackupHistConfig1 history.BackupConfig
+               var sampleBackupHistConfig2 history.BackupConfig
+               var sampleBackupConfig string
+               var executor testhelper.TestExecutor
+               var testConfigPath = "/tmp/unit_test_plugin_config.yml"
+               var oldWd string
+               var mdd string
+               var tempDir string
 
-               sampleBackupConfig := `
+               BeforeEach(func() {
+                       // Set up the backup history configurations.
+                       // The DatabaseVersion is set dynamically based on the 
current test database type.
+                       var dbVersion string
+                       if connectionPool.Version.IsCBDB() {
+                               dbVersion = "2.0.0.0+dev.18.gb29642fb22 build 
dev"
+                       } else {
+                               dbVersion = "4.3.99.0+dev.18.gb29642fb22 build 
dev"
+                       }
+                       sampleBackupHistConfig1 = history.BackupConfig{
+                               BackupDir:             "",
+                               BackupVersion:         
"1.11.0+dev.28.g10571fdxs",
+                               Compressed:            false,
+                               DatabaseName:          "plugin_test_db",
+                               DatabaseVersion:       dbVersion,
+                               DataOnly:              false,
+                               DateDeleted:           "",
+                               ExcludeRelations:      make([]string, 0),
+                               ExcludeSchemaFiltered: false,
+                               ExcludeSchemas:        make([]string, 0),
+                               ExcludeTableFiltered:  false,
+                               IncludeRelations:      make([]string, 0),
+                               IncludeSchemaFiltered: false,
+                               IncludeSchemas:        make([]string, 0),
+                               IncludeTableFiltered:  false,
+                               Incremental:           false,
+                               LeafPartitionData:     false,
+                               MetadataOnly:          false,
+                               Plugin:                
"/Users/pivotal/workspace/gp-backup-ddboost-plugin/gpbackup_ddboost_plugin",
+                               RestorePlan:           
[]history.RestorePlanEntry{{Timestamp: "20170415154408", TableFQNs: 
[]string{"public.test_table"}}},
+                               SingleDataFile:        false,
+                               Timestamp:             "20170415154408",
+                               WithStatistics:        false,
+                       }
+                       sampleBackupHistConfig2 = history.BackupConfig{
+                               BackupDir:             "",
+                               BackupVersion:         "1.11.0+dev.28.g10571fd",
+                               Compressed:            false,
+                               DatabaseName:          "plugin_test_db",
+                               DatabaseVersion:       dbVersion,
+                               DataOnly:              false,
+                               DateDeleted:           "",
+                               ExcludeRelations:      make([]string, 0),
+                               ExcludeSchemaFiltered: false,
+                               ExcludeSchemas:        make([]string, 0),
+                               ExcludeTableFiltered:  false,
+                               IncludeRelations:      make([]string, 0),
+                               IncludeSchemaFiltered: false,
+                               IncludeSchemas:        make([]string, 0),
+                               IncludeTableFiltered:  false,
+                               Incremental:           false,
+                               LeafPartitionData:     false,
+                               MetadataOnly:          false,
+                               Plugin:                
"/Users/pivotal/workspace/gp-backup-ddboost-plugin/gpbackup_ddboost_plugin",
+                               PluginVersion:         "99.99.9999",
+                               RestorePlan:           
[]history.RestorePlanEntry{{Timestamp: "20180415154238", TableFQNs: 
[]string{"public.test_table"}}},
+                               SingleDataFile:        true,
+                               Timestamp:             "20180415154238",
+                               WithStatistics:        false,
+                       }
+
+                       sampleBackupConfig = fmt.Sprintf(`
 backupdir: ""
 backupversion: 1.11.0+dev.28.g10571fd
 compressed: false
 databasename: plugin_test_db
-databaseversion: 4.3.99.0+dev.18.gb29642fb22 build dev
+databaseversion: %s
 dataonly: false
 deleted: false
 excluderelations: []
@@ -215,14 +234,8 @@ tablefqns:
 singledatafile: true
 timestamp: "20180415154238"
 withstatistics: false
-`
-               var executor testhelper.TestExecutor
-               var testConfigPath = "/tmp/unit_test_plugin_config.yml"
-               var oldWd string
-               var mdd string
-               var tempDir string
+`, dbVersion)
 
-               BeforeEach(func() {
                        tempDir, _ = ioutil.TempDir("", "temp")
 
                        err := ioutil.WriteFile(testConfigPath, 
[]byte(sampleConfigContents), 0777)
diff --git a/testutils/functions.go b/testutils/functions.go
index 3a16ff8c..30e1b079 100644
--- a/testutils/functions.go
+++ b/testutils/functions.go
@@ -36,9 +36,24 @@ func SetupTestEnvironment() (*dbconn.DBConn, 
sqlmock.Sqlmock, *Buffer, *Buffer,
        connectionPool, mock, testStdout, testStderr, testLogfile := 
testhelper.SetupTestEnvironment()
 
        // Default if not set is GPDB version `5.1.0`
-       envTestGpdbVersion := os.Getenv("TEST_GPDB_VERSION")
-       if envTestGpdbVersion != "" {
-               testhelper.SetDBVersion(connectionPool, envTestGpdbVersion)
+       envTestDbVersion := os.Getenv("TEST_DB_VERSION")
+       if envTestDbVersion != "" {
+               testhelper.SetDBVersion(connectionPool, envTestDbVersion)
+       }
+
+       // The testhelper package from the cloudberry-go-libs library does not
+       // currently have a function to set the DB type. To avoid modifying the
+       // library, we set the type directly here.
+       envTestDbType := os.Getenv("TEST_DB_TYPE")
+       if envTestDbType != "" {
+               switch envTestDbType {
+               case "GPDB":
+                       connectionPool.Version.Type = dbconn.GPDB
+               case "CBDB":
+                       connectionPool.Version.Type = dbconn.CBDB
+               default:
+                       Fail(fmt.Sprintf("Unsupported TEST_DB_TYPE: %s. Must be 
GPDB or CBDB.", envTestDbType))
+               }
        }
 
        SetupTestCluster()


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to