blob: bd89e0d183c8f4491850ba5230a27d81b12b2371 [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 (
"fmt"
"os"
"time"
"github.com/apache/shardingsphere-on-cloud/pitr/cli/internal/pkg/model"
"github.com/apache/shardingsphere-on-cloud/pitr/cli/pkg/timeutil"
"github.com/google/uuid"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("ILocalStorage", func() {
AfterEach(func() {
root := fmt.Sprintf("%s/%s", os.Getenv("HOME"), ".gs_pitr")
_ = os.RemoveAll(root)
})
Context("localStorage", func() {
It("New:Initialize the cli program directory.", func() {
root := fmt.Sprintf("%s/%s", os.Getenv("HOME"), ".gs_pitr")
ls, err := NewLocalStorage(root)
Expect(err).To(BeNil())
Expect(ls).NotTo(BeNil())
})
It("ReadALL", func() {
root := fmt.Sprintf("%s/%s", os.Getenv("HOME"), ".gs_pitr")
ls, err := NewLocalStorage(root)
Expect(err).To(BeNil())
Expect(ls).NotTo(BeNil())
list, err := ls.ReadAll()
Expect(err).To(BeNil())
fmt.Println(fmt.Sprintf("%+v", list))
for _, v := range list {
fmt.Println(fmt.Sprintf("%+v", v.Info))
}
})
It("ReadByCSN", func() {
root := fmt.Sprintf("%s/%s", os.Getenv("HOME"), ".gs_pitr")
ls, err := NewLocalStorage(root)
Expect(err).To(BeNil())
Expect(ls).NotTo(BeNil())
_, err = ls.ReadByCSN("e19b6935-c437-4cf0-b820-3275bd2727a2")
Expect(err.Error()).To(Equal("Not found"))
})
It("ReadAllByCSN", func() {
root := fmt.Sprintf("%s/%s", os.Getenv("HOME"), ".gs_pitr")
ls, err := NewLocalStorage(root)
Expect(err).To(BeNil())
Expect(ls).NotTo(BeNil())
_, err = ls.ReadAllByCSN("e19b6935-c437-4cf0-b820-3275bd2727a2")
Expect(err).To(BeNil())
})
It("ReadByID", func() {
root := fmt.Sprintf("%s/%s", os.Getenv("HOME"), ".gs_pitr")
ls, err := NewLocalStorage(root)
Expect(err).To(BeNil())
Expect(ls).NotTo(BeNil())
_, err = ls.ReadByID("66785e18-b8d3-42f4-9967-a4119be15cea")
Expect(err.Error()).To(Equal("Not found"))
})
It("GenFilename and WriteByJSON", func() {
root := fmt.Sprintf("%s/%s", os.Getenv("HOME"), ".gs_pitr")
ls, err := NewLocalStorage(root)
Expect(err).To(BeNil())
Expect(ls).NotTo(BeNil())
filename := ls.GenFilename(ExtnJSON)
Expect(filename).NotTo(BeEmpty())
backupID := uuid.New().String()
contents := model.LsBackup{
Info: &model.BackupMetaInfo{
ID: backupID,
CSN: uuid.New().String(),
StartTime: timeutil.Now().String(),
EndTime: timeutil.Now().Add(time.Minute).String(),
},
DnList: []*model.DataNode{
{
IP: "1.1.1.1",
Port: 5432,
Status: "Completed",
BackupID: "SK08DAK1",
StartTime: timeutil.Now().String(),
EndTime: timeutil.Now().String(),
},
{
IP: "1.1.1.2",
Port: 5432,
Status: "Completed",
BackupID: "SK08DAK2",
StartTime: timeutil.Now().String(),
EndTime: timeutil.Now().String(),
},
},
SsBackup: &model.SsBackup{
Status: "Completed",
ClusterInfo: &model.ClusterInfo{
MetaData: model.MetaData{
Databases: map[string]string{
"db1": "db1",
},
Props: "Props",
Rules: "Rules",
},
SnapshotInfo: &model.SnapshotInfo{},
},
StorageNodes: nil,
},
}
err = ls.WriteByJSON(filename, &contents)
Expect(err).To(BeNil())
bak, err := ls.ReadByID(backupID)
Expect(err).To(BeNil())
Expect(bak).NotTo(BeNil())
})
})
})