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.

290 lines
7.1 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. // Parse initial value for branch
  69. TEST_CHECK(b.from_string(b.to_string()) == 0);
  70. bcp0 = b;
  71. TEST_CHECK(b.from_string("/foo/bar") == 0);
  72. TEST_CHECK(b.to_string() == "/foo/bar=RW");
  73. bcp1 = b;
  74. TEST_CHECK(bcp0.get() != bcp1.get());
  75. TEST_CHECK(b.from_string("/foo/bar=RW,1234") == 0);
  76. TEST_CHECK(b.to_string() == "/foo/bar=RW,1234");
  77. TEST_CHECK(b.from_string("/foo/bar=RO,1234:/foo/baz=NC,4321") == 0);
  78. TEST_CHECK(b.to_string() == "/foo/bar=RO,1234:/foo/baz=NC,4321");
  79. bcp0 = b;
  80. TEST_CHECK((*bcp0).size() == 2);
  81. TEST_CHECK((*bcp0)[0].path == "/foo/bar");
  82. TEST_CHECK((*bcp0)[0].minfreespace() == 1234);
  83. TEST_MSG("minfreespace: expected = %lu; produced = %lu",
  84. 1234,
  85. (*bcp0)[0].minfreespace());
  86. TEST_CHECK((*bcp0)[1].path == "/foo/baz");
  87. TEST_CHECK((*bcp0)[1].minfreespace() == 4321);
  88. TEST_MSG("minfreespace: expected = %lu; produced = %lu",
  89. 4321,
  90. (*bcp0)[1].minfreespace());
  91. TEST_CHECK(b.from_string("foo/bar") == 0);
  92. TEST_CHECK(b.from_string("./foo/bar") == 0);
  93. TEST_CHECK(b.from_string("./foo/bar:/bar/baz:blah/asdf") == 0);
  94. }
  95. void
  96. test_config_cachefiles()
  97. {
  98. CacheFiles cf;
  99. TEST_CHECK(cf.from_string("libfuse") == 0);
  100. TEST_CHECK(cf.to_string() == "libfuse");
  101. TEST_CHECK(cf.from_string("off") == 0);
  102. TEST_CHECK(cf.to_string() == "off");
  103. TEST_CHECK(cf.from_string("partial") == 0);
  104. TEST_CHECK(cf.to_string() == "partial");
  105. TEST_CHECK(cf.from_string("full") == 0);
  106. TEST_CHECK(cf.to_string() == "full");
  107. TEST_CHECK(cf.from_string("auto-full") == 0);
  108. TEST_CHECK(cf.to_string() == "auto-full");
  109. TEST_CHECK(cf.from_string("foobar") == -EINVAL);
  110. }
  111. void
  112. test_config_inodecalc()
  113. {
  114. InodeCalc ic("passthrough");
  115. TEST_CHECK(ic.from_string("passthrough") == 0);
  116. TEST_CHECK(ic.to_string() == "passthrough");
  117. TEST_CHECK(ic.from_string("path-hash") == 0);
  118. TEST_CHECK(ic.to_string() == "path-hash");
  119. TEST_CHECK(ic.from_string("devino-hash") == 0);
  120. TEST_CHECK(ic.to_string() == "devino-hash");
  121. TEST_CHECK(ic.from_string("hybrid-hash") == 0);
  122. TEST_CHECK(ic.to_string() == "hybrid-hash");
  123. TEST_CHECK(ic.from_string("path-hash32") == 0);
  124. TEST_CHECK(ic.to_string() == "path-hash32");
  125. TEST_CHECK(ic.from_string("devino-hash32") == 0);
  126. TEST_CHECK(ic.to_string() == "devino-hash32");
  127. TEST_CHECK(ic.from_string("hybrid-hash32") == 0);
  128. TEST_CHECK(ic.to_string() == "hybrid-hash32");
  129. TEST_CHECK(ic.from_string("asdf") == -EINVAL);
  130. }
  131. void
  132. test_config_moveonenospc()
  133. {
  134. MoveOnENOSPC m(false);
  135. TEST_CHECK(m.to_string() == "false");
  136. TEST_CHECK(m.from_string("mfs") == 0);
  137. TEST_CHECK(m.to_string() == "mfs");
  138. TEST_CHECK(m.from_string("mspmfs") == 0);
  139. TEST_CHECK(m.to_string() == "mspmfs");
  140. TEST_CHECK(m.from_string("true") == 0);
  141. TEST_CHECK(m.to_string() == "mfs");
  142. TEST_CHECK(m.from_string("blah") == -EINVAL);
  143. }
  144. void
  145. test_config_nfsopenhack()
  146. {
  147. NFSOpenHack n;
  148. TEST_CHECK(n.from_string("off") == 0);
  149. TEST_CHECK(n.to_string() == "off");
  150. TEST_CHECK(n == NFSOpenHack::ENUM::OFF);
  151. TEST_CHECK(n.from_string("git") == 0);
  152. TEST_CHECK(n.to_string() == "git");
  153. TEST_CHECK(n == NFSOpenHack::ENUM::GIT);
  154. TEST_CHECK(n.from_string("all") == 0);
  155. TEST_CHECK(n.to_string() == "all");
  156. TEST_CHECK(n == NFSOpenHack::ENUM::ALL);
  157. }
  158. void
  159. test_config_readdir()
  160. {
  161. ReadDir r;
  162. TEST_CHECK(r.from_string("linux") == 0);
  163. TEST_CHECK(r.to_string() == "linux");
  164. TEST_CHECK(r == ReadDir::ENUM::LINUX);
  165. TEST_CHECK(r.from_string("posix") == 0);
  166. TEST_CHECK(r.to_string() == "posix");
  167. TEST_CHECK(r == ReadDir::ENUM::POSIX);
  168. }
  169. void
  170. test_config_statfs()
  171. {
  172. StatFS s;
  173. TEST_CHECK(s.from_string("base") == 0);
  174. TEST_CHECK(s.to_string() == "base");
  175. TEST_CHECK(s == StatFS::ENUM::BASE);
  176. TEST_CHECK(s.from_string("full") == 0);
  177. TEST_CHECK(s.to_string() == "full");
  178. TEST_CHECK(s == StatFS::ENUM::FULL);
  179. TEST_CHECK(s.from_string("asdf") == -EINVAL);
  180. }
  181. void
  182. test_config_statfs_ignore()
  183. {
  184. StatFSIgnore s;
  185. TEST_CHECK(s.from_string("none") == 0);
  186. TEST_CHECK(s.to_string() == "none");
  187. TEST_CHECK(s == StatFSIgnore::ENUM::NONE);
  188. TEST_CHECK(s.from_string("ro") == 0);
  189. TEST_CHECK(s.to_string() == "ro");
  190. TEST_CHECK(s == StatFSIgnore::ENUM::RO);
  191. TEST_CHECK(s.from_string("nc") == 0);
  192. TEST_CHECK(s.to_string() == "nc");
  193. TEST_CHECK(s == StatFSIgnore::ENUM::NC);
  194. TEST_CHECK(s.from_string("asdf") == -EINVAL);
  195. }
  196. void
  197. test_config_xattr()
  198. {
  199. XAttr x;
  200. TEST_CHECK(x.from_string("passthrough") == 0);
  201. TEST_CHECK(x.to_string() == "passthrough");
  202. TEST_CHECK(x == XAttr::ENUM::PASSTHROUGH);
  203. TEST_CHECK(x.from_string("noattr") == 0);
  204. TEST_CHECK(x.to_string() == "noattr");
  205. TEST_CHECK(x == XAttr::ENUM::NOATTR);
  206. TEST_CHECK(x.from_string("nosys") == 0);
  207. TEST_CHECK(x.to_string() == "nosys");
  208. TEST_CHECK(x == XAttr::ENUM::NOSYS);
  209. TEST_CHECK(x.from_string("asdf") == -EINVAL);
  210. }
  211. void
  212. test_config()
  213. {
  214. Config cfg;
  215. TEST_CHECK(cfg.set_raw("async_read","true") == 0);
  216. }
  217. TEST_LIST =
  218. {
  219. {"nop",test_nop},
  220. {"config_bool",test_config_bool},
  221. {"config_uint64",test_config_uint64},
  222. {"config_int",test_config_int},
  223. {"config_str",test_config_str},
  224. {"config_branches",test_config_branches},
  225. {"config_cachefiles",test_config_cachefiles},
  226. {"config_inodecalc",test_config_inodecalc},
  227. {"config_moveonenospc",test_config_moveonenospc},
  228. {"config_nfsopenhack",test_config_nfsopenhack},
  229. {"config_readdir",test_config_readdir},
  230. {"config_statfs",test_config_statfs},
  231. {"config_statfsignore",test_config_statfs_ignore},
  232. {"config_xattr",test_config_xattr},
  233. {"config",test_config},
  234. {NULL,NULL}
  235. };