rn-leveldb 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (595) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +92 -0
  3. package/android/.project +34 -0
  4. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  5. package/android/CMakeLists.txt +69 -0
  6. package/android/build.gradle +125 -0
  7. package/android/cpp-adapter.cpp +19 -0
  8. package/android/gradle.properties +6 -0
  9. package/android/src/main/AndroidManifest.xml +4 -0
  10. package/android/src/main/java/com/reactnativeleveldb/LeveldbModule.java +57 -0
  11. package/android/src/main/java/com/reactnativeleveldb/LeveldbPackage.java +28 -0
  12. package/cpp/leveldb/.appveyor.yml +36 -0
  13. package/cpp/leveldb/.clang-format +18 -0
  14. package/cpp/leveldb/.travis.yml +88 -0
  15. package/cpp/leveldb/AUTHORS +12 -0
  16. package/cpp/leveldb/CMakeLists.txt +495 -0
  17. package/cpp/leveldb/CONTRIBUTING.md +36 -0
  18. package/cpp/leveldb/LICENSE +27 -0
  19. package/cpp/leveldb/NEWS +17 -0
  20. package/cpp/leveldb/README.md +231 -0
  21. package/cpp/leveldb/TODO +14 -0
  22. package/cpp/leveldb/benchmarks/db_bench.cc +990 -0
  23. package/cpp/leveldb/benchmarks/db_bench_sqlite3.cc +726 -0
  24. package/cpp/leveldb/benchmarks/db_bench_tree_db.cc +531 -0
  25. package/cpp/leveldb/cmake/leveldbConfig.cmake.in +9 -0
  26. package/cpp/leveldb/db/autocompact_test.cc +115 -0
  27. package/cpp/leveldb/db/builder.cc +82 -0
  28. package/cpp/leveldb/db/builder.h +30 -0
  29. package/cpp/leveldb/db/c.cc +562 -0
  30. package/cpp/leveldb/db/c_test.c +384 -0
  31. package/cpp/leveldb/db/corruption_test.cc +367 -0
  32. package/cpp/leveldb/db/db_impl.cc +1554 -0
  33. package/cpp/leveldb/db/db_impl.h +217 -0
  34. package/cpp/leveldb/db/db_iter.cc +318 -0
  35. package/cpp/leveldb/db/db_iter.h +26 -0
  36. package/cpp/leveldb/db/db_test.cc +2305 -0
  37. package/cpp/leveldb/db/dbformat.cc +136 -0
  38. package/cpp/leveldb/db/dbformat.h +224 -0
  39. package/cpp/leveldb/db/dbformat_test.cc +133 -0
  40. package/cpp/leveldb/db/dumpfile.cc +232 -0
  41. package/cpp/leveldb/db/fault_injection_test.cc +555 -0
  42. package/cpp/leveldb/db/filename.cc +141 -0
  43. package/cpp/leveldb/db/filename.h +83 -0
  44. package/cpp/leveldb/db/filename_test.cc +132 -0
  45. package/cpp/leveldb/db/leveldbutil.cc +64 -0
  46. package/cpp/leveldb/db/log_format.h +35 -0
  47. package/cpp/leveldb/db/log_reader.cc +274 -0
  48. package/cpp/leveldb/db/log_reader.h +112 -0
  49. package/cpp/leveldb/db/log_test.cc +563 -0
  50. package/cpp/leveldb/db/log_writer.cc +111 -0
  51. package/cpp/leveldb/db/log_writer.h +54 -0
  52. package/cpp/leveldb/db/memtable.cc +137 -0
  53. package/cpp/leveldb/db/memtable.h +87 -0
  54. package/cpp/leveldb/db/recovery_test.cc +339 -0
  55. package/cpp/leveldb/db/repair.cc +451 -0
  56. package/cpp/leveldb/db/skiplist.h +382 -0
  57. package/cpp/leveldb/db/skiplist_test.cc +373 -0
  58. package/cpp/leveldb/db/snapshot.h +95 -0
  59. package/cpp/leveldb/db/table_cache.cc +120 -0
  60. package/cpp/leveldb/db/table_cache.h +57 -0
  61. package/cpp/leveldb/db/version_edit.cc +257 -0
  62. package/cpp/leveldb/db/version_edit.h +106 -0
  63. package/cpp/leveldb/db/version_edit_test.cc +46 -0
  64. package/cpp/leveldb/db/version_set.cc +1562 -0
  65. package/cpp/leveldb/db/version_set.h +393 -0
  66. package/cpp/leveldb/db/version_set_test.cc +336 -0
  67. package/cpp/leveldb/db/write_batch.cc +150 -0
  68. package/cpp/leveldb/db/write_batch_internal.h +45 -0
  69. package/cpp/leveldb/db/write_batch_test.cc +137 -0
  70. package/cpp/leveldb/doc/benchmark.html +459 -0
  71. package/cpp/leveldb/doc/impl.md +172 -0
  72. package/cpp/leveldb/doc/index.md +523 -0
  73. package/cpp/leveldb/doc/log_format.md +75 -0
  74. package/cpp/leveldb/doc/table_format.md +107 -0
  75. package/cpp/leveldb/helpers/memenv/memenv.cc +390 -0
  76. package/cpp/leveldb/helpers/memenv/memenv.h +22 -0
  77. package/cpp/leveldb/helpers/memenv/memenv_test.cc +264 -0
  78. package/cpp/leveldb/include/leveldb/c.h +270 -0
  79. package/cpp/leveldb/include/leveldb/cache.h +111 -0
  80. package/cpp/leveldb/include/leveldb/comparator.h +64 -0
  81. package/cpp/leveldb/include/leveldb/db.h +167 -0
  82. package/cpp/leveldb/include/leveldb/dumpfile.h +28 -0
  83. package/cpp/leveldb/include/leveldb/env.h +417 -0
  84. package/cpp/leveldb/include/leveldb/export.h +33 -0
  85. package/cpp/leveldb/include/leveldb/filter_policy.h +72 -0
  86. package/cpp/leveldb/include/leveldb/iterator.h +112 -0
  87. package/cpp/leveldb/include/leveldb/options.h +187 -0
  88. package/cpp/leveldb/include/leveldb/slice.h +114 -0
  89. package/cpp/leveldb/include/leveldb/status.h +122 -0
  90. package/cpp/leveldb/include/leveldb/table.h +84 -0
  91. package/cpp/leveldb/include/leveldb/table_builder.h +93 -0
  92. package/cpp/leveldb/include/leveldb/write_batch.h +83 -0
  93. package/cpp/leveldb/issues/issue178_test.cc +90 -0
  94. package/cpp/leveldb/issues/issue200_test.cc +59 -0
  95. package/cpp/leveldb/issues/issue320_test.cc +131 -0
  96. package/cpp/leveldb/port/README.md +10 -0
  97. package/cpp/leveldb/port/port.h +19 -0
  98. package/cpp/leveldb/port/port_config.h.in +33 -0
  99. package/cpp/leveldb/port/port_example.h +100 -0
  100. package/cpp/leveldb/port/port_stdcxx.h +151 -0
  101. package/cpp/leveldb/port/thread_annotations.h +108 -0
  102. package/cpp/leveldb/table/block.cc +267 -0
  103. package/cpp/leveldb/table/block.h +44 -0
  104. package/cpp/leveldb/table/block_builder.cc +107 -0
  105. package/cpp/leveldb/table/block_builder.h +54 -0
  106. package/cpp/leveldb/table/filter_block.cc +106 -0
  107. package/cpp/leveldb/table/filter_block.h +68 -0
  108. package/cpp/leveldb/table/filter_block_test.cc +127 -0
  109. package/cpp/leveldb/table/format.cc +141 -0
  110. package/cpp/leveldb/table/format.h +99 -0
  111. package/cpp/leveldb/table/iterator.cc +76 -0
  112. package/cpp/leveldb/table/iterator_wrapper.h +92 -0
  113. package/cpp/leveldb/table/merger.cc +191 -0
  114. package/cpp/leveldb/table/merger.h +26 -0
  115. package/cpp/leveldb/table/table.cc +271 -0
  116. package/cpp/leveldb/table/table_builder.cc +265 -0
  117. package/cpp/leveldb/table/table_test.cc +834 -0
  118. package/cpp/leveldb/table/two_level_iterator.cc +171 -0
  119. package/cpp/leveldb/table/two_level_iterator.h +31 -0
  120. package/cpp/leveldb/third_party/benchmark/.clang-format +5 -0
  121. package/cpp/leveldb/third_party/benchmark/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
  122. package/cpp/leveldb/third_party/benchmark/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  123. package/cpp/leveldb/third_party/benchmark/.github/workflows/build-and-test.yml +38 -0
  124. package/cpp/leveldb/third_party/benchmark/.github/workflows/pylint.yml +26 -0
  125. package/cpp/leveldb/third_party/benchmark/.github/workflows/test_bindings.yml +24 -0
  126. package/cpp/leveldb/third_party/benchmark/.travis-libcxx-setup.sh +28 -0
  127. package/cpp/leveldb/third_party/benchmark/.travis.yml +231 -0
  128. package/cpp/leveldb/third_party/benchmark/.ycm_extra_conf.py +115 -0
  129. package/cpp/leveldb/third_party/benchmark/AUTHORS +58 -0
  130. package/cpp/leveldb/third_party/benchmark/BUILD.bazel +44 -0
  131. package/cpp/leveldb/third_party/benchmark/CMakeLists.txt +287 -0
  132. package/cpp/leveldb/third_party/benchmark/CONTRIBUTING.md +58 -0
  133. package/cpp/leveldb/third_party/benchmark/CONTRIBUTORS +83 -0
  134. package/cpp/leveldb/third_party/benchmark/LICENSE +202 -0
  135. package/cpp/leveldb/third_party/benchmark/README.md +1323 -0
  136. package/cpp/leveldb/third_party/benchmark/WORKSPACE +51 -0
  137. package/cpp/leveldb/third_party/benchmark/_config.yml +1 -0
  138. package/cpp/leveldb/third_party/benchmark/appveyor.yml +50 -0
  139. package/cpp/leveldb/third_party/benchmark/bindings/python/BUILD +3 -0
  140. package/cpp/leveldb/third_party/benchmark/bindings/python/build_defs.bzl +25 -0
  141. package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/BUILD +38 -0
  142. package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/__init__.py +156 -0
  143. package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/benchmark.cc +180 -0
  144. package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/example.py +136 -0
  145. package/cpp/leveldb/third_party/benchmark/bindings/python/pybind11.BUILD +20 -0
  146. package/cpp/leveldb/third_party/benchmark/bindings/python/python_headers.BUILD +6 -0
  147. package/cpp/leveldb/third_party/benchmark/bindings/python/requirements.txt +2 -0
  148. package/cpp/leveldb/third_party/benchmark/cmake/AddCXXCompilerFlag.cmake +74 -0
  149. package/cpp/leveldb/third_party/benchmark/cmake/CXXFeatureCheck.cmake +69 -0
  150. package/cpp/leveldb/third_party/benchmark/cmake/Config.cmake.in +1 -0
  151. package/cpp/leveldb/third_party/benchmark/cmake/GetGitVersion.cmake +54 -0
  152. package/cpp/leveldb/third_party/benchmark/cmake/GoogleTest.cmake +41 -0
  153. package/cpp/leveldb/third_party/benchmark/cmake/GoogleTest.cmake.in +58 -0
  154. package/cpp/leveldb/third_party/benchmark/cmake/benchmark.pc.in +12 -0
  155. package/cpp/leveldb/third_party/benchmark/cmake/gnu_posix_regex.cpp +12 -0
  156. package/cpp/leveldb/third_party/benchmark/cmake/llvm-toolchain.cmake +8 -0
  157. package/cpp/leveldb/third_party/benchmark/cmake/posix_regex.cpp +14 -0
  158. package/cpp/leveldb/third_party/benchmark/cmake/split_list.cmake +3 -0
  159. package/cpp/leveldb/third_party/benchmark/cmake/std_regex.cpp +10 -0
  160. package/cpp/leveldb/third_party/benchmark/cmake/steady_clock.cpp +7 -0
  161. package/cpp/leveldb/third_party/benchmark/cmake/thread_safety_attributes.cpp +4 -0
  162. package/cpp/leveldb/third_party/benchmark/conan/CMakeLists.txt +7 -0
  163. package/cpp/leveldb/third_party/benchmark/conan/test_package/CMakeLists.txt +10 -0
  164. package/cpp/leveldb/third_party/benchmark/conan/test_package/conanfile.py +19 -0
  165. package/cpp/leveldb/third_party/benchmark/conan/test_package/test_package.cpp +18 -0
  166. package/cpp/leveldb/third_party/benchmark/conanfile.py +79 -0
  167. package/cpp/leveldb/third_party/benchmark/dependencies.md +18 -0
  168. package/cpp/leveldb/third_party/benchmark/docs/AssemblyTests.md +147 -0
  169. package/cpp/leveldb/third_party/benchmark/docs/_config.yml +1 -0
  170. package/cpp/leveldb/third_party/benchmark/docs/releasing.md +16 -0
  171. package/cpp/leveldb/third_party/benchmark/docs/tools.md +203 -0
  172. package/cpp/leveldb/third_party/benchmark/include/benchmark/benchmark.h +1604 -0
  173. package/cpp/leveldb/third_party/benchmark/requirements.txt +2 -0
  174. package/cpp/leveldb/third_party/benchmark/setup.py +140 -0
  175. package/cpp/leveldb/third_party/benchmark/src/CMakeLists.txt +114 -0
  176. package/cpp/leveldb/third_party/benchmark/src/arraysize.h +33 -0
  177. package/cpp/leveldb/third_party/benchmark/src/benchmark.cc +499 -0
  178. package/cpp/leveldb/third_party/benchmark/src/benchmark_api_internal.cc +15 -0
  179. package/cpp/leveldb/third_party/benchmark/src/benchmark_api_internal.h +53 -0
  180. package/cpp/leveldb/third_party/benchmark/src/benchmark_main.cc +17 -0
  181. package/cpp/leveldb/third_party/benchmark/src/benchmark_name.cc +58 -0
  182. package/cpp/leveldb/third_party/benchmark/src/benchmark_register.cc +515 -0
  183. package/cpp/leveldb/third_party/benchmark/src/benchmark_register.h +108 -0
  184. package/cpp/leveldb/third_party/benchmark/src/benchmark_runner.cc +362 -0
  185. package/cpp/leveldb/third_party/benchmark/src/benchmark_runner.h +51 -0
  186. package/cpp/leveldb/third_party/benchmark/src/check.h +82 -0
  187. package/cpp/leveldb/third_party/benchmark/src/colorprint.cc +188 -0
  188. package/cpp/leveldb/third_party/benchmark/src/colorprint.h +33 -0
  189. package/cpp/leveldb/third_party/benchmark/src/commandlineflags.cc +228 -0
  190. package/cpp/leveldb/third_party/benchmark/src/commandlineflags.h +103 -0
  191. package/cpp/leveldb/third_party/benchmark/src/complexity.cc +238 -0
  192. package/cpp/leveldb/third_party/benchmark/src/complexity.h +55 -0
  193. package/cpp/leveldb/third_party/benchmark/src/console_reporter.cc +177 -0
  194. package/cpp/leveldb/third_party/benchmark/src/counter.cc +80 -0
  195. package/cpp/leveldb/third_party/benchmark/src/counter.h +32 -0
  196. package/cpp/leveldb/third_party/benchmark/src/csv_reporter.cc +154 -0
  197. package/cpp/leveldb/third_party/benchmark/src/cycleclock.h +211 -0
  198. package/cpp/leveldb/third_party/benchmark/src/internal_macros.h +102 -0
  199. package/cpp/leveldb/third_party/benchmark/src/json_reporter.cc +255 -0
  200. package/cpp/leveldb/third_party/benchmark/src/log.h +74 -0
  201. package/cpp/leveldb/third_party/benchmark/src/mutex.h +155 -0
  202. package/cpp/leveldb/third_party/benchmark/src/re.h +158 -0
  203. package/cpp/leveldb/third_party/benchmark/src/reporter.cc +105 -0
  204. package/cpp/leveldb/third_party/benchmark/src/sleep.cc +67 -0
  205. package/cpp/leveldb/third_party/benchmark/src/sleep.h +15 -0
  206. package/cpp/leveldb/third_party/benchmark/src/statistics.cc +193 -0
  207. package/cpp/leveldb/third_party/benchmark/src/statistics.h +37 -0
  208. package/cpp/leveldb/third_party/benchmark/src/string_util.cc +255 -0
  209. package/cpp/leveldb/third_party/benchmark/src/string_util.h +59 -0
  210. package/cpp/leveldb/third_party/benchmark/src/sysinfo.cc +716 -0
  211. package/cpp/leveldb/third_party/benchmark/src/thread_manager.h +64 -0
  212. package/cpp/leveldb/third_party/benchmark/src/thread_timer.h +86 -0
  213. package/cpp/leveldb/third_party/benchmark/src/timers.cc +245 -0
  214. package/cpp/leveldb/third_party/benchmark/src/timers.h +48 -0
  215. package/cpp/leveldb/third_party/benchmark/test/AssemblyTests.cmake +46 -0
  216. package/cpp/leveldb/third_party/benchmark/test/BUILD +73 -0
  217. package/cpp/leveldb/third_party/benchmark/test/CMakeLists.txt +263 -0
  218. package/cpp/leveldb/third_party/benchmark/test/args_product_test.cc +77 -0
  219. package/cpp/leveldb/third_party/benchmark/test/basic_test.cc +136 -0
  220. package/cpp/leveldb/third_party/benchmark/test/benchmark_gtest.cc +134 -0
  221. package/cpp/leveldb/third_party/benchmark/test/benchmark_name_gtest.cc +74 -0
  222. package/cpp/leveldb/third_party/benchmark/test/benchmark_test.cc +245 -0
  223. package/cpp/leveldb/third_party/benchmark/test/clobber_memory_assembly_test.cc +64 -0
  224. package/cpp/leveldb/third_party/benchmark/test/commandlineflags_gtest.cc +201 -0
  225. package/cpp/leveldb/third_party/benchmark/test/complexity_test.cc +213 -0
  226. package/cpp/leveldb/third_party/benchmark/test/cxx03_test.cc +63 -0
  227. package/cpp/leveldb/third_party/benchmark/test/diagnostics_test.cc +80 -0
  228. package/cpp/leveldb/third_party/benchmark/test/display_aggregates_only_test.cc +43 -0
  229. package/cpp/leveldb/third_party/benchmark/test/donotoptimize_assembly_test.cc +163 -0
  230. package/cpp/leveldb/third_party/benchmark/test/donotoptimize_test.cc +52 -0
  231. package/cpp/leveldb/third_party/benchmark/test/filter_test.cc +104 -0
  232. package/cpp/leveldb/third_party/benchmark/test/fixture_test.cc +51 -0
  233. package/cpp/leveldb/third_party/benchmark/test/internal_threading_test.cc +184 -0
  234. package/cpp/leveldb/third_party/benchmark/test/link_main_test.cc +8 -0
  235. package/cpp/leveldb/third_party/benchmark/test/map_test.cc +57 -0
  236. package/cpp/leveldb/third_party/benchmark/test/memory_manager_test.cc +44 -0
  237. package/cpp/leveldb/third_party/benchmark/test/multiple_ranges_test.cc +96 -0
  238. package/cpp/leveldb/third_party/benchmark/test/options_test.cc +75 -0
  239. package/cpp/leveldb/third_party/benchmark/test/output_test.h +213 -0
  240. package/cpp/leveldb/third_party/benchmark/test/output_test_helper.cc +515 -0
  241. package/cpp/leveldb/third_party/benchmark/test/register_benchmark_test.cc +184 -0
  242. package/cpp/leveldb/third_party/benchmark/test/report_aggregates_only_test.cc +39 -0
  243. package/cpp/leveldb/third_party/benchmark/test/reporter_output_test.cc +747 -0
  244. package/cpp/leveldb/third_party/benchmark/test/skip_with_error_test.cc +195 -0
  245. package/cpp/leveldb/third_party/benchmark/test/state_assembly_test.cc +68 -0
  246. package/cpp/leveldb/third_party/benchmark/test/statistics_gtest.cc +28 -0
  247. package/cpp/leveldb/third_party/benchmark/test/string_util_gtest.cc +153 -0
  248. package/cpp/leveldb/third_party/benchmark/test/templated_fixture_test.cc +28 -0
  249. package/cpp/leveldb/third_party/benchmark/test/user_counters_tabular_test.cc +285 -0
  250. package/cpp/leveldb/third_party/benchmark/test/user_counters_test.cc +531 -0
  251. package/cpp/leveldb/third_party/benchmark/test/user_counters_thousands_test.cc +173 -0
  252. package/cpp/leveldb/third_party/benchmark/tools/BUILD.bazel +19 -0
  253. package/cpp/leveldb/third_party/benchmark/tools/compare.py +429 -0
  254. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test1_run1.json +119 -0
  255. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test1_run2.json +119 -0
  256. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test2_run.json +81 -0
  257. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test3_run0.json +65 -0
  258. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test3_run1.json +65 -0
  259. package/cpp/leveldb/third_party/benchmark/tools/gbench/__init__.py +8 -0
  260. package/cpp/leveldb/third_party/benchmark/tools/gbench/report.py +903 -0
  261. package/cpp/leveldb/third_party/benchmark/tools/gbench/util.py +163 -0
  262. package/cpp/leveldb/third_party/benchmark/tools/requirements.txt +1 -0
  263. package/cpp/leveldb/third_party/benchmark/tools/strip_asm.py +151 -0
  264. package/cpp/leveldb/third_party/googletest/.clang-format +4 -0
  265. package/cpp/leveldb/third_party/googletest/.travis.yml +73 -0
  266. package/cpp/leveldb/third_party/googletest/BUILD.bazel +179 -0
  267. package/cpp/leveldb/third_party/googletest/CMakeLists.txt +36 -0
  268. package/cpp/leveldb/third_party/googletest/CONTRIBUTING.md +142 -0
  269. package/cpp/leveldb/third_party/googletest/LICENSE +28 -0
  270. package/cpp/leveldb/third_party/googletest/README.md +132 -0
  271. package/cpp/leveldb/third_party/googletest/WORKSPACE +23 -0
  272. package/cpp/leveldb/third_party/googletest/appveyor.yml +154 -0
  273. package/cpp/leveldb/third_party/googletest/ci/build-linux-bazel.sh +37 -0
  274. package/cpp/leveldb/third_party/googletest/ci/build-platformio.sh +2 -0
  275. package/cpp/leveldb/third_party/googletest/ci/env-linux.sh +41 -0
  276. package/cpp/leveldb/third_party/googletest/ci/env-osx.sh +47 -0
  277. package/cpp/leveldb/third_party/googletest/ci/get-nprocessors.sh +48 -0
  278. package/cpp/leveldb/third_party/googletest/ci/install-linux.sh +49 -0
  279. package/cpp/leveldb/third_party/googletest/ci/install-osx.sh +40 -0
  280. package/cpp/leveldb/third_party/googletest/ci/install-platformio.sh +5 -0
  281. package/cpp/leveldb/third_party/googletest/ci/log-config.sh +51 -0
  282. package/cpp/leveldb/third_party/googletest/ci/travis.sh +44 -0
  283. package/cpp/leveldb/third_party/googletest/googlemock/CMakeLists.txt +233 -0
  284. package/cpp/leveldb/third_party/googletest/googlemock/CONTRIBUTORS +40 -0
  285. package/cpp/leveldb/third_party/googletest/googlemock/LICENSE +28 -0
  286. package/cpp/leveldb/third_party/googletest/googlemock/README.md +44 -0
  287. package/cpp/leveldb/third_party/googletest/googlemock/cmake/gmock.pc.in +10 -0
  288. package/cpp/leveldb/third_party/googletest/googlemock/cmake/gmock_main.pc.in +10 -0
  289. package/cpp/leveldb/third_party/googletest/googlemock/docs/cheat_sheet.md +770 -0
  290. package/cpp/leveldb/third_party/googletest/googlemock/docs/cook_book.md +4270 -0
  291. package/cpp/leveldb/third_party/googletest/googlemock/docs/for_dummies.md +700 -0
  292. package/cpp/leveldb/third_party/googletest/googlemock/docs/gmock_faq.md +396 -0
  293. package/cpp/leveldb/third_party/googletest/googlemock/docs/pump_manual.md +187 -0
  294. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-actions.h +1193 -0
  295. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-cardinalities.h +157 -0
  296. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-function-mocker.h +276 -0
  297. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-actions.h +1884 -0
  298. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-actions.h.pump +627 -0
  299. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h +752 -0
  300. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +227 -0
  301. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-matchers.h +1097 -0
  302. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-matchers.h.pump +346 -0
  303. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-matchers.h +4591 -0
  304. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-more-actions.h +162 -0
  305. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-more-matchers.h +92 -0
  306. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-nice-strict.h +215 -0
  307. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-spec-builders.h +1985 -0
  308. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock.h +101 -0
  309. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/README.md +16 -0
  310. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +10 -0
  311. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +12 -0
  312. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h +36 -0
  313. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-port.h +39 -0
  314. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h +472 -0
  315. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/gmock-port.h +87 -0
  316. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/gmock-pp.h +271 -0
  317. package/cpp/leveldb/third_party/googletest/googlemock/scripts/README.md +5 -0
  318. package/cpp/leveldb/third_party/googletest/googlemock/scripts/fuse_gmock_files.py +240 -0
  319. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/LICENSE +203 -0
  320. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/README +34 -0
  321. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/README.cppclean +115 -0
  322. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/__init__.py +0 -0
  323. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/ast.py +1761 -0
  324. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/gmock_class.py +248 -0
  325. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/gmock_class_test.py +540 -0
  326. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/keywords.py +56 -0
  327. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/tokenize.py +284 -0
  328. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/utils.py +37 -0
  329. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/gmock_gen.py +30 -0
  330. package/cpp/leveldb/third_party/googletest/googlemock/scripts/pump.py +856 -0
  331. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-all.cc +46 -0
  332. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-cardinalities.cc +155 -0
  333. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-internal-utils.cc +200 -0
  334. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-matchers.cc +462 -0
  335. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-spec-builders.cc +892 -0
  336. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock.cc +213 -0
  337. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock_main.cc +72 -0
  338. package/cpp/leveldb/third_party/googletest/googlemock/test/BUILD.bazel +110 -0
  339. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-actions_test.cc +1507 -0
  340. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-cardinalities_test.cc +429 -0
  341. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-function-mocker_nc.cc +16 -0
  342. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-function-mocker_nc_test.py +43 -0
  343. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-function-mocker_test.cc +696 -0
  344. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-generated-actions_test.cc +1064 -0
  345. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-generated-function-mockers_test.cc +659 -0
  346. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-generated-matchers_test.cc +1323 -0
  347. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-internal-utils_test.cc +732 -0
  348. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-matchers_test.cc +6913 -0
  349. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-more-actions_test.cc +698 -0
  350. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-nice-strict_test.cc +500 -0
  351. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-port_test.cc +42 -0
  352. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-pp-string_test.cc +206 -0
  353. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-pp_test.cc +83 -0
  354. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-spec-builders_test.cc +2775 -0
  355. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_all_test.cc +49 -0
  356. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_ex_test.cc +80 -0
  357. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_leak_test.py +104 -0
  358. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_leak_test_.cc +99 -0
  359. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_link2_test.cc +39 -0
  360. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_link_test.cc +39 -0
  361. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_link_test.h +690 -0
  362. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_output_test.py +183 -0
  363. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_output_test_.cc +309 -0
  364. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_output_test_golden.txt +317 -0
  365. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_stress_test.cc +240 -0
  366. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_test.cc +181 -0
  367. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_test_utils.py +108 -0
  368. package/cpp/leveldb/third_party/googletest/googlemock/test/pump_test.py +182 -0
  369. package/cpp/leveldb/third_party/googletest/googletest/CMakeLists.txt +329 -0
  370. package/cpp/leveldb/third_party/googletest/googletest/CONTRIBUTORS +38 -0
  371. package/cpp/leveldb/third_party/googletest/googletest/LICENSE +28 -0
  372. package/cpp/leveldb/third_party/googletest/googletest/README.md +244 -0
  373. package/cpp/leveldb/third_party/googletest/googletest/cmake/Config.cmake.in +9 -0
  374. package/cpp/leveldb/third_party/googletest/googletest/cmake/gtest.pc.in +9 -0
  375. package/cpp/leveldb/third_party/googletest/googletest/cmake/gtest_main.pc.in +10 -0
  376. package/cpp/leveldb/third_party/googletest/googletest/cmake/internal_utils.cmake +358 -0
  377. package/cpp/leveldb/third_party/googletest/googletest/cmake/libgtest.la.in +21 -0
  378. package/cpp/leveldb/third_party/googletest/googletest/docs/advanced.md +2567 -0
  379. package/cpp/leveldb/third_party/googletest/googletest/docs/faq.md +753 -0
  380. package/cpp/leveldb/third_party/googletest/googletest/docs/pkgconfig.md +219 -0
  381. package/cpp/leveldb/third_party/googletest/googletest/docs/primer.md +579 -0
  382. package/cpp/leveldb/third_party/googletest/googletest/docs/samples.md +22 -0
  383. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-death-test.h +343 -0
  384. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-matchers.h +750 -0
  385. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-message.h +219 -0
  386. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-param-test.h +514 -0
  387. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-printers.h +928 -0
  388. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-spi.h +238 -0
  389. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-test-part.h +184 -0
  390. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-typed-test.h +337 -0
  391. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest.h +2477 -0
  392. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest_pred_impl.h +359 -0
  393. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest_prod.h +61 -0
  394. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/README.md +56 -0
  395. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/gtest-port.h +37 -0
  396. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  397. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/gtest.h +37 -0
  398. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h +304 -0
  399. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-filepath.h +211 -0
  400. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-internal.h +1411 -0
  401. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-param-util.h +880 -0
  402. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-port-arch.h +111 -0
  403. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-port.h +2227 -0
  404. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-string.h +171 -0
  405. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-type-util.h +183 -0
  406. package/cpp/leveldb/third_party/googletest/googletest/samples/prime_tables.h +126 -0
  407. package/cpp/leveldb/third_party/googletest/googletest/samples/sample1.cc +66 -0
  408. package/cpp/leveldb/third_party/googletest/googletest/samples/sample1.h +41 -0
  409. package/cpp/leveldb/third_party/googletest/googletest/samples/sample10_unittest.cc +139 -0
  410. package/cpp/leveldb/third_party/googletest/googletest/samples/sample1_unittest.cc +151 -0
  411. package/cpp/leveldb/third_party/googletest/googletest/samples/sample2.cc +54 -0
  412. package/cpp/leveldb/third_party/googletest/googletest/samples/sample2.h +81 -0
  413. package/cpp/leveldb/third_party/googletest/googletest/samples/sample2_unittest.cc +107 -0
  414. package/cpp/leveldb/third_party/googletest/googletest/samples/sample3-inl.h +172 -0
  415. package/cpp/leveldb/third_party/googletest/googletest/samples/sample3_unittest.cc +149 -0
  416. package/cpp/leveldb/third_party/googletest/googletest/samples/sample4.cc +54 -0
  417. package/cpp/leveldb/third_party/googletest/googletest/samples/sample4.h +53 -0
  418. package/cpp/leveldb/third_party/googletest/googletest/samples/sample4_unittest.cc +53 -0
  419. package/cpp/leveldb/third_party/googletest/googletest/samples/sample5_unittest.cc +196 -0
  420. package/cpp/leveldb/third_party/googletest/googletest/samples/sample6_unittest.cc +224 -0
  421. package/cpp/leveldb/third_party/googletest/googletest/samples/sample7_unittest.cc +117 -0
  422. package/cpp/leveldb/third_party/googletest/googletest/samples/sample8_unittest.cc +154 -0
  423. package/cpp/leveldb/third_party/googletest/googletest/samples/sample9_unittest.cc +156 -0
  424. package/cpp/leveldb/third_party/googletest/googletest/scripts/README.md +5 -0
  425. package/cpp/leveldb/third_party/googletest/googletest/scripts/common.py +83 -0
  426. package/cpp/leveldb/third_party/googletest/googletest/scripts/fuse_gtest_files.py +253 -0
  427. package/cpp/leveldb/third_party/googletest/googletest/scripts/gen_gtest_pred_impl.py +734 -0
  428. package/cpp/leveldb/third_party/googletest/googletest/scripts/gtest-config.in +274 -0
  429. package/cpp/leveldb/third_party/googletest/googletest/scripts/release_docs.py +158 -0
  430. package/cpp/leveldb/third_party/googletest/googletest/scripts/run_with_path.py +32 -0
  431. package/cpp/leveldb/third_party/googletest/googletest/scripts/upload.py +1402 -0
  432. package/cpp/leveldb/third_party/googletest/googletest/scripts/upload_gtest.py +78 -0
  433. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-all.cc +48 -0
  434. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-death-test.cc +1653 -0
  435. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-filepath.cc +382 -0
  436. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-internal-inl.h +1211 -0
  437. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-matchers.cc +97 -0
  438. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-port.cc +1399 -0
  439. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-printers.cc +442 -0
  440. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-test-part.cc +108 -0
  441. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-typed-test.cc +118 -0
  442. package/cpp/leveldb/third_party/googletest/googletest/src/gtest.cc +6180 -0
  443. package/cpp/leveldb/third_party/googletest/googletest/src/gtest_main.cc +54 -0
  444. package/cpp/leveldb/third_party/googletest/googletest/test/BUILD.bazel +529 -0
  445. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-break-on-failure-unittest.py +208 -0
  446. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-break-on-failure-unittest_.cc +86 -0
  447. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-catch-exceptions-test.py +236 -0
  448. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-catch-exceptions-test_.cc +293 -0
  449. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-color-test.py +127 -0
  450. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-color-test_.cc +62 -0
  451. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-death-test-test.cc +1516 -0
  452. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-death-test_ex_test.cc +92 -0
  453. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-env-var-test.py +117 -0
  454. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-env-var-test_.cc +122 -0
  455. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-filepath-test.cc +649 -0
  456. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-filter-unittest.py +639 -0
  457. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-filter-unittest_.cc +137 -0
  458. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-json-outfiles-test.py +191 -0
  459. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-json-output-unittest.py +778 -0
  460. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-list-tests-unittest.py +205 -0
  461. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-list-tests-unittest_.cc +156 -0
  462. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-listener-test.cc +518 -0
  463. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-message-test.cc +158 -0
  464. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-options-test.cc +216 -0
  465. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-output-test-golden-lin.txt +1137 -0
  466. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-output-test.py +346 -0
  467. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-output-test_.cc +1149 -0
  468. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name1-test.py +63 -0
  469. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc +50 -0
  470. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name2-test.py +62 -0
  471. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc +55 -0
  472. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-test.cc +1086 -0
  473. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-test.h +51 -0
  474. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test2-test.cc +61 -0
  475. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-port-test.cc +1272 -0
  476. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-printers-test.cc +1619 -0
  477. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-shuffle-test.py +323 -0
  478. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-shuffle-test_.cc +101 -0
  479. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-test-part-test.cc +230 -0
  480. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-test2_test.cc +61 -0
  481. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-throw-on-failure-test.py +168 -0
  482. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-throw-on-failure-test_.cc +71 -0
  483. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-uninitialized-test.py +67 -0
  484. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-uninitialized-test_.cc +42 -0
  485. package/cpp/leveldb/third_party/googletest/googletest/test/gtest-typed-test2_test.cc +44 -0
  486. package/cpp/leveldb/third_party/googletest/googletest/test/gtest-typed-test_test.cc +462 -0
  487. package/cpp/leveldb/third_party/googletest/googletest/test/gtest-typed-test_test.h +65 -0
  488. package/cpp/leveldb/third_party/googletest/googletest/test/gtest-unittest-api_test.cc +341 -0
  489. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_all_test.cc +46 -0
  490. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_assert_by_exception_test.cc +116 -0
  491. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_environment_test.cc +188 -0
  492. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_help_test.py +170 -0
  493. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_help_test_.cc +45 -0
  494. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_json_test_utils.py +60 -0
  495. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_list_output_unittest.py +141 -0
  496. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_list_output_unittest_.cc +51 -0
  497. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_main_unittest.cc +44 -0
  498. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_no_test_unittest.cc +54 -0
  499. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_pred_impl_unittest.cc +2427 -0
  500. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_premature_exit_test.cc +126 -0
  501. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_prod_test.cc +56 -0
  502. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_repeat_test.cc +233 -0
  503. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_check_output_test.py +59 -0
  504. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_environment_check_output_test.py +54 -0
  505. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc +49 -0
  506. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_test.cc +55 -0
  507. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_sole_header_test.cc +56 -0
  508. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_stress_test.cc +248 -0
  509. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc +89 -0
  510. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_test_utils.py +314 -0
  511. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_testbridge_test.py +63 -0
  512. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_testbridge_test_.cc +43 -0
  513. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc +90 -0
  514. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_unittest.cc +7496 -0
  515. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_outfile1_test_.cc +43 -0
  516. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_outfile2_test_.cc +43 -0
  517. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_outfiles_test.py +135 -0
  518. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_output_unittest.py +389 -0
  519. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_output_unittest_.cc +188 -0
  520. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_test_utils.py +196 -0
  521. package/cpp/leveldb/third_party/googletest/googletest/test/production.cc +35 -0
  522. package/cpp/leveldb/third_party/googletest/googletest/test/production.h +54 -0
  523. package/cpp/leveldb/third_party/googletest/library.json +66 -0
  524. package/cpp/leveldb/third_party/googletest/platformio.ini +47 -0
  525. package/cpp/leveldb/util/arena.cc +66 -0
  526. package/cpp/leveldb/util/arena.h +71 -0
  527. package/cpp/leveldb/util/arena_test.cc +66 -0
  528. package/cpp/leveldb/util/bloom.cc +92 -0
  529. package/cpp/leveldb/util/bloom_test.cc +159 -0
  530. package/cpp/leveldb/util/cache.cc +401 -0
  531. package/cpp/leveldb/util/cache_test.cc +229 -0
  532. package/cpp/leveldb/util/coding.cc +166 -0
  533. package/cpp/leveldb/util/coding.h +122 -0
  534. package/cpp/leveldb/util/coding_test.cc +198 -0
  535. package/cpp/leveldb/util/comparator.cc +75 -0
  536. package/cpp/leveldb/util/crc32c.cc +380 -0
  537. package/cpp/leveldb/util/crc32c.h +43 -0
  538. package/cpp/leveldb/util/crc32c_test.cc +61 -0
  539. package/cpp/leveldb/util/env.cc +108 -0
  540. package/cpp/leveldb/util/env_posix.cc +893 -0
  541. package/cpp/leveldb/util/env_posix_test.cc +353 -0
  542. package/cpp/leveldb/util/env_posix_test_helper.h +28 -0
  543. package/cpp/leveldb/util/env_test.cc +240 -0
  544. package/cpp/leveldb/util/env_windows.cc +796 -0
  545. package/cpp/leveldb/util/env_windows_test.cc +65 -0
  546. package/cpp/leveldb/util/env_windows_test_helper.h +25 -0
  547. package/cpp/leveldb/util/filter_policy.cc +11 -0
  548. package/cpp/leveldb/util/hash.cc +55 -0
  549. package/cpp/leveldb/util/hash.h +19 -0
  550. package/cpp/leveldb/util/hash_test.cc +46 -0
  551. package/cpp/leveldb/util/histogram.cc +272 -0
  552. package/cpp/leveldb/util/histogram.h +44 -0
  553. package/cpp/leveldb/util/logging.cc +82 -0
  554. package/cpp/leveldb/util/logging.h +44 -0
  555. package/cpp/leveldb/util/logging_test.cc +145 -0
  556. package/cpp/leveldb/util/mutexlock.h +39 -0
  557. package/cpp/leveldb/util/no_destructor.h +46 -0
  558. package/cpp/leveldb/util/no_destructor_test.cc +49 -0
  559. package/cpp/leveldb/util/options.cc +14 -0
  560. package/cpp/leveldb/util/posix_logger.h +130 -0
  561. package/cpp/leveldb/util/random.h +63 -0
  562. package/cpp/leveldb/util/status.cc +77 -0
  563. package/cpp/leveldb/util/status_test.cc +44 -0
  564. package/cpp/leveldb/util/testutil.cc +51 -0
  565. package/cpp/leveldb/util/testutil.h +82 -0
  566. package/cpp/leveldb/util/windows_logger.h +124 -0
  567. package/cpp/react-native-leveldb.cpp +694 -0
  568. package/cpp/react-native-leveldb.h +4 -0
  569. package/ios/Leveldb.h +9 -0
  570. package/ios/Leveldb.mm +35 -0
  571. package/ios/Leveldb.xcodeproj/project.pbxproj +288 -0
  572. package/lib/commonjs/fake.js +181 -0
  573. package/lib/commonjs/fake.js.map +1 -0
  574. package/lib/commonjs/fake.test.js +30 -0
  575. package/lib/commonjs/fake.test.js.map +1 -0
  576. package/lib/commonjs/index.js +172 -0
  577. package/lib/commonjs/index.js.map +1 -0
  578. package/lib/commonjs/package.json +1 -0
  579. package/lib/module/fake.js +171 -0
  580. package/lib/module/fake.js.map +1 -0
  581. package/lib/module/fake.test.js +30 -0
  582. package/lib/module/fake.test.js.map +1 -0
  583. package/lib/module/index.js +165 -0
  584. package/lib/module/index.js.map +1 -0
  585. package/lib/typescript/fake.d.ts +34 -0
  586. package/lib/typescript/fake.d.ts.map +1 -0
  587. package/lib/typescript/fake.test.d.ts +2 -0
  588. package/lib/typescript/fake.test.d.ts.map +1 -0
  589. package/lib/typescript/index.d.ts +72 -0
  590. package/lib/typescript/index.d.ts.map +1 -0
  591. package/package.json +157 -0
  592. package/rn-leveldb.podspec +30 -0
  593. package/src/fake.test.ts +37 -0
  594. package/src/fake.ts +203 -0
  595. package/src/index.ts +291 -0
