You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

283 lines
6.9 KiB

  1. #include "acutest.h"
  2. #include "config.hpp"
  3. void
  4. test_nop()
  5. {
  6. TEST_CHECK(true);
  7. }
  8. void
  9. test_config_bool()
  10. {
  11. ConfigBOOL v;
  12. TEST_CHECK(v.from_string("true") == 0);
  13. TEST_CHECK(v == true);
  14. TEST_CHECK(v.to_string() == "true");
  15. TEST_CHECK(v.from_string("false") == 0);
  16. TEST_CHECK(v == false);
  17. TEST_CHECK(v.to_string() == "false");
  18. TEST_CHECK(v.from_string("asdf") == -EINVAL);
  19. }
  20. void
  21. test_config_uint64()
  22. {
  23. ConfigUINT64 v;
  24. TEST_CHECK(v.from_string("0") == 0);
  25. TEST_CHECK(v == (uint64_t)0);
  26. TEST_CHECK(v.to_string() == "0");
  27. TEST_CHECK(v.from_string("123") == 0);
  28. TEST_CHECK(v == (uint64_t)123);
  29. TEST_CHECK(v.to_string() == "123");
  30. TEST_CHECK(v.from_string("1234567890") == 0);
  31. TEST_CHECK(v == (uint64_t)1234567890);
  32. TEST_CHECK(v.to_string() == "1234567890");
  33. TEST_CHECK(v.from_string("asdf") == -EINVAL);
  34. }
  35. void
  36. test_config_int()
  37. {
  38. ConfigINT v;
  39. TEST_CHECK(v.from_string("0") == 0);
  40. TEST_CHECK(v == (int)0);
  41. TEST_CHECK(v.to_string() == "0");
  42. TEST_CHECK(v.from_string("123") == 0);
  43. TEST_CHECK(v == (int)123);
  44. TEST_CHECK(v.to_string() == "123");
  45. TEST_CHECK(v.from_string("1234567890") == 0);
  46. TEST_CHECK(v == (int)1234567890);
  47. TEST_CHECK(v.to_string() == "1234567890");
  48. TEST_CHECK(v.from_string("asdf") == -EINVAL);
  49. }
  50. void
  51. test_config_str()
  52. {
  53. ConfigSTR v;
  54. TEST_CHECK(v.from_string("foo") == 0);
  55. TEST_CHECK(v == "foo");
  56. TEST_CHECK(v.to_string() == "foo");
  57. }
  58. void
  59. test_config_branches()
  60. {
  61. uint64_t minfreespace;
  62. Branches b(minfreespace);
  63. Branches::CPtr bcp0;
  64. Branches::CPtr bcp1;
  65. minfreespace = 1234;
  66. TEST_CHECK(b->minfreespace() == 1234);
  67. TEST_CHECK(b.to_string() == "");
  68. bcp0 = b;
  69. TEST_CHECK(b.from_string("/foo/bar") == 0);
  70. TEST_CHECK(b.to_string() == "/foo/bar=RW");
  71. bcp1 = b;
  72. TEST_CHECK(bcp0.get() != bcp1.get());
  73. TEST_CHECK(b.from_string("/foo/bar=RW,1234") == 0);
  74. TEST_CHECK(b.to_string() == "/foo/bar=RW,1234");
  75. TEST_CHECK(b.from_string("/foo/bar=RO,1234:/foo/baz=NC,4321") == 0);
  76. TEST_CHECK(b.to_string() == "/foo/bar=RO,1234:/foo/baz=NC,4321");
  77. bcp0 = b;
  78. TEST_CHECK((*bcp0).size() == 2);
  79. TEST_CHECK((*bcp0)[0].path == "/foo/bar");
  80. TEST_CHECK((*bcp0)[0].minfreespace() == 1234);
  81. TEST_MSG("minfreespace: expected = %lu; produced = %lu",
  82. 1234,
  83. (*bcp0)[0].minfreespace());
  84. TEST_CHECK((*bcp0)[1].path == "/foo/baz");
  85. TEST_CHECK((*bcp0)[1].minfreespace() == 4321);
  86. TEST_MSG("minfreespace: expected = %lu; produced = %lu",
  87. 4321,
  88. (*bcp0)[1].minfreespace());
  89. }
  90. void
  91. test_config_cachefiles()
  92. {
  93. CacheFiles cf;
  94. TEST_CHECK(cf.from_string("libfuse") == 0);
  95. TEST_CHECK(cf.to_string() == "libfuse");
  96. TEST_CHECK(cf.from_string("off") == 0);
  97. TEST_CHECK(cf.to_string() == "off");
  98. TEST_CHECK(cf.from_string("partial") == 0);
  99. TEST_CHECK(cf.to_string() == "partial");
  100. TEST_CHECK(cf.from_string("full") == 0);
  101. TEST_CHECK(cf.to_string() == "full");
  102. TEST_CHECK(cf.from_string("auto-full") == 0);
  103. TEST_CHECK(cf.to_string() == "auto-full");
  104. TEST_CHECK(cf.from_string("foobar") == -EINVAL);
  105. }
  106. void
  107. test_config_inodecalc()
  108. {
  109. InodeCalc ic("passthrough");
  110. TEST_CHECK(ic.from_string("passthrough") == 0);
  111. TEST_CHECK(ic.to_string() == "passthrough");
  112. TEST_CHECK(ic.from_string("path-hash") == 0);
  113. TEST_CHECK(ic.to_string() == "path-hash");
  114. TEST_CHECK(ic.from_string("devino-hash") == 0);
  115. TEST_CHECK(ic.to_string() == "devino-hash");
  116. TEST_CHECK(ic.from_string("hybrid-hash") == 0);
  117. TEST_CHECK(ic.to_string() == "hybrid-hash");
  118. TEST_CHECK(ic.from_string("path-hash32") == 0);
  119. TEST_CHECK(ic.to_string() == "path-hash32");
  120. TEST_CHECK(ic.from_string("devino-hash32") == 0);
  121. TEST_CHECK(ic.to_string() == "devino-hash32");
  122. TEST_CHECK(ic.from_string("hybrid-hash32") == 0);
  123. TEST_CHECK(ic.to_string() == "hybrid-hash32");
  124. TEST_CHECK(ic.from_string("asdf") == -EINVAL);
  125. }
  126. void
  127. test_config_moveonenospc()
  128. {
  129. MoveOnENOSPC m(false);
  130. TEST_CHECK(m.to_string() == "false");
  131. TEST_CHECK(m.from_string("mfs") == 0);
  132. TEST_CHECK(m.to_string() == "mfs");
  133. TEST_CHECK(m.from_string("mspmfs") == 0);
  134. TEST_CHECK(m.to_string() == "mspmfs");
  135. TEST_CHECK(m.from_string("true") == 0);
  136. TEST_CHECK(m.to_string() == "mfs");
  137. TEST_CHECK(m.from_string("blah") == -EINVAL);
  138. }
  139. void
  140. test_config_nfsopenhack()
  141. {
  142. NFSOpenHack n;
  143. TEST_CHECK(n.from_string("off") == 0);
  144. TEST_CHECK(n.to_string() == "off");
  145. TEST_CHECK(n == NFSOpenHack::ENUM::OFF);
  146. TEST_CHECK(n.from_string("git") == 0);
  147. TEST_CHECK(n.to_string() == "git");
  148. TEST_CHECK(n == NFSOpenHack::ENUM::GIT);
  149. TEST_CHECK(n.from_string("all") == 0);
  150. TEST_CHECK(n.to_string() == "all");
  151. TEST_CHECK(n == NFSOpenHack::ENUM::ALL);
  152. }
  153. void
  154. test_config_readdir()
  155. {
  156. ReadDir r;
  157. TEST_CHECK(r.from_string("linux") == 0);
  158. TEST_CHECK(r.to_string() == "linux");
  159. TEST_CHECK(r == ReadDir::ENUM::LINUX);
  160. TEST_CHECK(r.from_string("posix") == 0);
  161. TEST_CHECK(r.to_string() == "posix");
  162. TEST_CHECK(r == ReadDir::ENUM::POSIX);
  163. }
  164. void
  165. test_config_statfs()
  166. {
  167. StatFS s;
  168. TEST_CHECK(s.from_string("base") == 0);
  169. TEST_CHECK(s.to_string() == "base");
  170. TEST_CHECK(s == StatFS::ENUM::BASE);
  171. TEST_CHECK(s.from_string("full") == 0);
  172. TEST_CHECK(s.to_string() == "full");
  173. TEST_CHECK(s == StatFS::ENUM::FULL);
  174. TEST_CHECK(s.from_string("asdf") == -EINVAL);
  175. }
  176. void
  177. test_config_statfs_ignore()
  178. {
  179. StatFSIgnore s;
  180. TEST_CHECK(s.from_string("none") == 0);
  181. TEST_CHECK(s.to_string() == "none");
  182. TEST_CHECK(s == StatFSIgnore::ENUM::NONE);
  183. TEST_CHECK(s.from_string("ro") == 0);
  184. TEST_CHECK(s.to_string() == "ro");
  185. TEST_CHECK(s == StatFSIgnore::ENUM::RO);
  186. TEST_CHECK(s.from_string("nc") == 0);
  187. TEST_CHECK(s.to_string() == "nc");
  188. TEST_CHECK(s == StatFSIgnore::ENUM::NC);
  189. TEST_CHECK(s.from_string("asdf") == -EINVAL);
  190. }
  191. void
  192. test_config_xattr()
  193. {
  194. XAttr x;
  195. TEST_CHECK(x.from_string("passthrough") == 0);
  196. TEST_CHECK(x.to_string() == "passthrough");
  197. TEST_CHECK(x == XAttr::ENUM::PASSTHROUGH);
  198. TEST_CHECK(x.from_string("noattr") == 0);
  199. TEST_CHECK(x.to_string() == "noattr");
  200. TEST_CHECK(x == XAttr::ENUM::NOATTR);
  201. TEST_CHECK(x.from_string("nosys") == 0);
  202. TEST_CHECK(x.to_string() == "nosys");
  203. TEST_CHECK(x == XAttr::ENUM::NOSYS);
  204. TEST_CHECK(x.from_string("asdf") == -EINVAL);
  205. }
  206. void
  207. test_config()
  208. {
  209. Config cfg;
  210. TEST_CHECK(cfg.set_raw("async_read","true") == 0);
  211. }
  212. TEST_LIST =
  213. {
  214. {"nop",test_nop},
  215. {"config_bool",test_config_bool},
  216. {"config_uint64",test_config_uint64},
  217. {"config_int",test_config_int},
  218. {"config_str",test_config_str},
  219. {"config_branches",test_config_branches},
  220. {"config_cachefiles",test_config_cachefiles},
  221. {"config_inodecalc",test_config_inodecalc},
  222. {"config_moveonenospc",test_config_moveonenospc},
  223. {"config_nfsopenhack",test_config_nfsopenhack},
  224. {"config_readdir",test_config_readdir},
  225. {"config_statfs",test_config_statfs},
  226. {"config_statfsignore",test_config_statfs_ignore},
  227. {"config_xattr",test_config_xattr},
  228. {"config",test_config},
  229. {NULL,NULL}
  230. };