github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgCache/FileChangeCache_test.go (about) 1 package kmgCache 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/bronze1man/kmg/kmgFile" 8 "github.com/bronze1man/kmg/kmgTest" 9 "github.com/bronze1man/kmg/kmgCmd" 10 ) 11 12 func TestFileChangeCacheOneFile(t *testing.T) { 13 //可以递归 遍历文件 14 //缓存数据文件不存在,没有问题 15 //指定的文件不存在,也没有问题 16 callLog := make([]string, 32) 17 //指定的文件不存在 18 kmgFile.MustDeleteFile(getFileChangeCachePath("test_file_change_cache")) 19 kmgFile.MustDeleteFile("testFile/notExist") 20 21 MustFileChangeCache("test_file_change_cache", []string{ 22 "testFile/notExist", 23 }, func() { 24 callLog[1] = "notExist" 25 kmgFile.MustWriteFileWithMkdir("testFile/notExist", []byte("1")) 26 }) 27 kmgTest.Equal(callLog[1], "notExist") 28 29 MustFileChangeCache("test_file_change_cache", []string{ 30 "testFile/notExist", 31 }, func() { 32 callLog[2] = "notExist" 33 }) 34 kmgTest.Equal(callLog[2], "") 35 36 time.Sleep(time.Second * 1) 37 38 kmgFile.MustWriteFile("testFile/notExist", []byte("2")) 39 MustFileChangeCache("test_file_change_cache", []string{ 40 "testFile/notExist", 41 }, func() { 42 callLog[3] = "notExist" 43 }) 44 kmgTest.Equal(callLog[3], "notExist") 45 } 46 47 func TestFileChangeCacheOneDir(t *testing.T) { 48 callLog := make([]string, 32) 49 //递归可用 50 kmgFile.MustDeleteFile(getFileChangeCachePath("test_file_change_cache")) 51 kmgFile.MustMkdirAll("testFile/d1/d2") 52 kmgFile.MustWriteFile("testFile/d1/d2/f3", []byte("1")) 53 MustFileChangeCache("test_file_change_cache", []string{ 54 "testFile/d1", 55 }, func() { 56 callLog[3] = "f3" 57 }) 58 kmgTest.Equal(callLog[3], "f3") 59 60 MustFileChangeCache("test_file_change_cache", []string{ 61 "testFile/d1", 62 }, func() { 63 callLog[4] = "f3" 64 }) 65 kmgTest.Equal(callLog[4], "") 66 67 time.Sleep(time.Second * 1) 68 kmgFile.MustWriteFile("testFile/d1/d2/f3", []byte("2")) 69 MustFileChangeCache("test_file_change_cache", []string{ 70 "testFile/d1", 71 }, func() { 72 callLog[5] = "f3" 73 }) 74 kmgTest.Equal(callLog[5], "f3") 75 } 76 77 func TestFileMd5ChangeCacheOneDir(t *testing.T) { 78 callLog := make([]string, 32) 79 //递归可用 80 kmgFile.MustDeleteFile(getFileChangeCachePath("test_file_change_cache")) 81 kmgFile.MustDelete("testFile/d1") 82 83 kmgFile.MustMkdirAll("testFile/d1/d2") 84 kmgFile.MustWriteFile("testFile/d1/d2/f3", []byte("1")) 85 MustMd5FileChangeCache("test_file_change_cache", []string{ 86 "testFile/d1", 87 }, func() { 88 callLog[3] = "f3" 89 }) 90 kmgTest.Equal(callLog[3], "f3") 91 92 //没有碰过任何东西,缓存有效 93 MustMd5FileChangeCache("test_file_change_cache", []string{ 94 "testFile/d1", 95 }, func() { 96 callLog[4] = "f3" 97 }) 98 kmgTest.Equal(callLog[4], "") 99 100 //修改文件内容,缓存应该无效 101 kmgFile.MustWriteFile("testFile/d1/d2/f3", []byte("2")) 102 MustMd5FileChangeCache("test_file_change_cache", []string{ 103 "testFile/d1", 104 }, func() { 105 callLog[5] = "f3" 106 }) 107 kmgTest.Equal(callLog[5], "f3") 108 109 //删除文件,缓存应该无效 110 kmgFile.MustDelete("testFile/d1/d2/f3") 111 MustMd5FileChangeCache("test_file_change_cache", []string{ 112 "testFile/d1", 113 }, func() { 114 callLog[6] = "f4" 115 }) 116 kmgTest.Equal(callLog[6], "f4") 117 118 //添加文件,缓存应该无效 119 kmgFile.MustWriteFile("testFile/d1/d2/f4", []byte("3")) 120 MustMd5FileChangeCache("test_file_change_cache", []string{ 121 "testFile/d1", 122 }, func() { 123 callLog[7] = "f4" 124 }) 125 kmgTest.Equal(callLog[7], "f4") 126 127 //读取文件,缓存有效 128 kmgFile.MustReadFile("testFile/d1/d2/f4") 129 MustMd5FileChangeCache("test_file_change_cache", []string{ 130 "testFile/d1", 131 }, func() { 132 callLog[8] = "f4" 133 }) 134 kmgTest.Equal(callLog[8], "") 135 136 //创建目录,缓存有效 137 kmgFile.MustMkdir("testFile/d1/d2/f5") 138 MustMd5FileChangeCache("test_file_change_cache", []string{ 139 "testFile/d1", 140 }, func() { 141 callLog[9] = "f4" 142 }) 143 kmgTest.Equal(callLog[9], "") 144 } 145 146 func TestFileMd5ChangeCacheSymlink(t *testing.T){ 147 callLog := make([]string, 32) 148 //递归可用 149 kmgFile.MustDeleteFile(getFileChangeCachePath("test_file_change_cache")) 150 kmgFile.MustDelete("testFile") 151 kmgFile.MustWriteFileWithMkdir("testFile/d1/d2",[]byte("1")) 152 kmgCmd.MustRun("ln -s d1 testFile/d3") 153 MustMd5FileChangeCache("test_file_change_cache", []string{ 154 "testFile", 155 }, func() { 156 callLog[0] = "f3" 157 }) 158 kmgTest.Equal(callLog[0], "f3") 159 MustMd5FileChangeCache("test_file_change_cache", []string{ 160 "testFile", 161 }, func() { 162 callLog[1] = "f3" 163 }) 164 kmgTest.Equal(callLog[1], "") 165 }