blob: e969e09c0b60a40610ecdc7f781ea785c508ddf7 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package pkg
import (
"encoding/json"
"errors"
"fmt"
"time"
. "github.com/onsi/gomega"
. "github.com/onsi/ginkgo/v2"
"github.com/apache/shardingsphere-on-cloud/pitr/agent/internal/cons"
)
var _ = Describe("OpenGauss,requires opengauss environment", func() {
Context("AsyncBackup & ShowBackupDetail ", func() {
It("backup, show and delete", func() {
Skip("")
og := &openGauss{
shell: "/bin/sh",
pgData: "/data/opengauss/3.1.1/data/single_node/",
log: log,
}
var (
data = "/home/omm/data"
instance = "ins-default-0"
)
backupID, err := og.AsyncBackup(
data,
instance,
"full",
1,
3306,
)
Expect(err).To(BeNil())
Expect(backupID).NotTo(BeEmpty())
fmt.Println(fmt.Sprintf("BackupID:%s", backupID))
// timeout 60s
for i := 0; i < 60; i++ {
backup, err := og.ShowBackup(
data,
instance,
backupID,
)
Expect(err).To(BeNil())
Expect(backup).NotTo(BeNil())
Expect(backup.ID).To(Equal(backupID))
if backup.Status == "OK" {
goto Del
}
time.Sleep(time.Second)
}
Fail("Timeout[60s]")
return
Del:
err = og.DelBackup(data, instance, backupID)
Expect(err).To(BeNil())
err = og.DelBackup(data, instance, backupID)
Expect(errors.Is(err, cons.CmdOperateFailed)).To(BeTrue())
})
})
Context("Init and deinit", func() {
It("Init backup and clean up the env", func() {
Skip("")
og := &openGauss{
shell: "/bin/sh",
log: log,
}
data2 := "/home/omm/data2"
err := og.Init(data2)
Expect(err).To(BeNil())
err = og.Init(data2)
Expect(err).NotTo(BeNil())
Expect(errors.Is(err, cons.BackupPathAlreadyExist)).To(BeTrue())
err = og.deinit(data2)
Expect(err).To(BeNil())
// repeat validation
err = og.Init(data2)
Expect(err).To(BeNil())
err = og.deinit(data2)
Expect(err).To(BeNil())
})
It("[/home/omm/]:no permission to operate other dirs", func() {
og := &openGauss{
shell: "/bin/sh",
log: log,
}
data := "/home/omm2/data"
err := og.deinit(data)
Expect(errors.Is(err, cons.NoPermission)).To(BeTrue())
})
})
Context("AddInstance and DelInstance", func() {
It("instance:add and delete", func() {
Skip("")
og := &openGauss{
shell: "/bin/sh",
pgData: "/data/opengauss/3.1.1/data/single_node/",
log: log,
}
var (
backupPath = "/home/omm/data"
instance = "ins-test-1"
)
err := og.AddInstance(backupPath, instance)
Expect(err).To(BeNil())
err = og.AddInstance(backupPath, instance)
Expect(errors.Is(err, cons.InstanceAlreadyExist)).To(BeTrue())
err = og.DelInstance(backupPath, instance)
Expect(err).To(BeNil())
err = og.DelInstance(backupPath, instance)
Expect(errors.Is(err, cons.InstanceNotExist)).To(BeTrue())
})
})
Context("Start and Stop", func() {
It("start and stop:may fail if no instance exists", func() {
Skip("")
og := &openGauss{
shell: "/bin/sh",
pgData: "/data/opengauss/3.1.1/data/single_node/",
log: log,
}
status, err := og.Status()
Expect(err).To(BeNil())
Expect(status).To(Equal("Running"))
err = og.Stop()
Expect(err).To(BeNil())
status, err = og.Status()
Expect(err).To(BeNil())
Expect(status).To(Equal("Stopped"))
err = og.Stop()
Expect(errors.Is(err, cons.StopOpenGaussFailed)).To(BeTrue())
status, err = og.Status()
Expect(err).To(BeNil())
Expect(status).To(Equal("Stopped"))
err = og.Start()
Expect(err).To(BeNil())
status, err = og.Status()
Expect(err).To(BeNil())
Expect(status).To(Equal("Running"))
})
})
Context("ShowBackupList", func() {
It("manual:show all backup ", func() {
og := &openGauss{
shell: "/bin/sh",
log: log,
}
var (
backupPath = "/home/omm/data"
instance = "ins-default-0"
)
list, err := og.ShowBackupList(backupPath, instance)
indent, err := json.MarshalIndent(list, "", " ")
Expect(err).To(BeNil())
fmt.Println(string(indent))
})
})
})