mirror of
https://github.com/Awuqing/BackupX.git
synced 2026-05-07 05:52:52 +08:00
* chore: ignore web/dist directory in git repository * 功能: 新增 SAP HANA 完整备份支持与 Backint 协议代理 - 修复 service 层校验 bug,使 SAP HANA 类型可正常创建 - 增强 hdbsql Runner:支持完整/增量/差异/日志备份、并行通道、失败重试 - 新增 Backint 协议代理(backupx backint 子命令),HANA 原生接口直连 BackupX 存储后端 - 新增本地 SQLite 目录维护 EBID↔对象键映射 - 前端新增 SAP HANA 扩展字段表单(备份类型/级别/通道数/重试次数/实例编号) - README 中英文补充 SAP HANA 两种模式的使用说明
75 lines
1.6 KiB
Go
75 lines
1.6 KiB
Go
package backint
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestCatalog_CRUD(t *testing.T) {
|
|
dir := t.TempDir()
|
|
cat, err := OpenCatalog(filepath.Join(dir, "test.db"))
|
|
if err != nil {
|
|
t.Fatalf("open: %v", err)
|
|
}
|
|
defer cat.Close()
|
|
|
|
if err := cat.Put(CatalogEntry{EBID: "bid-1", ObjectKey: "k/1.bin", SourcePath: "/tmp/a", Size: 100}); err != nil {
|
|
t.Fatalf("put: %v", err)
|
|
}
|
|
if err := cat.Put(CatalogEntry{EBID: "bid-2", ObjectKey: "k/2.bin", Size: 200}); err != nil {
|
|
t.Fatalf("put: %v", err)
|
|
}
|
|
|
|
got, err := cat.Get("bid-1")
|
|
if err != nil || got == nil {
|
|
t.Fatalf("get: %v %v", got, err)
|
|
}
|
|
if got.ObjectKey != "k/1.bin" || got.Size != 100 {
|
|
t.Errorf("mismatch: %+v", got)
|
|
}
|
|
|
|
// 不存在的条目
|
|
missing, err := cat.Get("bid-999")
|
|
if err != nil {
|
|
t.Fatalf("get missing: %v", err)
|
|
}
|
|
if missing != nil {
|
|
t.Errorf("expected nil, got %+v", missing)
|
|
}
|
|
|
|
// List
|
|
all, err := cat.List()
|
|
if err != nil || len(all) != 2 {
|
|
t.Fatalf("list: %v %d", err, len(all))
|
|
}
|
|
|
|
// Delete
|
|
if err := cat.Delete("bid-1"); err != nil {
|
|
t.Fatalf("delete: %v", err)
|
|
}
|
|
got, _ = cat.Get("bid-1")
|
|
if got != nil {
|
|
t.Errorf("bid-1 should be deleted")
|
|
}
|
|
}
|
|
|
|
func TestCatalog_UpsertSameEBID(t *testing.T) {
|
|
dir := t.TempDir()
|
|
cat, err := OpenCatalog(filepath.Join(dir, "test.db"))
|
|
if err != nil {
|
|
t.Fatalf("open: %v", err)
|
|
}
|
|
defer cat.Close()
|
|
|
|
if err := cat.Put(CatalogEntry{EBID: "bid-x", ObjectKey: "v1"}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := cat.Put(CatalogEntry{EBID: "bid-x", ObjectKey: "v2"}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
got, _ := cat.Get("bid-x")
|
|
if got == nil || got.ObjectKey != "v2" {
|
|
t.Errorf("upsert failed: %+v", got)
|
|
}
|
|
}
|