Update tests for version vectors
This commit is contained in:
parent
7d766bf7c7
commit
b4f45d1e79
@ -39,7 +39,7 @@ func TestSanityCheck(t *testing.T) {
|
|||||||
|
|
||||||
// Case 1 - new folder, directory and marker created
|
// Case 1 - new folder, directory and marker created
|
||||||
|
|
||||||
m := model.NewModel(cfg, "device", "syncthing", "dev", ldb)
|
m := model.NewModel(cfg, protocol.LocalDeviceID, "device", "syncthing", "dev", ldb)
|
||||||
sanityCheckFolders(cfg, m)
|
sanityCheckFolders(cfg, m)
|
||||||
|
|
||||||
if cfg.Folders()["folder"].Invalid != "" {
|
if cfg.Folders()["folder"].Invalid != "" {
|
||||||
@ -66,7 +66,7 @@ func TestSanityCheck(t *testing.T) {
|
|||||||
Folders: []config.FolderConfiguration{fcfg},
|
Folders: []config.FolderConfiguration{fcfg},
|
||||||
})
|
})
|
||||||
|
|
||||||
m = model.NewModel(cfg, "device", "syncthing", "dev", ldb)
|
m = model.NewModel(cfg, protocol.LocalDeviceID, "device", "syncthing", "dev", ldb)
|
||||||
sanityCheckFolders(cfg, m)
|
sanityCheckFolders(cfg, m)
|
||||||
|
|
||||||
if cfg.Folders()["folder"].Invalid != "" {
|
if cfg.Folders()["folder"].Invalid != "" {
|
||||||
@ -87,7 +87,7 @@ func TestSanityCheck(t *testing.T) {
|
|||||||
{Name: "dummyfile"},
|
{Name: "dummyfile"},
|
||||||
})
|
})
|
||||||
|
|
||||||
m = model.NewModel(cfg, "device", "syncthing", "dev", ldb)
|
m = model.NewModel(cfg, protocol.LocalDeviceID, "device", "syncthing", "dev", ldb)
|
||||||
sanityCheckFolders(cfg, m)
|
sanityCheckFolders(cfg, m)
|
||||||
|
|
||||||
if cfg.Folders()["folder"].Invalid != "folder marker missing" {
|
if cfg.Folders()["folder"].Invalid != "folder marker missing" {
|
||||||
@ -101,7 +101,7 @@ func TestSanityCheck(t *testing.T) {
|
|||||||
Folders: []config.FolderConfiguration{fcfg},
|
Folders: []config.FolderConfiguration{fcfg},
|
||||||
})
|
})
|
||||||
|
|
||||||
m = model.NewModel(cfg, "device", "syncthing", "dev", ldb)
|
m = model.NewModel(cfg, protocol.LocalDeviceID, "device", "syncthing", "dev", ldb)
|
||||||
sanityCheckFolders(cfg, m)
|
sanityCheckFolders(cfg, m)
|
||||||
|
|
||||||
if cfg.Folders()["folder"].Invalid != "folder path missing" {
|
if cfg.Folders()["folder"].Invalid != "folder path missing" {
|
||||||
|
|||||||
@ -15,7 +15,6 @@ import (
|
|||||||
|
|
||||||
"github.com/syncthing/protocol"
|
"github.com/syncthing/protocol"
|
||||||
"github.com/syncthing/syncthing/internal/db"
|
"github.com/syncthing/syncthing/internal/db"
|
||||||
"github.com/syncthing/syncthing/internal/lamport"
|
|
||||||
"github.com/syndtr/goleveldb/leveldb"
|
"github.com/syndtr/goleveldb/leveldb"
|
||||||
"github.com/syndtr/goleveldb/leveldb/storage"
|
"github.com/syndtr/goleveldb/leveldb/storage"
|
||||||
)
|
)
|
||||||
@ -27,6 +26,8 @@ func init() {
|
|||||||
remoteDevice1, _ = protocol.DeviceIDFromString("I6KAH76-66SLLLB-5PFXSOA-UFJCDZC-YAOMLEK-CP2GB32-BV5RQST-3PSROAU")
|
remoteDevice1, _ = protocol.DeviceIDFromString("I6KAH76-66SLLLB-5PFXSOA-UFJCDZC-YAOMLEK-CP2GB32-BV5RQST-3PSROAU")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const myID = 1
|
||||||
|
|
||||||
func genBlocks(n int) []protocol.BlockInfo {
|
func genBlocks(n int) []protocol.BlockInfo {
|
||||||
b := make([]protocol.BlockInfo, n)
|
b := make([]protocol.BlockInfo, n)
|
||||||
for i := range b {
|
for i := range b {
|
||||||
@ -95,7 +96,6 @@ func (l fileList) String() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGlobalSet(t *testing.T) {
|
func TestGlobalSet(t *testing.T) {
|
||||||
lamport.Default = lamport.Clock{}
|
|
||||||
|
|
||||||
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -105,34 +105,34 @@ func TestGlobalSet(t *testing.T) {
|
|||||||
m := db.NewFileSet("test", ldb)
|
m := db.NewFileSet("test", ldb)
|
||||||
|
|
||||||
local0 := fileList{
|
local0 := fileList{
|
||||||
protocol.FileInfo{Name: "a", Version: 1000, Blocks: genBlocks(1)},
|
protocol.FileInfo{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(1)},
|
||||||
protocol.FileInfo{Name: "b", Version: 1000, Blocks: genBlocks(2)},
|
protocol.FileInfo{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(2)},
|
||||||
protocol.FileInfo{Name: "c", Version: 1000, Blocks: genBlocks(3)},
|
protocol.FileInfo{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(3)},
|
||||||
protocol.FileInfo{Name: "d", Version: 1000, Blocks: genBlocks(4)},
|
protocol.FileInfo{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(4)},
|
||||||
protocol.FileInfo{Name: "z", Version: 1000, Blocks: genBlocks(8)},
|
protocol.FileInfo{Name: "z", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(8)},
|
||||||
}
|
}
|
||||||
local1 := fileList{
|
local1 := fileList{
|
||||||
protocol.FileInfo{Name: "a", Version: 1000, Blocks: genBlocks(1)},
|
protocol.FileInfo{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(1)},
|
||||||
protocol.FileInfo{Name: "b", Version: 1000, Blocks: genBlocks(2)},
|
protocol.FileInfo{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(2)},
|
||||||
protocol.FileInfo{Name: "c", Version: 1000, Blocks: genBlocks(3)},
|
protocol.FileInfo{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(3)},
|
||||||
protocol.FileInfo{Name: "d", Version: 1000, Blocks: genBlocks(4)},
|
protocol.FileInfo{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(4)},
|
||||||
}
|
}
|
||||||
localTot := fileList{
|
localTot := fileList{
|
||||||
local0[0],
|
local0[0],
|
||||||
local0[1],
|
local0[1],
|
||||||
local0[2],
|
local0[2],
|
||||||
local0[3],
|
local0[3],
|
||||||
protocol.FileInfo{Name: "z", Version: 1001, Flags: protocol.FlagDeleted},
|
protocol.FileInfo{Name: "z", Version: protocol.Vector{{ID: myID, Value: 1001}}, Flags: protocol.FlagDeleted},
|
||||||
}
|
}
|
||||||
|
|
||||||
remote0 := fileList{
|
remote0 := fileList{
|
||||||
protocol.FileInfo{Name: "a", Version: 1000, Blocks: genBlocks(1)},
|
protocol.FileInfo{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(1)},
|
||||||
protocol.FileInfo{Name: "b", Version: 1000, Blocks: genBlocks(2)},
|
protocol.FileInfo{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(2)},
|
||||||
protocol.FileInfo{Name: "c", Version: 1002, Blocks: genBlocks(5)},
|
protocol.FileInfo{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1001}}, Blocks: genBlocks(5)},
|
||||||
}
|
}
|
||||||
remote1 := fileList{
|
remote1 := fileList{
|
||||||
protocol.FileInfo{Name: "b", Version: 1001, Blocks: genBlocks(6)},
|
protocol.FileInfo{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1001}}, Blocks: genBlocks(6)},
|
||||||
protocol.FileInfo{Name: "e", Version: 1000, Blocks: genBlocks(7)},
|
protocol.FileInfo{Name: "e", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(7)},
|
||||||
}
|
}
|
||||||
remoteTot := fileList{
|
remoteTot := fileList{
|
||||||
remote0[0],
|
remote0[0],
|
||||||
@ -160,8 +160,8 @@ func TestGlobalSet(t *testing.T) {
|
|||||||
local0[3],
|
local0[3],
|
||||||
}
|
}
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local0)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local0, myID)
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local1)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local1, myID)
|
||||||
m.Replace(remoteDevice0, remote0)
|
m.Replace(remoteDevice0, remote0)
|
||||||
m.Update(remoteDevice0, remote1)
|
m.Update(remoteDevice0, remote1)
|
||||||
|
|
||||||
@ -256,8 +256,6 @@ func TestGlobalSet(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestNeedWithInvalid(t *testing.T) {
|
func TestNeedWithInvalid(t *testing.T) {
|
||||||
lamport.Default = lamport.Clock{}
|
|
||||||
|
|
||||||
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
@ -266,26 +264,26 @@ func TestNeedWithInvalid(t *testing.T) {
|
|||||||
s := db.NewFileSet("test", ldb)
|
s := db.NewFileSet("test", ldb)
|
||||||
|
|
||||||
localHave := fileList{
|
localHave := fileList{
|
||||||
protocol.FileInfo{Name: "a", Version: 1000, Blocks: genBlocks(1)},
|
protocol.FileInfo{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(1)},
|
||||||
}
|
}
|
||||||
remote0Have := fileList{
|
remote0Have := fileList{
|
||||||
protocol.FileInfo{Name: "b", Version: 1001, Blocks: genBlocks(2)},
|
protocol.FileInfo{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1001}}, Blocks: genBlocks(2)},
|
||||||
protocol.FileInfo{Name: "c", Version: 1002, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
protocol.FileInfo{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
||||||
protocol.FileInfo{Name: "d", Version: 1003, Blocks: genBlocks(7)},
|
protocol.FileInfo{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1003}}, Blocks: genBlocks(7)},
|
||||||
}
|
}
|
||||||
remote1Have := fileList{
|
remote1Have := fileList{
|
||||||
protocol.FileInfo{Name: "c", Version: 1002, Blocks: genBlocks(7)},
|
protocol.FileInfo{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(7)},
|
||||||
protocol.FileInfo{Name: "d", Version: 1003, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
protocol.FileInfo{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1003}}, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
||||||
protocol.FileInfo{Name: "e", Version: 1004, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
protocol.FileInfo{Name: "e", Version: protocol.Vector{{ID: myID, Value: 1004}}, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedNeed := fileList{
|
expectedNeed := fileList{
|
||||||
protocol.FileInfo{Name: "b", Version: 1001, Blocks: genBlocks(2)},
|
protocol.FileInfo{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1001}}, Blocks: genBlocks(2)},
|
||||||
protocol.FileInfo{Name: "c", Version: 1002, Blocks: genBlocks(7)},
|
protocol.FileInfo{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(7)},
|
||||||
protocol.FileInfo{Name: "d", Version: 1003, Blocks: genBlocks(7)},
|
protocol.FileInfo{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1003}}, Blocks: genBlocks(7)},
|
||||||
}
|
}
|
||||||
|
|
||||||
s.ReplaceWithDelete(protocol.LocalDeviceID, localHave)
|
s.ReplaceWithDelete(protocol.LocalDeviceID, localHave, myID)
|
||||||
s.Replace(remoteDevice0, remote0Have)
|
s.Replace(remoteDevice0, remote0Have)
|
||||||
s.Replace(remoteDevice1, remote1Have)
|
s.Replace(remoteDevice1, remote1Have)
|
||||||
|
|
||||||
@ -298,8 +296,6 @@ func TestNeedWithInvalid(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateToInvalid(t *testing.T) {
|
func TestUpdateToInvalid(t *testing.T) {
|
||||||
lamport.Default = lamport.Clock{}
|
|
||||||
|
|
||||||
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
@ -308,13 +304,13 @@ func TestUpdateToInvalid(t *testing.T) {
|
|||||||
s := db.NewFileSet("test", ldb)
|
s := db.NewFileSet("test", ldb)
|
||||||
|
|
||||||
localHave := fileList{
|
localHave := fileList{
|
||||||
protocol.FileInfo{Name: "a", Version: 1000, Blocks: genBlocks(1)},
|
protocol.FileInfo{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1000}}, Blocks: genBlocks(1)},
|
||||||
protocol.FileInfo{Name: "b", Version: 1001, Blocks: genBlocks(2)},
|
protocol.FileInfo{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1001}}, Blocks: genBlocks(2)},
|
||||||
protocol.FileInfo{Name: "c", Version: 1002, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
protocol.FileInfo{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
||||||
protocol.FileInfo{Name: "d", Version: 1003, Blocks: genBlocks(7)},
|
protocol.FileInfo{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1003}}, Blocks: genBlocks(7)},
|
||||||
}
|
}
|
||||||
|
|
||||||
s.ReplaceWithDelete(protocol.LocalDeviceID, localHave)
|
s.ReplaceWithDelete(protocol.LocalDeviceID, localHave, myID)
|
||||||
|
|
||||||
have := fileList(haveList(s, protocol.LocalDeviceID))
|
have := fileList(haveList(s, protocol.LocalDeviceID))
|
||||||
sort.Sort(have)
|
sort.Sort(have)
|
||||||
@ -323,7 +319,7 @@ func TestUpdateToInvalid(t *testing.T) {
|
|||||||
t.Errorf("Have incorrect before invalidation;\n A: %v !=\n E: %v", have, localHave)
|
t.Errorf("Have incorrect before invalidation;\n A: %v !=\n E: %v", have, localHave)
|
||||||
}
|
}
|
||||||
|
|
||||||
localHave[1] = protocol.FileInfo{Name: "b", Version: 1001, Flags: protocol.FlagInvalid}
|
localHave[1] = protocol.FileInfo{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1001}}, Flags: protocol.FlagInvalid}
|
||||||
s.Update(protocol.LocalDeviceID, localHave[1:2])
|
s.Update(protocol.LocalDeviceID, localHave[1:2])
|
||||||
|
|
||||||
have = fileList(haveList(s, protocol.LocalDeviceID))
|
have = fileList(haveList(s, protocol.LocalDeviceID))
|
||||||
@ -335,8 +331,6 @@ func TestUpdateToInvalid(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestInvalidAvailability(t *testing.T) {
|
func TestInvalidAvailability(t *testing.T) {
|
||||||
lamport.Default = lamport.Clock{}
|
|
||||||
|
|
||||||
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
@ -345,16 +339,16 @@ func TestInvalidAvailability(t *testing.T) {
|
|||||||
s := db.NewFileSet("test", ldb)
|
s := db.NewFileSet("test", ldb)
|
||||||
|
|
||||||
remote0Have := fileList{
|
remote0Have := fileList{
|
||||||
protocol.FileInfo{Name: "both", Version: 1001, Blocks: genBlocks(2)},
|
protocol.FileInfo{Name: "both", Version: protocol.Vector{{ID: myID, Value: 1001}}, Blocks: genBlocks(2)},
|
||||||
protocol.FileInfo{Name: "r1only", Version: 1002, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
protocol.FileInfo{Name: "r1only", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
||||||
protocol.FileInfo{Name: "r0only", Version: 1003, Blocks: genBlocks(7)},
|
protocol.FileInfo{Name: "r0only", Version: protocol.Vector{{ID: myID, Value: 1003}}, Blocks: genBlocks(7)},
|
||||||
protocol.FileInfo{Name: "none", Version: 1004, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
protocol.FileInfo{Name: "none", Version: protocol.Vector{{ID: myID, Value: 1004}}, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
||||||
}
|
}
|
||||||
remote1Have := fileList{
|
remote1Have := fileList{
|
||||||
protocol.FileInfo{Name: "both", Version: 1001, Blocks: genBlocks(2)},
|
protocol.FileInfo{Name: "both", Version: protocol.Vector{{ID: myID, Value: 1001}}, Blocks: genBlocks(2)},
|
||||||
protocol.FileInfo{Name: "r1only", Version: 1002, Blocks: genBlocks(7)},
|
protocol.FileInfo{Name: "r1only", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(7)},
|
||||||
protocol.FileInfo{Name: "r0only", Version: 1003, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
protocol.FileInfo{Name: "r0only", Version: protocol.Vector{{ID: myID, Value: 1003}}, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
||||||
protocol.FileInfo{Name: "none", Version: 1004, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
protocol.FileInfo{Name: "none", Version: protocol.Vector{{ID: myID, Value: 1004}}, Blocks: genBlocks(5), Flags: protocol.FlagInvalid},
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Replace(remoteDevice0, remote0Have)
|
s.Replace(remoteDevice0, remote0Have)
|
||||||
@ -383,17 +377,16 @@ func TestLocalDeleted(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
m := db.NewFileSet("test", ldb)
|
m := db.NewFileSet("test", ldb)
|
||||||
lamport.Default = lamport.Clock{}
|
|
||||||
|
|
||||||
local1 := []protocol.FileInfo{
|
local1 := []protocol.FileInfo{
|
||||||
{Name: "a", Version: 1000},
|
{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "b", Version: 1000},
|
{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "c", Version: 1000},
|
{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "d", Version: 1000},
|
{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "z", Version: 1000, Flags: protocol.FlagDirectory},
|
{Name: "z", Version: protocol.Vector{{ID: myID, Value: 1000}}, Flags: protocol.FlagDirectory},
|
||||||
}
|
}
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local1)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local1, myID)
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, []protocol.FileInfo{
|
m.ReplaceWithDelete(protocol.LocalDeviceID, []protocol.FileInfo{
|
||||||
local1[0],
|
local1[0],
|
||||||
@ -401,25 +394,25 @@ func TestLocalDeleted(t *testing.T) {
|
|||||||
local1[2],
|
local1[2],
|
||||||
local1[3],
|
local1[3],
|
||||||
local1[4],
|
local1[4],
|
||||||
})
|
}, myID)
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, []protocol.FileInfo{
|
m.ReplaceWithDelete(protocol.LocalDeviceID, []protocol.FileInfo{
|
||||||
local1[0],
|
local1[0],
|
||||||
local1[2],
|
local1[2],
|
||||||
// [3] removed
|
// [3] removed
|
||||||
local1[4],
|
local1[4],
|
||||||
})
|
}, myID)
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, []protocol.FileInfo{
|
m.ReplaceWithDelete(protocol.LocalDeviceID, []protocol.FileInfo{
|
||||||
local1[0],
|
local1[0],
|
||||||
local1[2],
|
local1[2],
|
||||||
// [4] removed
|
// [4] removed
|
||||||
})
|
}, myID)
|
||||||
|
|
||||||
expectedGlobal1 := []protocol.FileInfo{
|
expectedGlobal1 := []protocol.FileInfo{
|
||||||
local1[0],
|
local1[0],
|
||||||
{Name: "b", Version: 1001, Flags: protocol.FlagDeleted},
|
{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1001}}, Flags: protocol.FlagDeleted},
|
||||||
local1[2],
|
local1[2],
|
||||||
{Name: "d", Version: 1002, Flags: protocol.FlagDeleted},
|
{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1001}}, Flags: protocol.FlagDeleted},
|
||||||
{Name: "z", Version: 1003, Flags: protocol.FlagDeleted | protocol.FlagDirectory},
|
{Name: "z", Version: protocol.Vector{{ID: myID, Value: 1001}}, Flags: protocol.FlagDeleted | protocol.FlagDirectory},
|
||||||
}
|
}
|
||||||
|
|
||||||
g := globalList(m)
|
g := globalList(m)
|
||||||
@ -433,14 +426,14 @@ func TestLocalDeleted(t *testing.T) {
|
|||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, []protocol.FileInfo{
|
m.ReplaceWithDelete(protocol.LocalDeviceID, []protocol.FileInfo{
|
||||||
local1[0],
|
local1[0],
|
||||||
// [2] removed
|
// [2] removed
|
||||||
})
|
}, myID)
|
||||||
|
|
||||||
expectedGlobal2 := []protocol.FileInfo{
|
expectedGlobal2 := []protocol.FileInfo{
|
||||||
local1[0],
|
local1[0],
|
||||||
{Name: "b", Version: 1001, Flags: protocol.FlagDeleted},
|
{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1001}}, Flags: protocol.FlagDeleted},
|
||||||
{Name: "c", Version: 1004, Flags: protocol.FlagDeleted},
|
{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1001}}, Flags: protocol.FlagDeleted},
|
||||||
{Name: "d", Version: 1002, Flags: protocol.FlagDeleted},
|
{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1001}}, Flags: protocol.FlagDeleted},
|
||||||
{Name: "z", Version: 1003, Flags: protocol.FlagDeleted | protocol.FlagDirectory},
|
{Name: "z", Version: protocol.Vector{{ID: myID, Value: 1001}}, Flags: protocol.FlagDeleted | protocol.FlagDirectory},
|
||||||
}
|
}
|
||||||
|
|
||||||
g = globalList(m)
|
g = globalList(m)
|
||||||
@ -460,20 +453,20 @@ func Benchmark10kReplace(b *testing.B) {
|
|||||||
|
|
||||||
var local []protocol.FileInfo
|
var local []protocol.FileInfo
|
||||||
for i := 0; i < 10000; i++ {
|
for i := 0; i < 10000; i++ {
|
||||||
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 1000})
|
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{ID: myID, Value: 1000}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
b.ResetTimer()
|
b.ResetTimer()
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
m := db.NewFileSet("test", ldb)
|
m := db.NewFileSet("test", ldb)
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local, myID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Benchmark10kUpdateChg(b *testing.B) {
|
func Benchmark10kUpdateChg(b *testing.B) {
|
||||||
var remote []protocol.FileInfo
|
var remote []protocol.FileInfo
|
||||||
for i := 0; i < 10000; i++ {
|
for i := 0; i < 10000; i++ {
|
||||||
remote = append(remote, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 1000})
|
remote = append(remote, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{ID: myID, Value: 1000}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
@ -486,16 +479,16 @@ func Benchmark10kUpdateChg(b *testing.B) {
|
|||||||
|
|
||||||
var local []protocol.FileInfo
|
var local []protocol.FileInfo
|
||||||
for i := 0; i < 10000; i++ {
|
for i := 0; i < 10000; i++ {
|
||||||
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 1000})
|
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{ID: myID, Value: 1000}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local, myID)
|
||||||
|
|
||||||
b.ResetTimer()
|
b.ResetTimer()
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
b.StopTimer()
|
b.StopTimer()
|
||||||
for j := range local {
|
for j := range local {
|
||||||
local[j].Version++
|
local[j].Version = local[j].Version.Update(myID)
|
||||||
}
|
}
|
||||||
b.StartTimer()
|
b.StartTimer()
|
||||||
m.Update(protocol.LocalDeviceID, local)
|
m.Update(protocol.LocalDeviceID, local)
|
||||||
@ -505,7 +498,7 @@ func Benchmark10kUpdateChg(b *testing.B) {
|
|||||||
func Benchmark10kUpdateSme(b *testing.B) {
|
func Benchmark10kUpdateSme(b *testing.B) {
|
||||||
var remote []protocol.FileInfo
|
var remote []protocol.FileInfo
|
||||||
for i := 0; i < 10000; i++ {
|
for i := 0; i < 10000; i++ {
|
||||||
remote = append(remote, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 1000})
|
remote = append(remote, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{ID: myID, Value: 1000}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
@ -517,10 +510,10 @@ func Benchmark10kUpdateSme(b *testing.B) {
|
|||||||
|
|
||||||
var local []protocol.FileInfo
|
var local []protocol.FileInfo
|
||||||
for i := 0; i < 10000; i++ {
|
for i := 0; i < 10000; i++ {
|
||||||
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 1000})
|
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{ID: myID, Value: 1000}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local, myID)
|
||||||
|
|
||||||
b.ResetTimer()
|
b.ResetTimer()
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
@ -531,7 +524,7 @@ func Benchmark10kUpdateSme(b *testing.B) {
|
|||||||
func Benchmark10kNeed2k(b *testing.B) {
|
func Benchmark10kNeed2k(b *testing.B) {
|
||||||
var remote []protocol.FileInfo
|
var remote []protocol.FileInfo
|
||||||
for i := 0; i < 10000; i++ {
|
for i := 0; i < 10000; i++ {
|
||||||
remote = append(remote, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 1000})
|
remote = append(remote, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{ID: myID, Value: 1000}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
@ -544,13 +537,13 @@ func Benchmark10kNeed2k(b *testing.B) {
|
|||||||
|
|
||||||
var local []protocol.FileInfo
|
var local []protocol.FileInfo
|
||||||
for i := 0; i < 8000; i++ {
|
for i := 0; i < 8000; i++ {
|
||||||
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 1000})
|
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{ID: myID, Value: 1000}}})
|
||||||
}
|
}
|
||||||
for i := 8000; i < 10000; i++ {
|
for i := 8000; i < 10000; i++ {
|
||||||
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 980})
|
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{1, 980}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local, myID)
|
||||||
|
|
||||||
b.ResetTimer()
|
b.ResetTimer()
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
@ -564,7 +557,7 @@ func Benchmark10kNeed2k(b *testing.B) {
|
|||||||
func Benchmark10kHaveFullList(b *testing.B) {
|
func Benchmark10kHaveFullList(b *testing.B) {
|
||||||
var remote []protocol.FileInfo
|
var remote []protocol.FileInfo
|
||||||
for i := 0; i < 10000; i++ {
|
for i := 0; i < 10000; i++ {
|
||||||
remote = append(remote, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 1000})
|
remote = append(remote, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{ID: myID, Value: 1000}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
@ -577,13 +570,13 @@ func Benchmark10kHaveFullList(b *testing.B) {
|
|||||||
|
|
||||||
var local []protocol.FileInfo
|
var local []protocol.FileInfo
|
||||||
for i := 0; i < 2000; i++ {
|
for i := 0; i < 2000; i++ {
|
||||||
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 1000})
|
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{ID: myID, Value: 1000}}})
|
||||||
}
|
}
|
||||||
for i := 2000; i < 10000; i++ {
|
for i := 2000; i < 10000; i++ {
|
||||||
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 980})
|
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{1, 980}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local, myID)
|
||||||
|
|
||||||
b.ResetTimer()
|
b.ResetTimer()
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
@ -597,7 +590,7 @@ func Benchmark10kHaveFullList(b *testing.B) {
|
|||||||
func Benchmark10kGlobal(b *testing.B) {
|
func Benchmark10kGlobal(b *testing.B) {
|
||||||
var remote []protocol.FileInfo
|
var remote []protocol.FileInfo
|
||||||
for i := 0; i < 10000; i++ {
|
for i := 0; i < 10000; i++ {
|
||||||
remote = append(remote, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 1000})
|
remote = append(remote, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{ID: myID, Value: 1000}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
ldb, err := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
@ -610,13 +603,13 @@ func Benchmark10kGlobal(b *testing.B) {
|
|||||||
|
|
||||||
var local []protocol.FileInfo
|
var local []protocol.FileInfo
|
||||||
for i := 0; i < 2000; i++ {
|
for i := 0; i < 2000; i++ {
|
||||||
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 1000})
|
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{ID: myID, Value: 1000}}})
|
||||||
}
|
}
|
||||||
for i := 2000; i < 10000; i++ {
|
for i := 2000; i < 10000; i++ {
|
||||||
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: 980})
|
local = append(local, protocol.FileInfo{Name: fmt.Sprintf("file%d", i), Version: protocol.Vector{{1, 980}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local, myID)
|
||||||
|
|
||||||
b.ResetTimer()
|
b.ResetTimer()
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
@ -636,20 +629,20 @@ func TestGlobalReset(t *testing.T) {
|
|||||||
m := db.NewFileSet("test", ldb)
|
m := db.NewFileSet("test", ldb)
|
||||||
|
|
||||||
local := []protocol.FileInfo{
|
local := []protocol.FileInfo{
|
||||||
{Name: "a", Version: 1000},
|
{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "b", Version: 1000},
|
{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "c", Version: 1000},
|
{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "d", Version: 1000},
|
{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
}
|
}
|
||||||
|
|
||||||
remote := []protocol.FileInfo{
|
remote := []protocol.FileInfo{
|
||||||
{Name: "a", Version: 1000},
|
{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "b", Version: 1001},
|
{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1001}}},
|
||||||
{Name: "c", Version: 1002},
|
{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1002}}},
|
||||||
{Name: "e", Version: 1000},
|
{Name: "e", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
}
|
}
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local, myID)
|
||||||
g := globalList(m)
|
g := globalList(m)
|
||||||
sort.Sort(fileList(g))
|
sort.Sort(fileList(g))
|
||||||
|
|
||||||
@ -677,26 +670,26 @@ func TestNeed(t *testing.T) {
|
|||||||
m := db.NewFileSet("test", ldb)
|
m := db.NewFileSet("test", ldb)
|
||||||
|
|
||||||
local := []protocol.FileInfo{
|
local := []protocol.FileInfo{
|
||||||
{Name: "a", Version: 1000},
|
{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "b", Version: 1000},
|
{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "c", Version: 1000},
|
{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "d", Version: 1000},
|
{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
}
|
}
|
||||||
|
|
||||||
remote := []protocol.FileInfo{
|
remote := []protocol.FileInfo{
|
||||||
{Name: "a", Version: 1000},
|
{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "b", Version: 1001},
|
{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1001}}},
|
||||||
{Name: "c", Version: 1002},
|
{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1002}}},
|
||||||
{Name: "e", Version: 1000},
|
{Name: "e", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldNeed := []protocol.FileInfo{
|
shouldNeed := []protocol.FileInfo{
|
||||||
{Name: "b", Version: 1001},
|
{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1001}}},
|
||||||
{Name: "c", Version: 1002},
|
{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1002}}},
|
||||||
{Name: "e", Version: 1000},
|
{Name: "e", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
}
|
}
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local, myID)
|
||||||
m.Replace(remoteDevice0, remote)
|
m.Replace(remoteDevice0, remote)
|
||||||
|
|
||||||
need := needList(m, protocol.LocalDeviceID)
|
need := needList(m, protocol.LocalDeviceID)
|
||||||
@ -718,30 +711,30 @@ func TestLocalVersion(t *testing.T) {
|
|||||||
m := db.NewFileSet("test", ldb)
|
m := db.NewFileSet("test", ldb)
|
||||||
|
|
||||||
local1 := []protocol.FileInfo{
|
local1 := []protocol.FileInfo{
|
||||||
{Name: "a", Version: 1000},
|
{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "b", Version: 1000},
|
{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "c", Version: 1000},
|
{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "d", Version: 1000},
|
{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
}
|
}
|
||||||
|
|
||||||
local2 := []protocol.FileInfo{
|
local2 := []protocol.FileInfo{
|
||||||
local1[0],
|
local1[0],
|
||||||
// [1] deleted
|
// [1] deleted
|
||||||
local1[2],
|
local1[2],
|
||||||
{Name: "d", Version: 1002},
|
{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1002}}},
|
||||||
{Name: "e", Version: 1000},
|
{Name: "e", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
}
|
}
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local1)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local1, myID)
|
||||||
c0 := m.LocalVersion(protocol.LocalDeviceID)
|
c0 := m.LocalVersion(protocol.LocalDeviceID)
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local2)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local2, myID)
|
||||||
c1 := m.LocalVersion(protocol.LocalDeviceID)
|
c1 := m.LocalVersion(protocol.LocalDeviceID)
|
||||||
if !(c1 > c0) {
|
if !(c1 > c0) {
|
||||||
t.Fatal("Local version number should have incremented")
|
t.Fatal("Local version number should have incremented")
|
||||||
}
|
}
|
||||||
|
|
||||||
m.ReplaceWithDelete(protocol.LocalDeviceID, local2)
|
m.ReplaceWithDelete(protocol.LocalDeviceID, local2, myID)
|
||||||
c2 := m.LocalVersion(protocol.LocalDeviceID)
|
c2 := m.LocalVersion(protocol.LocalDeviceID)
|
||||||
if c2 != c1 {
|
if c2 != c1 {
|
||||||
t.Fatal("Local version number should be unchanged")
|
t.Fatal("Local version number should be unchanged")
|
||||||
@ -756,17 +749,17 @@ func TestListDropFolder(t *testing.T) {
|
|||||||
|
|
||||||
s0 := db.NewFileSet("test0", ldb)
|
s0 := db.NewFileSet("test0", ldb)
|
||||||
local1 := []protocol.FileInfo{
|
local1 := []protocol.FileInfo{
|
||||||
{Name: "a", Version: 1000},
|
{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "b", Version: 1000},
|
{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
{Name: "c", Version: 1000},
|
{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
}
|
}
|
||||||
s0.Replace(protocol.LocalDeviceID, local1)
|
s0.Replace(protocol.LocalDeviceID, local1)
|
||||||
|
|
||||||
s1 := db.NewFileSet("test1", ldb)
|
s1 := db.NewFileSet("test1", ldb)
|
||||||
local2 := []protocol.FileInfo{
|
local2 := []protocol.FileInfo{
|
||||||
{Name: "d", Version: 1002},
|
{Name: "d", Version: protocol.Vector{{ID: myID, Value: 1002}}},
|
||||||
{Name: "e", Version: 1002},
|
{Name: "e", Version: protocol.Vector{{ID: myID, Value: 1002}}},
|
||||||
{Name: "f", Version: 1002},
|
{Name: "f", Version: protocol.Vector{{ID: myID, Value: 1002}}},
|
||||||
}
|
}
|
||||||
s1.Replace(remoteDevice0, local2)
|
s1.Replace(remoteDevice0, local2)
|
||||||
|
|
||||||
@ -808,24 +801,24 @@ func TestGlobalNeedWithInvalid(t *testing.T) {
|
|||||||
s := db.NewFileSet("test1", ldb)
|
s := db.NewFileSet("test1", ldb)
|
||||||
|
|
||||||
rem0 := fileList{
|
rem0 := fileList{
|
||||||
protocol.FileInfo{Name: "a", Version: 1002, Blocks: genBlocks(4)},
|
protocol.FileInfo{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(4)},
|
||||||
protocol.FileInfo{Name: "b", Version: 1002, Flags: protocol.FlagInvalid},
|
protocol.FileInfo{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1002}}, Flags: protocol.FlagInvalid},
|
||||||
protocol.FileInfo{Name: "c", Version: 1002, Blocks: genBlocks(4)},
|
protocol.FileInfo{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(4)},
|
||||||
}
|
}
|
||||||
s.Replace(remoteDevice0, rem0)
|
s.Replace(remoteDevice0, rem0)
|
||||||
|
|
||||||
rem1 := fileList{
|
rem1 := fileList{
|
||||||
protocol.FileInfo{Name: "a", Version: 1002, Blocks: genBlocks(4)},
|
protocol.FileInfo{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(4)},
|
||||||
protocol.FileInfo{Name: "b", Version: 1002, Blocks: genBlocks(4)},
|
protocol.FileInfo{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(4)},
|
||||||
protocol.FileInfo{Name: "c", Version: 1002, Flags: protocol.FlagInvalid},
|
protocol.FileInfo{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1002}}, Flags: protocol.FlagInvalid},
|
||||||
}
|
}
|
||||||
s.Replace(remoteDevice1, rem1)
|
s.Replace(remoteDevice1, rem1)
|
||||||
|
|
||||||
total := fileList{
|
total := fileList{
|
||||||
// There's a valid copy of each file, so it should be merged
|
// There's a valid copy of each file, so it should be merged
|
||||||
protocol.FileInfo{Name: "a", Version: 1002, Blocks: genBlocks(4)},
|
protocol.FileInfo{Name: "a", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(4)},
|
||||||
protocol.FileInfo{Name: "b", Version: 1002, Blocks: genBlocks(4)},
|
protocol.FileInfo{Name: "b", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(4)},
|
||||||
protocol.FileInfo{Name: "c", Version: 1002, Blocks: genBlocks(4)},
|
protocol.FileInfo{Name: "c", Version: protocol.Vector{{ID: myID, Value: 1002}}, Blocks: genBlocks(4)},
|
||||||
}
|
}
|
||||||
|
|
||||||
need := fileList(needList(s, protocol.LocalDeviceID))
|
need := fileList(needList(s, protocol.LocalDeviceID))
|
||||||
@ -854,10 +847,10 @@ func TestLongPath(t *testing.T) {
|
|||||||
name := b.String() // 5000 characters
|
name := b.String() // 5000 characters
|
||||||
|
|
||||||
local := []protocol.FileInfo{
|
local := []protocol.FileInfo{
|
||||||
{Name: string(name), Version: 1000},
|
{Name: string(name), Version: protocol.Vector{{ID: myID, Value: 1000}}},
|
||||||
}
|
}
|
||||||
|
|
||||||
s.ReplaceWithDelete(protocol.LocalDeviceID, local)
|
s.ReplaceWithDelete(protocol.LocalDeviceID, local, myID)
|
||||||
|
|
||||||
gf := globalList(s)
|
gf := globalList(s)
|
||||||
if l := len(gf); l != 1 {
|
if l := len(gf); l != 1 {
|
||||||
|
|||||||
@ -86,7 +86,7 @@ func init() {
|
|||||||
func TestRequest(t *testing.T) {
|
func TestRequest(t *testing.T) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
|
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
|
|
||||||
// device1 shares default, but device2 doesn't
|
// device1 shares default, but device2 doesn't
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
@ -173,7 +173,7 @@ func genFiles(n int) []protocol.FileInfo {
|
|||||||
|
|
||||||
func BenchmarkIndex10000(b *testing.B) {
|
func BenchmarkIndex10000(b *testing.B) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
m.ScanFolder("default")
|
m.ScanFolder("default")
|
||||||
files := genFiles(10000)
|
files := genFiles(10000)
|
||||||
@ -186,7 +186,7 @@ func BenchmarkIndex10000(b *testing.B) {
|
|||||||
|
|
||||||
func BenchmarkIndex00100(b *testing.B) {
|
func BenchmarkIndex00100(b *testing.B) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
m.ScanFolder("default")
|
m.ScanFolder("default")
|
||||||
files := genFiles(100)
|
files := genFiles(100)
|
||||||
@ -199,7 +199,7 @@ func BenchmarkIndex00100(b *testing.B) {
|
|||||||
|
|
||||||
func BenchmarkIndexUpdate10000f10000(b *testing.B) {
|
func BenchmarkIndexUpdate10000f10000(b *testing.B) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
m.ScanFolder("default")
|
m.ScanFolder("default")
|
||||||
files := genFiles(10000)
|
files := genFiles(10000)
|
||||||
@ -213,7 +213,7 @@ func BenchmarkIndexUpdate10000f10000(b *testing.B) {
|
|||||||
|
|
||||||
func BenchmarkIndexUpdate10000f00100(b *testing.B) {
|
func BenchmarkIndexUpdate10000f00100(b *testing.B) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
m.ScanFolder("default")
|
m.ScanFolder("default")
|
||||||
files := genFiles(10000)
|
files := genFiles(10000)
|
||||||
@ -228,7 +228,7 @@ func BenchmarkIndexUpdate10000f00100(b *testing.B) {
|
|||||||
|
|
||||||
func BenchmarkIndexUpdate10000f00001(b *testing.B) {
|
func BenchmarkIndexUpdate10000f00001(b *testing.B) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
m.ScanFolder("default")
|
m.ScanFolder("default")
|
||||||
files := genFiles(10000)
|
files := genFiles(10000)
|
||||||
@ -286,7 +286,7 @@ func (FakeConnection) Statistics() protocol.Statistics {
|
|||||||
|
|
||||||
func BenchmarkRequest(b *testing.B) {
|
func BenchmarkRequest(b *testing.B) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
m.ScanFolder("default")
|
m.ScanFolder("default")
|
||||||
|
|
||||||
@ -336,7 +336,7 @@ func TestDeviceRename(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(config.Wrap("tmpconfig.xml", cfg), "device", "syncthing", "dev", db)
|
m := NewModel(config.Wrap("tmpconfig.xml", cfg), protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
if cfg.Devices[0].Name != "" {
|
if cfg.Devices[0].Name != "" {
|
||||||
t.Errorf("Device already has a name")
|
t.Errorf("Device already has a name")
|
||||||
}
|
}
|
||||||
@ -403,7 +403,7 @@ func TestClusterConfig(t *testing.T) {
|
|||||||
|
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
|
|
||||||
m := NewModel(config.Wrap("/tmp/test", cfg), "device", "syncthing", "dev", db)
|
m := NewModel(config.Wrap("/tmp/test", cfg), protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(cfg.Folders[0])
|
m.AddFolder(cfg.Folders[0])
|
||||||
m.AddFolder(cfg.Folders[1])
|
m.AddFolder(cfg.Folders[1])
|
||||||
|
|
||||||
@ -469,7 +469,7 @@ func TestIgnores(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
m.StartFolderRO("default")
|
m.StartFolderRO("default")
|
||||||
|
|
||||||
@ -543,7 +543,7 @@ func TestIgnores(t *testing.T) {
|
|||||||
|
|
||||||
func TestRefuseUnknownBits(t *testing.T) {
|
func TestRefuseUnknownBits(t *testing.T) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
|
|
||||||
m.ScanFolder("default")
|
m.ScanFolder("default")
|
||||||
@ -580,7 +580,7 @@ func TestRefuseUnknownBits(t *testing.T) {
|
|||||||
|
|
||||||
func TestGlobalDirectoryTree(t *testing.T) {
|
func TestGlobalDirectoryTree(t *testing.T) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
|
|
||||||
b := func(isfile bool, path ...string) protocol.FileInfo {
|
b := func(isfile bool, path ...string) protocol.FileInfo {
|
||||||
@ -830,7 +830,7 @@ func TestGlobalDirectoryTree(t *testing.T) {
|
|||||||
func TestGlobalDirectorySelfFixing(t *testing.T) {
|
func TestGlobalDirectorySelfFixing(t *testing.T) {
|
||||||
|
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
|
|
||||||
b := func(isfile bool, path ...string) protocol.FileInfo {
|
b := func(isfile bool, path ...string) protocol.FileInfo {
|
||||||
@ -991,7 +991,7 @@ func genDeepFiles(n, d int) []protocol.FileInfo {
|
|||||||
|
|
||||||
func BenchmarkTree_10000_50(b *testing.B) {
|
func BenchmarkTree_10000_50(b *testing.B) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
m.ScanFolder("default")
|
m.ScanFolder("default")
|
||||||
files := genDeepFiles(10000, 50)
|
files := genDeepFiles(10000, 50)
|
||||||
@ -1006,7 +1006,7 @@ func BenchmarkTree_10000_50(b *testing.B) {
|
|||||||
|
|
||||||
func BenchmarkTree_10000_10(b *testing.B) {
|
func BenchmarkTree_10000_10(b *testing.B) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
m.ScanFolder("default")
|
m.ScanFolder("default")
|
||||||
files := genDeepFiles(10000, 10)
|
files := genDeepFiles(10000, 10)
|
||||||
@ -1021,7 +1021,7 @@ func BenchmarkTree_10000_10(b *testing.B) {
|
|||||||
|
|
||||||
func BenchmarkTree_00100_50(b *testing.B) {
|
func BenchmarkTree_00100_50(b *testing.B) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
m.ScanFolder("default")
|
m.ScanFolder("default")
|
||||||
files := genDeepFiles(100, 50)
|
files := genDeepFiles(100, 50)
|
||||||
@ -1036,7 +1036,7 @@ func BenchmarkTree_00100_50(b *testing.B) {
|
|||||||
|
|
||||||
func BenchmarkTree_00100_10(b *testing.B) {
|
func BenchmarkTree_00100_10(b *testing.B) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
m.ScanFolder("default")
|
m.ScanFolder("default")
|
||||||
files := genDeepFiles(100, 10)
|
files := genDeepFiles(100, 10)
|
||||||
|
|||||||
@ -67,7 +67,7 @@ func TestHandleFile(t *testing.T) {
|
|||||||
requiredFile.Blocks = blocks[1:]
|
requiredFile.Blocks = blocks[1:]
|
||||||
|
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
// Update index
|
// Update index
|
||||||
m.updateLocal("default", existingFile)
|
m.updateLocal("default", existingFile)
|
||||||
@ -121,7 +121,7 @@ func TestHandleFileWithTemp(t *testing.T) {
|
|||||||
requiredFile.Blocks = blocks[1:]
|
requiredFile.Blocks = blocks[1:]
|
||||||
|
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
// Update index
|
// Update index
|
||||||
m.updateLocal("default", existingFile)
|
m.updateLocal("default", existingFile)
|
||||||
@ -181,7 +181,7 @@ func TestCopierFinder(t *testing.T) {
|
|||||||
requiredFile.Name = "file2"
|
requiredFile.Name = "file2"
|
||||||
|
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
// Update index
|
// Update index
|
||||||
m.updateLocal("default", existingFile)
|
m.updateLocal("default", existingFile)
|
||||||
@ -256,7 +256,7 @@ func TestCopierCleanup(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
|
|
||||||
// Create a file
|
// Create a file
|
||||||
@ -275,7 +275,7 @@ func TestCopierCleanup(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
file.Blocks = []protocol.BlockInfo{blocks[1]}
|
file.Blocks = []protocol.BlockInfo{blocks[1]}
|
||||||
file.Version++
|
file.Version = file.Version.Update(protocol.LocalDeviceID.Short())
|
||||||
// Update index (removing old blocks)
|
// Update index (removing old blocks)
|
||||||
m.updateLocal("default", file)
|
m.updateLocal("default", file)
|
||||||
|
|
||||||
@ -288,7 +288,7 @@ func TestCopierCleanup(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
file.Blocks = []protocol.BlockInfo{blocks[0]}
|
file.Blocks = []protocol.BlockInfo{blocks[0]}
|
||||||
file.Version++
|
file.Version = file.Version.Update(protocol.LocalDeviceID.Short())
|
||||||
// Update index (removing old blocks)
|
// Update index (removing old blocks)
|
||||||
m.updateLocal("default", file)
|
m.updateLocal("default", file)
|
||||||
|
|
||||||
@ -305,7 +305,7 @@ func TestCopierCleanup(t *testing.T) {
|
|||||||
// if it fails to find the block.
|
// if it fails to find the block.
|
||||||
func TestLastResortPulling(t *testing.T) {
|
func TestLastResortPulling(t *testing.T) {
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
|
|
||||||
// Add a file to index (with the incorrect block representation, as content
|
// Add a file to index (with the incorrect block representation, as content
|
||||||
@ -378,7 +378,7 @@ func TestDeregisterOnFailInCopy(t *testing.T) {
|
|||||||
|
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
|
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
|
|
||||||
emitter := NewProgressEmitter(defaultConfig)
|
emitter := NewProgressEmitter(defaultConfig)
|
||||||
@ -465,7 +465,7 @@ func TestDeregisterOnFailInPull(t *testing.T) {
|
|||||||
defer os.Remove("testdata/" + defTempNamer.TempName("filex"))
|
defer os.Remove("testdata/" + defTempNamer.TempName("filex"))
|
||||||
|
|
||||||
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
db, _ := leveldb.Open(storage.NewMemStorage(), nil)
|
||||||
m := NewModel(defaultConfig, "device", "syncthing", "dev", db)
|
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", db)
|
||||||
m.AddFolder(defaultFolderConfig)
|
m.AddFolder(defaultFolderConfig)
|
||||||
|
|
||||||
emitter := NewProgressEmitter(defaultConfig)
|
emitter := NewProgressEmitter(defaultConfig)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user