blob: baa9e89cc79df81ff9d17798419b0872a969dbcc [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 (
"context"
"encoding/json"
"fmt"
"testing"
"github.com/apache/shardingsphere-on-cloud/pitr/cli/internal/pkg/model"
"github.com/apache/shardingsphere-on-cloud/pitr/cli/pkg/httputils"
"bou.ke/monkey"
mock_httputils "github.com/apache/shardingsphere-on-cloud/pitr/cli/pkg/httputils/mocks"
"github.com/golang/mock/gomock"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
func TestAgentServer_Backup(t *testing.T) {
t.SkipNow()
//Note:just for test api,you need map you own host.
as := NewAgentServer("http://agent-server:18080")
backupID, err := as.Backup(&model.BackupIn{
DBPort: 5432,
DBName: "omm",
Username: "og",
Password: "1234567890@SphereEx",
DnBackupPath: "/home/omm/data",
DnThreadsNum: 1,
DnBackupMode: "FULL",
Instance: "ins-default-0",
})
if err != nil {
panic(err)
}
fmt.Println(backupID)
}
func TestAgentServer_Restore(t *testing.T) {
t.SkipNow()
//Note:just for test api,you need map you own host.
as := NewAgentServer("http://agent-server:18080")
err := as.Restore(&model.RestoreIn{
DBPort: 5432,
DBName: "omm",
Username: "og",
Password: "1234567890@SphereEx",
DnBackupPath: "/home/omm/data",
Instance: "ins-default-0",
DnBackupID: "RR3FIC",
})
if err != nil {
panic(err)
}
fmt.Println("Success")
}
func TestAgentServer_ShowDetail(t *testing.T) {
t.SkipNow()
//Note:just for test api,you need map you own host.
as := NewAgentServer("http://agent-server:18080")
backupInfo, err := as.ShowDetail(&model.ShowDetailIn{
DBPort: 5432,
DBName: "omm",
Username: "og",
Password: "1234567890@SphereEx",
DnBackupPath: "/home/omm/data",
Instance: "ins-default-0",
DnBackupID: "RR3FIC",
})
if err != nil {
panic(err)
}
indent, err := json.MarshalIndent(backupInfo, "", " ")
if err != nil {
panic(err)
}
fmt.Println(string(indent))
}
func TestAgentServer_ShowList(t *testing.T) {
t.SkipNow()
//Note:just for test api,you need map you own host.
as := NewAgentServer("http://agent-server:18080")
list, err := as.ShowList(&model.ShowListIn{
DBPort: 5432,
DBName: "omm",
Username: "og",
Password: "1234567890@SphereEx",
DnBackupPath: "/home/omm/data",
Instance: "ins-default-0",
})
if err != nil {
panic(err)
}
indent, err := json.MarshalIndent(list, "", " ")
if err != nil {
panic(err)
}
fmt.Println(string(indent))
}
var _ = Describe("AgentServer", func() {
var (
ctrl *gomock.Controller
req *mock_httputils.MockIreq
as IAgentServer
)
BeforeEach(func() {
as = NewAgentServer("http://agent-server:18080")
ctrl = gomock.NewController(GinkgoT())
req = mock_httputils.NewMockIreq(ctrl)
req.EXPECT().Body(gomock.Any())
monkey.Patch(httputils.NewRequest, func(c context.Context, method, url string) httputils.Ireq {
return req
})
})
AfterEach(func() {
ctrl.Finish()
monkey.UnpatchAll()
})
Context("backup", func() {
It("backup failed", func() {
req.EXPECT().Send(gomock.Any()).Return(fmt.Errorf("error"))
_, err := as.Backup(&model.BackupIn{})
Expect(err).ShouldNot(BeNil())
})
It("backup success", func() {
req.EXPECT().Send(gomock.Any()).Do(func(i *model.BackupOutResp) {
i.Data.ID = "backup-id"
}).Return(nil)
as := NewAgentServer("http://agent-server:18080")
resp, err := as.Backup(&model.BackupIn{})
Expect(err).Should(BeNil())
Expect(resp).Should(Equal("backup-id"))
})
})
Context("restore", func() {
It("restore failed", func() {
req.EXPECT().Send(gomock.Any()).Return(fmt.Errorf("error"))
err := as.Restore(&model.RestoreIn{})
Expect(err).ShouldNot(BeNil())
})
// restore success
It("restore success", func() {
req.EXPECT().Send(gomock.Any()).Return(nil)
err := as.Restore(&model.RestoreIn{})
Expect(err).Should(BeNil())
})
})
Context("show detail", func() {
It("show detail failed", func() {
req.EXPECT().Send(gomock.Any()).Return(fmt.Errorf("error"))
_, err := as.ShowDetail(&model.ShowDetailIn{})
Expect(err).ShouldNot(BeNil())
})
// show detail success
It("show detail success", func() {
req.EXPECT().Send(gomock.Any()).Do(func(i *model.BackupDetailResp) {
i.Data = model.BackupInfo{}
}).Return(nil)
resp, err := as.ShowDetail(&model.ShowDetailIn{})
Expect(err).Should(BeNil())
Expect(resp).Should(Equal(&model.BackupInfo{}))
})
})
Context("show list", func() {
It("show list failed", func() {
req.EXPECT().Send(gomock.Any()).Return(fmt.Errorf("error"))
_, err := as.ShowList(&model.ShowListIn{})
Expect(err).ShouldNot(BeNil())
})
// show list success
It("show list success", func() {
req.EXPECT().Send(gomock.Any()).Do(func(i *model.BackupListResp) {
i.Data = []model.BackupInfo{}
}).Return(nil)
resp, err := as.ShowList(&model.ShowListIn{})
Expect(err).Should(BeNil())
Expect(resp).Should(Equal([]model.BackupInfo{}))
})
})
})