github.com/cloudberrydb/gpbackup@v1.0.3-0.20240118031043-5410fd45eed6/utils/compression_test.go (about) 1 package utils_test 2 3 import ( 4 "os/user" 5 6 "github.com/cloudberrydb/gp-common-go-libs/cluster" 7 "github.com/cloudberrydb/gp-common-go-libs/operating" 8 "github.com/cloudberrydb/gp-common-go-libs/structmatcher" 9 "github.com/cloudberrydb/gp-common-go-libs/testhelper" 10 "github.com/cloudberrydb/gpbackup/utils" 11 12 . "github.com/onsi/ginkgo/v2" 13 ) 14 15 var _ = Describe("utils/compression tests", func() { 16 coordinatorSeg := cluster.SegConfig{ContentID: -1, Hostname: "localhost", DataDir: "/data/gpseg-1"} 17 localSegOne := cluster.SegConfig{ContentID: 0, Hostname: "localhost", DataDir: "/data/gpseg0"} 18 remoteSegOne := cluster.SegConfig{ContentID: 1, Hostname: "remotehost1", DataDir: "/data/gpseg1"} 19 var ( 20 testCluster *cluster.Cluster 21 testExecutor *testhelper.TestExecutor 22 ) 23 24 BeforeEach(func() { 25 operating.System.CurrentUser = func() (*user.User, error) { return &user.User{Username: "testUser", HomeDir: "testDir"}, nil } 26 operating.System.Hostname = func() (string, error) { return "testHost", nil } 27 testExecutor = &testhelper.TestExecutor{} 28 testCluster = cluster.NewCluster([]cluster.SegConfig{coordinatorSeg, localSegOne, remoteSegOne}) 29 testCluster.Executor = testExecutor 30 }) 31 32 Describe("InitializePipeThroughParameters", func() { 33 It("initializes to use cat when passed no compression", func() { 34 originalProgram := utils.GetPipeThroughProgram() 35 defer utils.SetPipeThroughProgram(originalProgram) 36 expectedProgram := utils.PipeThroughProgram{ 37 Name: "cat", 38 OutputCommand: "cat -", 39 InputCommand: "cat -", 40 Extension: "", 41 } 42 utils.InitializePipeThroughParameters(false, "", 3) 43 resultProgram := utils.GetPipeThroughProgram() 44 structmatcher.ExpectStructsToMatch(&expectedProgram, &resultProgram) 45 }) 46 It("initializes to use gzip when passed compression type gzip and a level", func() { 47 originalProgram := utils.GetPipeThroughProgram() 48 defer utils.SetPipeThroughProgram(originalProgram) 49 expectedProgram := utils.PipeThroughProgram{ 50 Name: "gzip", 51 OutputCommand: "gzip -c -7", 52 InputCommand: "gzip -d -c", 53 Extension: ".gz", 54 } 55 utils.InitializePipeThroughParameters(true, "gzip", 7) 56 resultProgram := utils.GetPipeThroughProgram() 57 structmatcher.ExpectStructsToMatch(&expectedProgram, &resultProgram) 58 }) 59 It("initializes to use zstd when passed compression type zstd and a level", func() { 60 originalProgram := utils.GetPipeThroughProgram() 61 defer utils.SetPipeThroughProgram(originalProgram) 62 expectedProgram := utils.PipeThroughProgram{ 63 Name: "zstd", 64 OutputCommand: "zstd --compress -7 -c", 65 InputCommand: "zstd --decompress -c", 66 Extension: ".zst", 67 } 68 utils.InitializePipeThroughParameters(true, "zstd", 7) 69 resultProgram := utils.GetPipeThroughProgram() 70 structmatcher.ExpectStructsToMatch(&expectedProgram, &resultProgram) 71 }) 72 }) 73 })