@@ -0,0 +1,353 @@
1
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
4
+
5
+ #include <sys/resource.h>
6
+ #include <sys/wait.h>
7
+ #include <unistd.h>
8
+
9
+ #include <cstdio>
10
+ #include <cstdlib>
11
+ #include <cstring>
12
+ #include <string>
13
+ #include <unordered_set>
14
+ #include <vector>
15
+
16
+ #include "gtest/gtest.h"
17
+ #include "leveldb/env.h"
18
+ #include "port/port.h"
19
+ #include "util/env_posix_test_helper.h"
20
+ #include "util/testutil.h"
21
+
22
+ #if HAVE_O_CLOEXEC
23
+
24
+ namespace {
25
+
26
+ // Exit codes for the helper process spawned by TestCloseOnExec* tests.
27
+ // Useful for debugging test failures.
28
+ constexpr int kTextCloseOnExecHelperExecFailedCode = 61;
29
+ constexpr int kTextCloseOnExecHelperDup2FailedCode = 62;
30
+ constexpr int kTextCloseOnExecHelperFoundOpenFdCode = 63;
31
+
32
+ // Global set by main() and read in TestCloseOnExec.
33
+ //
34
+ // The argv[0] value is stored in a std::vector instead of a std::string because
35
+ // std::string does not return a mutable pointer to its buffer until C++17.
36
+ //
37
+ // The vector stores the string pointed to by argv[0], plus the trailing null.
38
+ std::vector<char>* GetArgvZero() {
39
+ static std::vector<char> program_name;
40
+ return &program_name;
41
+ }
42
+
43
+ // Command-line switch used to run this test as the CloseOnExecSwitch helper.
44
+ static const char kTestCloseOnExecSwitch[] = "--test-close-on-exec-helper";
45
+
46
+ // Executed in a separate process by TestCloseOnExec* tests.
47
+ //
48
+ // main() delegates to this function when the test executable is launched with
49
+ // a special command-line switch. TestCloseOnExec* tests fork()+exec() the test
50
+ // executable and pass the special command-line switch.
51
+ //
52
+
53
+ // main() delegates to this function when the test executable is launched with
54
+ // a special command-line switch. TestCloseOnExec* tests fork()+exec() the test
55
+ // executable and pass the special command-line switch.
56
+ //
57
+ // When main() delegates to this function, the process probes whether a given
58
+ // file descriptor is open, and communicates the result via its exit code.
59
+ int TestCloseOnExecHelperMain(char* pid_arg) {
60
+ int fd = std::atoi(pid_arg);
61
+ // When given the same file descriptor twice, dup2() returns -1 if the
62
+ // file descriptor is closed, or the given file descriptor if it is open.
63
+ if (::dup2(fd, fd) == fd) {
64
+ std::fprintf(stderr, "Unexpected open fd %d\n", fd);
65
+ return kTextCloseOnExecHelperFoundOpenFdCode;
66
+ }
67
+ // Double-check that dup2() is saying the file descriptor is closed.
68
+ if (errno != EBADF) {
69
+ std::fprintf(stderr, "Unexpected errno after calling dup2 on fd %d: %s\n",
70
+ fd, std::strerror(errno));
71
+ return kTextCloseOnExecHelperDup2FailedCode;
72
+ }
73
+ return 0;
74
+ }
75
+
76
+ // File descriptors are small non-negative integers.
77
+ //
78
+ // Returns void so the implementation can use ASSERT_EQ.
79
+ void GetMaxFileDescriptor(int* result_fd) {
80
+ // Get the maximum file descriptor number.
81
+ ::rlimit fd_rlimit;
82
+ ASSERT_EQ(0, ::getrlimit(RLIMIT_NOFILE, &fd_rlimit));
83
+ *result_fd = fd_rlimit.rlim_cur;
84
+ }
85
+
86
+ // Iterates through all possible FDs and returns the currently open ones.
87
+ //
88
+ // Returns void so the implementation can use ASSERT_EQ.
89
+ void GetOpenFileDescriptors(std::unordered_set<int>* open_fds) {
90
+ int max_fd = 0;
91
+ GetMaxFileDescriptor(&max_fd);
92
+
93
+ for (int fd = 0; fd < max_fd; ++fd) {
94
+ if (::dup2(fd, fd) != fd) {
95
+ // When given the same file descriptor twice, dup2() returns -1 if the
96
+ // file descriptor is closed, or the given file descriptor if it is open.
97
+ //
98
+ // Double-check that dup2() is saying the fd is closed.
99
+ ASSERT_EQ(EBADF, errno)
100
+ << "dup2() should set errno to EBADF on closed file descriptors";
101
+ continue;
102
+ }
103
+ open_fds->insert(fd);
104
+ }
105
+ }
106
+
107
+ // Finds an FD open since a previous call to GetOpenFileDescriptors().
108
+ //
109
+ // |baseline_open_fds| is the result of a previous GetOpenFileDescriptors()
110
+ // call. Assumes that exactly one FD was opened since that call.
111
+ //
112
+ // Returns void so the implementation can use ASSERT_EQ.
113
+ void GetNewlyOpenedFileDescriptor(
114
+ const std::unordered_set<int>& baseline_open_fds, int* result_fd) {
115
+ std::unordered_set<int> open_fds;
116
+ GetOpenFileDescriptors(&open_fds);
117
+ for (int fd : baseline_open_fds) {
118
+ ASSERT_EQ(1, open_fds.count(fd))
119
+ << "Previously opened file descriptor was closed during test setup";
120
+ open_fds.erase(fd);
121
+ }
122
+ ASSERT_EQ(1, open_fds.size())
123
+ << "Expected exactly one newly opened file descriptor during test setup";
124
+ *result_fd = *open_fds.begin();
125
+ }
126
+
127
+ // Check that a fork()+exec()-ed child process does not have an extra open FD.
128
+ void CheckCloseOnExecDoesNotLeakFDs(
129
+ const std::unordered_set<int>& baseline_open_fds) {
130
+ // Prepare the argument list for the child process.
131
+ // execv() wants mutable buffers.
132
+ char switch_buffer[sizeof(kTestCloseOnExecSwitch)];
133
+ std::memcpy(switch_buffer, kTestCloseOnExecSwitch,
134
+ sizeof(kTestCloseOnExecSwitch));
135
+
136
+ int probed_fd;
137
+ GetNewlyOpenedFileDescriptor(baseline_open_fds, &probed_fd);
138
+ std::string fd_string = std::to_string(probed_fd);
139
+ std::vector<char> fd_buffer(fd_string.begin(), fd_string.end());
140
+ fd_buffer.emplace_back('\0');
141
+
142
+ // The helper process is launched with the command below.
143
+ // env_posix_tests --test-close-on-exec-helper 3
144
+ char* child_argv[] = {GetArgvZero()->data(), switch_buffer, fd_buffer.data(),
145
+ nullptr};
146
+
147
+ constexpr int kForkInChildProcessReturnValue = 0;
148
+ int child_pid = fork();
149
+ if (child_pid == kForkInChildProcessReturnValue) {
150
+ ::execv(child_argv[0], child_argv);
151
+ std::fprintf(stderr, "Error spawning child process: %s\n", strerror(errno));
152
+ std::exit(kTextCloseOnExecHelperExecFailedCode);
153
+ }
154
+
155
+ int child_status = 0;
156
+ ASSERT_EQ(child_pid, ::waitpid(child_pid, &child_status, 0));
157
+ ASSERT_TRUE(WIFEXITED(child_status))
158
+ << "The helper process did not exit with an exit code";
159
+ ASSERT_EQ(0, WEXITSTATUS(child_status))
160
+ << "The helper process encountered an error";
161
+ }
162
+
163
+ } // namespace
164
+
165
+ #endif // HAVE_O_CLOEXEC
166
+
167
+ namespace leveldb {
168
+
169
+ static const int kReadOnlyFileLimit = 4;
170
+ static const int kMMapLimit = 4;
171
+
172
+ class EnvPosixTest : public testing::Test {
173
+ public:
174
+ static void SetFileLimits(int read_only_file_limit, int mmap_limit) {
175
+ EnvPosixTestHelper::SetReadOnlyFDLimit(read_only_file_limit);
176
+ EnvPosixTestHelper::SetReadOnlyMMapLimit(mmap_limit);
177
+ }
178
+
179
+ EnvPosixTest() : env_(Env::Default()) {}
180
+
181
+ Env* env_;
182
+ };
183
+
184
+ TEST_F(EnvPosixTest, TestOpenOnRead) {
185
+ // Write some test data to a single file that will be opened |n| times.
186
+ std::string test_dir;
187
+ ASSERT_LEVELDB_OK(env_->GetTestDirectory(&test_dir));
188
+ std::string test_file = test_dir + "/open_on_read.txt";
189
+
190
+ FILE* f = std::fopen(test_file.c_str(), "we");
191
+ ASSERT_TRUE(f != nullptr);
192
+ const char kFileData[] = "abcdefghijklmnopqrstuvwxyz";
193
+ fputs(kFileData, f);
194
+ std::fclose(f);
195
+
196
+ // Open test file some number above the sum of the two limits to force
197
+ // open-on-read behavior of POSIX Env leveldb::RandomAccessFile.
198
+ const int kNumFiles = kReadOnlyFileLimit + kMMapLimit + 5;
199
+ leveldb::RandomAccessFile* files[kNumFiles] = {0};
200
+ for (int i = 0; i < kNumFiles; i++) {
201
+ ASSERT_LEVELDB_OK(env_->NewRandomAccessFile(test_file, &files[i]));
202
+ }
203
+ char scratch;
204
+ Slice read_result;
205
+ for (int i = 0; i < kNumFiles; i++) {
206
+ ASSERT_LEVELDB_OK(files[i]->Read(i, 1, &read_result, &scratch));
207
+ ASSERT_EQ(kFileData[i], read_result[0]);
208
+ }
209
+ for (int i = 0; i < kNumFiles; i++) {
210
+ delete files[i];
211
+ }
212
+ ASSERT_LEVELDB_OK(env_->RemoveFile(test_file));
213
+ }
214
+
215
+ #if HAVE_O_CLOEXEC
216
+
217
+ TEST_F(EnvPosixTest, TestCloseOnExecSequentialFile) {
218
+ std::unordered_set<int> open_fds;
219
+ GetOpenFileDescriptors(&open_fds);
220
+
221
+ std::string test_dir;
222
+ ASSERT_LEVELDB_OK(env_->GetTestDirectory(&test_dir));
223
+ std::string file_path = test_dir + "/close_on_exec_sequential.txt";
224
+ ASSERT_LEVELDB_OK(WriteStringToFile(env_, "0123456789", file_path));
225
+
226
+ leveldb::SequentialFile* file = nullptr;
227
+ ASSERT_LEVELDB_OK(env_->NewSequentialFile(file_path, &file));
228
+ CheckCloseOnExecDoesNotLeakFDs(open_fds);
229
+ delete file;
230
+
231
+ ASSERT_LEVELDB_OK(env_->RemoveFile(file_path));
232
+ }
233
+
234
+ TEST_F(EnvPosixTest, TestCloseOnExecRandomAccessFile) {
235
+ std::unordered_set<int> open_fds;
236
+ GetOpenFileDescriptors(&open_fds);
237
+
238
+ std::string test_dir;
239
+ ASSERT_LEVELDB_OK(env_->GetTestDirectory(&test_dir));
240
+ std::string file_path = test_dir + "/close_on_exec_random_access.txt";
241
+ ASSERT_LEVELDB_OK(WriteStringToFile(env_, "0123456789", file_path));
242
+
243
+ // Exhaust the RandomAccessFile mmap limit. This way, the test
244
+ // RandomAccessFile instance below is backed by a file descriptor, not by an
245
+ // mmap region.
246
+ leveldb::RandomAccessFile* mmapped_files[kReadOnlyFileLimit] = {nullptr};
247
+ for (int i = 0; i < kReadOnlyFileLimit; i++) {
248
+ ASSERT_LEVELDB_OK(env_->NewRandomAccessFile(file_path, &mmapped_files[i]));
249
+ }
250
+
251
+ leveldb::RandomAccessFile* file = nullptr;
252
+ ASSERT_LEVELDB_OK(env_->NewRandomAccessFile(file_path, &file));
253
+ CheckCloseOnExecDoesNotLeakFDs(open_fds);
254
+ delete file;
255
+
256
+ for (int i = 0; i < kReadOnlyFileLimit; i++) {
257
+ delete mmapped_files[i];
258
+ }
259
+ ASSERT_LEVELDB_OK(env_->RemoveFile(file_path));
260
+ }
261
+
262
+ TEST_F(EnvPosixTest, TestCloseOnExecWritableFile) {
263
+ std::unordered_set<int> open_fds;
264
+ GetOpenFileDescriptors(&open_fds);
265
+
266
+ std::string test_dir;
267
+ ASSERT_LEVELDB_OK(env_->GetTestDirectory(&test_dir));
268
+ std::string file_path = test_dir + "/close_on_exec_writable.txt";
269
+ ASSERT_LEVELDB_OK(WriteStringToFile(env_, "0123456789", file_path));
270
+
271
+ leveldb::WritableFile* file = nullptr;
272
+ ASSERT_LEVELDB_OK(env_->NewWritableFile(file_path, &file));
273
+ CheckCloseOnExecDoesNotLeakFDs(open_fds);
274
+ delete file;
275
+
276
+ ASSERT_LEVELDB_OK(env_->RemoveFile(file_path));
277
+ }
278
+
279
+ TEST_F(EnvPosixTest, TestCloseOnExecAppendableFile) {
280
+ std::unordered_set<int> open_fds;
281
+ GetOpenFileDescriptors(&open_fds);
282
+
283
+ std::string test_dir;
284
+ ASSERT_LEVELDB_OK(env_->GetTestDirectory(&test_dir));
285
+ std::string file_path = test_dir + "/close_on_exec_appendable.txt";
286
+ ASSERT_LEVELDB_OK(WriteStringToFile(env_, "0123456789", file_path));
287
+
288
+ leveldb::WritableFile* file = nullptr;
289
+ ASSERT_LEVELDB_OK(env_->NewAppendableFile(file_path, &file));
290
+ CheckCloseOnExecDoesNotLeakFDs(open_fds);
291
+ delete file;
292
+
293
+ ASSERT_LEVELDB_OK(env_->RemoveFile(file_path));
294
+ }
295
+
296
+ TEST_F(EnvPosixTest, TestCloseOnExecLockFile) {
297
+ std::unordered_set<int> open_fds;
298
+ GetOpenFileDescriptors(&open_fds);
299
+
300
+ std::string test_dir;
301
+ ASSERT_LEVELDB_OK(env_->GetTestDirectory(&test_dir));
302
+ std::string file_path = test_dir + "/close_on_exec_lock.txt";
303
+ ASSERT_LEVELDB_OK(WriteStringToFile(env_, "0123456789", file_path));
304
+
305
+ leveldb::FileLock* lock = nullptr;
306
+ ASSERT_LEVELDB_OK(env_->LockFile(file_path, &lock));
307
+ CheckCloseOnExecDoesNotLeakFDs(open_fds);
308
+ ASSERT_LEVELDB_OK(env_->UnlockFile(lock));
309
+
310
+ ASSERT_LEVELDB_OK(env_->RemoveFile(file_path));
311
+ }
312
+
313
+ TEST_F(EnvPosixTest, TestCloseOnExecLogger) {
314
+ std::unordered_set<int> open_fds;
315
+ GetOpenFileDescriptors(&open_fds);
316
+
317
+ std::string test_dir;
318
+ ASSERT_LEVELDB_OK(env_->GetTestDirectory(&test_dir));
319
+ std::string file_path = test_dir + "/close_on_exec_logger.txt";
320
+ ASSERT_LEVELDB_OK(WriteStringToFile(env_, "0123456789", file_path));
321
+
322
+ leveldb::Logger* file = nullptr;
323
+ ASSERT_LEVELDB_OK(env_->NewLogger(file_path, &file));
324
+ CheckCloseOnExecDoesNotLeakFDs(open_fds);
325
+ delete file;
326
+
327
+ ASSERT_LEVELDB_OK(env_->RemoveFile(file_path));
328
+ }
329
+
330
+ #endif // HAVE_O_CLOEXEC
331
+
332
+ } // namespace leveldb
333
+
334
+ int main(int argc, char** argv) {
335
+ #if HAVE_O_CLOEXEC
336
+ // Check if we're invoked as a helper program, or as the test suite.
337
+ for (int i = 1; i < argc; ++i) {
338
+ if (!std::strcmp(argv[i], kTestCloseOnExecSwitch)) {
339
+ return TestCloseOnExecHelperMain(argv[i + 1]);
340
+ }
341
+ }
342
+
343
+ // Save argv[0] early, because googletest may modify argv.
344
+ GetArgvZero()->assign(argv[0], argv[0] + std::strlen(argv[0]) + 1);
345
+ #endif // HAVE_O_CLOEXEC
346
+
347
+ // All tests currently run with the same read-only file limits.
348
+ leveldb::EnvPosixTest::SetFileLimits(leveldb::kReadOnlyFileLimit,
349
+ leveldb::kMMapLimit);
350
+
351
+ testing::InitGoogleTest(&argc, argv);
352
+ return RUN_ALL_TESTS();
353
+ }
@@ -0,0 +1,28 @@
1
+ // Copyright 2017 The LevelDB Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
4
+
5
+ #ifndef STORAGE_LEVELDB_UTIL_ENV_POSIX_TEST_HELPER_H_
6
+ #define STORAGE_LEVELDB_UTIL_ENV_POSIX_TEST_HELPER_H_
7
+
8
+ namespace leveldb {
9
+
10
+ class EnvPosixTest;
11
+
12
+ // A helper for the POSIX Env to facilitate testing.
13
+ class EnvPosixTestHelper {
14
+ private:
15
+ friend class EnvPosixTest;
16
+
17
+ // Set the maximum number of read-only files that will be opened.
18
+ // Must be called before creating an Env.
19
+ static void SetReadOnlyFDLimit(int limit);
20
+
21
+ // Set the maximum number of read-only files that will be mapped via mmap.
22
+ // Must be called before creating an Env.
23
+ static void SetReadOnlyMMapLimit(int limit);
24
+ };
25
+
26
+ } // namespace leveldb
27
+
28
+ #endif // STORAGE_LEVELDB_UTIL_ENV_POSIX_TEST_HELPER_H_
@@ -0,0 +1,240 @@
1
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
4
+
5
+ #include "leveldb/env.h"
6
+
7
+ #include <algorithm>
8
+
9
+ #include "gtest/gtest.h"
10
+ #include "port/port.h"
11
+ #include "port/thread_annotations.h"
12
+ #include "util/mutexlock.h"
13
+ #include "util/testutil.h"
14
+
15
+ namespace leveldb {
16
+
17
+ static const int kDelayMicros = 100000;
18
+
19
+ class EnvTest : public testing::Test {
20
+ public:
21
+ EnvTest() : env_(Env::Default()) {}
22
+
23
+ Env* env_;
24
+ };
25
+
26
+ TEST_F(EnvTest, ReadWrite) {
27
+ Random rnd(test::RandomSeed());
28
+
29
+ // Get file to use for testing.
30
+ std::string test_dir;
31
+ ASSERT_LEVELDB_OK(env_->GetTestDirectory(&test_dir));
32
+ std::string test_file_name = test_dir + "/open_on_read.txt";
33
+ WritableFile* writable_file;
34
+ ASSERT_LEVELDB_OK(env_->NewWritableFile(test_file_name, &writable_file));
35
+
36
+ // Fill a file with data generated via a sequence of randomly sized writes.
37
+ static const size_t kDataSize = 10 * 1048576;
38
+ std::string data;
39
+ while (data.size() < kDataSize) {
40
+ int len = rnd.Skewed(18); // Up to 2^18 - 1, but typically much smaller
41
+ std::string r;
42
+ test::RandomString(&rnd, len, &r);
43
+ ASSERT_LEVELDB_OK(writable_file->Append(r));
44
+ data += r;
45
+ if (rnd.OneIn(10)) {
46
+ ASSERT_LEVELDB_OK(writable_file->Flush());
47
+ }
48
+ }
49
+ ASSERT_LEVELDB_OK(writable_file->Sync());
50
+ ASSERT_LEVELDB_OK(writable_file->Close());
51
+ delete writable_file;
52
+
53
+ // Read all data using a sequence of randomly sized reads.
54
+ SequentialFile* sequential_file;
55
+ ASSERT_LEVELDB_OK(env_->NewSequentialFile(test_file_name, &sequential_file));
56
+ std::string read_result;
57
+ std::string scratch;
58
+ while (read_result.size() < data.size()) {
59
+ int len = std::min<int>(rnd.Skewed(18), data.size() - read_result.size());
60
+ scratch.resize(std::max(len, 1)); // at least 1 so &scratch[0] is legal
61
+ Slice read;
62
+ ASSERT_LEVELDB_OK(sequential_file->Read(len, &read, &scratch[0]));
63
+ if (len > 0) {
64
+ ASSERT_GT(read.size(), 0);
65
+ }
66
+ ASSERT_LE(read.size(), len);
67
+ read_result.append(read.data(), read.size());
68
+ }
69
+ ASSERT_EQ(read_result, data);
70
+ delete sequential_file;
71
+ }
72
+
73
+ TEST_F(EnvTest, RunImmediately) {
74
+ struct RunState {
75
+ port::Mutex mu;
76
+ port::CondVar cvar{&mu};
77
+ bool called = false;
78
+
79
+ static void Run(void* arg) {
80
+ RunState* state = reinterpret_cast<RunState*>(arg);
81
+ MutexLock l(&state->mu);
82
+ ASSERT_EQ(state->called, false);
83
+ state->called = true;
84
+ state->cvar.Signal();
85
+ }
86
+ };
87
+
88
+ RunState state;
89
+ env_->Schedule(&RunState::Run, &state);
90
+
91
+ MutexLock l(&state.mu);
92
+ while (!state.called) {
93
+ state.cvar.Wait();
94
+ }
95
+ }
96
+
97
+ TEST_F(EnvTest, RunMany) {
98
+ struct RunState {
99
+ port::Mutex mu;
100
+ port::CondVar cvar{&mu};
101
+ int last_id = 0;
102
+ };
103
+
104
+ struct Callback {
105
+ RunState* state_; // Pointer to shared state.
106
+ const int id_; // Order# for the execution of this callback.
107
+
108
+ Callback(RunState* s, int id) : state_(s), id_(id) {}
109
+
110
+ static void Run(void* arg) {
111
+ Callback* callback = reinterpret_cast<Callback*>(arg);
112
+ RunState* state = callback->state_;
113
+
114
+ MutexLock l(&state->mu);
115
+ ASSERT_EQ(state->last_id, callback->id_ - 1);
116
+ state->last_id = callback->id_;
117
+ state->cvar.Signal();
118
+ }
119
+ };
120
+
121
+ RunState state;
122
+ Callback callback1(&state, 1);
123
+ Callback callback2(&state, 2);
124
+ Callback callback3(&state, 3);
125
+ Callback callback4(&state, 4);
126
+ env_->Schedule(&Callback::Run, &callback1);
127
+ env_->Schedule(&Callback::Run, &callback2);
128
+ env_->Schedule(&Callback::Run, &callback3);
129
+ env_->Schedule(&Callback::Run, &callback4);
130
+
131
+ MutexLock l(&state.mu);
132
+ while (state.last_id != 4) {
133
+ state.cvar.Wait();
134
+ }
135
+ }
136
+
137
+ struct State {
138
+ port::Mutex mu;
139
+ port::CondVar cvar{&mu};
140
+
141
+ int val GUARDED_BY(mu);
142
+ int num_running GUARDED_BY(mu);
143
+
144
+ State(int val, int num_running) : val(val), num_running(num_running) {}
145
+ };
146
+
147
+ static void ThreadBody(void* arg) {
148
+ State* s = reinterpret_cast<State*>(arg);
149
+ s->mu.Lock();
150
+ s->val += 1;
151
+ s->num_running -= 1;
152
+ s->cvar.Signal();
153
+ s->mu.Unlock();
154
+ }
155
+
156
+ TEST_F(EnvTest, StartThread) {
157
+ State state(0, 3);
158
+ for (int i = 0; i < 3; i++) {
159
+ env_->StartThread(&ThreadBody, &state);
160
+ }
161
+
162
+ MutexLock l(&state.mu);
163
+ while (state.num_running != 0) {
164
+ state.cvar.Wait();
165
+ }
166
+ ASSERT_EQ(state.val, 3);
167
+ }
168
+
169
+ TEST_F(EnvTest, TestOpenNonExistentFile) {
170
+ // Write some test data to a single file that will be opened |n| times.
171
+ std::string test_dir;
172
+ ASSERT_LEVELDB_OK(env_->GetTestDirectory(&test_dir));
173
+
174
+ std::string non_existent_file = test_dir + "/non_existent_file";
175
+ ASSERT_TRUE(!env_->FileExists(non_existent_file));
176
+
177
+ RandomAccessFile* random_access_file;
178
+ Status status =
179
+ env_->NewRandomAccessFile(non_existent_file, &random_access_file);
180
+ ASSERT_TRUE(status.IsNotFound());
181
+
182
+ SequentialFile* sequential_file;
183
+ status = env_->NewSequentialFile(non_existent_file, &sequential_file);
184
+ ASSERT_TRUE(status.IsNotFound());
185
+ }
186
+
187
+ TEST_F(EnvTest, ReopenWritableFile) {
188
+ std::string test_dir;
189
+ ASSERT_LEVELDB_OK(env_->GetTestDirectory(&test_dir));
190
+ std::string test_file_name = test_dir + "/reopen_writable_file.txt";
191
+ env_->RemoveFile(test_file_name);
192
+
193
+ WritableFile* writable_file;
194
+ ASSERT_LEVELDB_OK(env_->NewWritableFile(test_file_name, &writable_file));
195
+ std::string data("hello world!");
196
+ ASSERT_LEVELDB_OK(writable_file->Append(data));
197
+ ASSERT_LEVELDB_OK(writable_file->Close());
198
+ delete writable_file;
199
+
200
+ ASSERT_LEVELDB_OK(env_->NewWritableFile(test_file_name, &writable_file));
201
+ data = "42";
202
+ ASSERT_LEVELDB_OK(writable_file->Append(data));
203
+ ASSERT_LEVELDB_OK(writable_file->Close());
204
+ delete writable_file;
205
+
206
+ ASSERT_LEVELDB_OK(ReadFileToString(env_, test_file_name, &data));
207
+ ASSERT_EQ(std::string("42"), data);
208
+ env_->RemoveFile(test_file_name);
209
+ }
210
+
211
+ TEST_F(EnvTest, ReopenAppendableFile) {
212
+ std::string test_dir;
213
+ ASSERT_LEVELDB_OK(env_->GetTestDirectory(&test_dir));
214
+ std::string test_file_name = test_dir + "/reopen_appendable_file.txt";
215
+ env_->RemoveFile(test_file_name);
216
+
217
+ WritableFile* appendable_file;
218
+ ASSERT_LEVELDB_OK(env_->NewAppendableFile(test_file_name, &appendable_file));
219
+ std::string data("hello world!");
220
+ ASSERT_LEVELDB_OK(appendable_file->Append(data));
221
+ ASSERT_LEVELDB_OK(appendable_file->Close());
222
+ delete appendable_file;
223
+
224
+ ASSERT_LEVELDB_OK(env_->NewAppendableFile(test_file_name, &appendable_file));
225
+ data = "42";
226
+ ASSERT_LEVELDB_OK(appendable_file->Append(data));
227
+ ASSERT_LEVELDB_OK(appendable_file->Close());
228
+ delete appendable_file;
229
+
230
+ ASSERT_LEVELDB_OK(ReadFileToString(env_, test_file_name, &data));
231
+ ASSERT_EQ(std::string("hello world!42"), data);
232
+ env_->RemoveFile(test_file_name);
233
+ }
234
+
235
+ } // namespace leveldb
236
+
237
+ int main(int argc, char** argv) {
238
+ testing::InitGoogleTest(&argc, argv);
239
+ return RUN_ALL_TESTS();
240
+ }