| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // Copyright (C) 2015 The Syncthing Authors.
- //
- // This Source Code Form is subject to the terms of the Mozilla Public
- // License, v. 2.0. If a copy of the MPL was not distributed with this file,
- // You can obtain one at http://mozilla.org/MPL/2.0/.
- package db
- import (
- "testing"
- "time"
- )
- func TestVirtualMtimeRepo(t *testing.T) {
- ldb := OpenMemory()
- // A few repos so we can ensure they don't pollute each other
- repo1 := NewVirtualMtimeRepo(ldb, "folder1")
- repo2 := NewVirtualMtimeRepo(ldb, "folder2")
- // Since GetMtime() returns its argument if the key isn't found or is outdated, we need a dummy to test with.
- dummyTime := time.Date(2001, time.February, 3, 4, 5, 6, 0, time.UTC)
- // Some times to test with
- time1 := time.Date(2001, time.February, 3, 4, 5, 7, 0, time.UTC)
- time2 := time.Date(2010, time.February, 3, 4, 5, 6, 0, time.UTC)
- file1 := "file1.txt"
- // Files are not present at the start
- if v := repo1.GetMtime(file1, dummyTime); !v.Equal(dummyTime) {
- t.Errorf("Mtime should be missing (%v) from repo 1 but it's %v", dummyTime, v)
- }
- if v := repo2.GetMtime(file1, dummyTime); !v.Equal(dummyTime) {
- t.Errorf("Mtime should be missing (%v) from repo 2 but it's %v", dummyTime, v)
- }
- repo1.UpdateMtime(file1, time1, time2)
- // Now it should return time2 only when time1 is passed as the argument
- if v := repo1.GetMtime(file1, time1); !v.Equal(time2) {
- t.Errorf("Mtime should be %v for disk time %v but we got %v", time2, time1, v)
- }
- if v := repo1.GetMtime(file1, dummyTime); !v.Equal(dummyTime) {
- t.Errorf("Mtime should be %v for disk time %v but we got %v", dummyTime, dummyTime, v)
- }
- // repo2 shouldn't know about this file
- if v := repo2.GetMtime(file1, time1); !v.Equal(time1) {
- t.Errorf("Mtime should be %v for disk time %v in repo 2 but we got %v", time1, time1, v)
- }
- repo1.DeleteMtime(file1)
- // Now it should be gone
- if v := repo1.GetMtime(file1, time1); !v.Equal(time1) {
- t.Errorf("Mtime should be %v for disk time %v but we got %v", time1, time1, v)
- }
- // Try again but with Drop()
- repo1.UpdateMtime(file1, time1, time2)
- repo1.Drop()
- if v := repo1.GetMtime(file1, time1); !v.Equal(time1) {
- t.Errorf("Mtime should be %v for disk time %v but we got %v", time1, time1, v)
- }
- }
|