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.

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