file_system_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package fileSystem
  2. import (
  3. "testing"
  4. "time"
  5. )
  6. func TestSetAndGet(t *testing.T) {
  7. fs := New()
  8. setAndGet(fs, "/foobar", t)
  9. setAndGet(fs, "/foo/bar", t)
  10. setAndGet(fs, "/foo/foo/bar", t)
  11. }
  12. func TestRemove(t *testing.T) {
  13. fs := New()
  14. fs.Set("/foo", "bar", Permanent, 1, 1)
  15. err := fs.Delete("/foo", false, 1, 1)
  16. if err != nil {
  17. t.Fatalf("cannot delete %s [%s]", "/foo", err.Error())
  18. }
  19. _, err = fs.InternalGet("/foo", 1, 1)
  20. if err == nil || err.Error() != "Key Not Found" {
  21. t.Fatalf("can get the node after deletion")
  22. }
  23. fs.Set("/foo/bar", "bar", Permanent, 1, 1)
  24. fs.Set("/foo/car", "car", Permanent, 1, 1)
  25. fs.Set("/foo/dar/dar", "dar", Permanent, 1, 1)
  26. err = fs.Delete("/foo", false, 1, 1)
  27. if err == nil {
  28. t.Fatalf("should not be able to delete a directory without recursive")
  29. }
  30. err = fs.Delete("/foo", true, 1, 1)
  31. if err != nil {
  32. t.Fatalf("cannot delete %s [%s]", "/foo", err.Error())
  33. }
  34. _, err = fs.InternalGet("/foo", 1, 1)
  35. if err == nil || err.Error() != "Key Not Found" {
  36. t.Fatalf("can get the node after deletion ")
  37. }
  38. }
  39. func TestExpire(t *testing.T) {
  40. fs := New()
  41. expire := time.Now().Add(time.Second)
  42. fs.Set("/foo", "bar", expire, 1, 1)
  43. _, err := fs.InternalGet("/foo", 1, 1)
  44. if err != nil {
  45. t.Fatalf("can not get the node")
  46. }
  47. time.Sleep(time.Second * 2)
  48. _, err = fs.InternalGet("/foo", 1, 1)
  49. if err == nil {
  50. t.Fatalf("can get the node after expiration time")
  51. }
  52. fs.Set("/foo", "bar", expire, 1, 1)
  53. time.Sleep(time.Millisecond * 50)
  54. _, err = fs.InternalGet("/foo", 1, 1)
  55. if err == nil {
  56. t.Fatalf("can get the node after expiration time")
  57. }
  58. expire = time.Now().Add(time.Second)
  59. fs.Set("/foo", "bar", expire, 1, 1)
  60. fs.Delete("/foo", false, 1, 1)
  61. }
  62. func setAndGet(fs *FileSystem, path string, t *testing.T) {
  63. err := fs.Set(path, "bar", Permanent, 1, 1)
  64. if err != nil {
  65. t.Fatalf("cannot set %s=bar [%s]", path, err.Error())
  66. }
  67. n, err := fs.InternalGet(path, 1, 1)
  68. if err != nil {
  69. t.Fatalf("cannot get %s [%s]", path, err.Error())
  70. }
  71. value, err := n.Read()
  72. if err != nil {
  73. t.Fatalf("cannot read %s [%s]", path, err.Error())
  74. }
  75. if value != "bar" {
  76. t.Fatalf("expect value of %s is bar [%s]", path, value)
  77. }
  78. }