镜像自地址
https://github.com/tuna/tunasync.git
已同步 2025-12-07 15:06:47 +00:00
feature(worker): ability to hot reload mirror job configrations, close #18
这个提交包含在:
73
worker/config_diff_test.go
普通文件
73
worker/config_diff_test.go
普通文件
@@ -0,0 +1,73 @@
|
||||
package worker
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
. "github.com/smartystreets/goconvey/convey"
|
||||
)
|
||||
|
||||
func TestConfigDiff(t *testing.T) {
|
||||
Convey("When old and new configs are equal", t, func() {
|
||||
oldList := []mirrorConfig{
|
||||
mirrorConfig{Name: "debian"},
|
||||
mirrorConfig{Name: "debian-security"},
|
||||
mirrorConfig{Name: "fedora"},
|
||||
mirrorConfig{Name: "archlinux"},
|
||||
mirrorConfig{Name: "AOSP"},
|
||||
mirrorConfig{Name: "ubuntu"},
|
||||
}
|
||||
newList := make([]mirrorConfig, len(oldList))
|
||||
copy(newList, oldList)
|
||||
|
||||
difference := diffMirrorConfig(oldList, newList)
|
||||
So(len(difference), ShouldEqual, 0)
|
||||
})
|
||||
Convey("When giving two config lists with different names", t, func() {
|
||||
oldList := []mirrorConfig{
|
||||
mirrorConfig{Name: "debian"},
|
||||
mirrorConfig{Name: "debian-security"},
|
||||
mirrorConfig{Name: "fedora"},
|
||||
mirrorConfig{Name: "archlinux"},
|
||||
mirrorConfig{Name: "AOSP", Env: map[string]string{"REPO": "/usr/bin/repo"}},
|
||||
mirrorConfig{Name: "ubuntu"},
|
||||
}
|
||||
newList := []mirrorConfig{
|
||||
mirrorConfig{Name: "debian"},
|
||||
mirrorConfig{Name: "debian-cd"},
|
||||
mirrorConfig{Name: "archlinuxcn"},
|
||||
mirrorConfig{Name: "AOSP", Env: map[string]string{"REPO": "/usr/local/bin/aosp-repo"}},
|
||||
mirrorConfig{Name: "ubuntu-ports"},
|
||||
}
|
||||
|
||||
difference := diffMirrorConfig(oldList, newList)
|
||||
|
||||
sort.Sort(sortableMirrorList(oldList))
|
||||
emptyList := []mirrorConfig{}
|
||||
|
||||
for _, o := range oldList {
|
||||
keep := true
|
||||
for _, op := range difference {
|
||||
if (op.diffOp == diffDelete || op.diffOp == diffModify) &&
|
||||
op.mirCfg.Name == o.Name {
|
||||
|
||||
keep = false
|
||||
break
|
||||
}
|
||||
}
|
||||
if keep {
|
||||
emptyList = append(emptyList, o)
|
||||
}
|
||||
}
|
||||
|
||||
for _, op := range difference {
|
||||
if op.diffOp == diffAdd || op.diffOp == diffModify {
|
||||
emptyList = append(emptyList, op.mirCfg)
|
||||
}
|
||||
}
|
||||
sort.Sort(sortableMirrorList(emptyList))
|
||||
sort.Sort(sortableMirrorList(newList))
|
||||
So(emptyList, ShouldResemble, newList)
|
||||
|
||||
})
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户