@cloudant/couchbackup 2.9.15-SNAPSHOT.175 → 2.9.15

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 (357) hide show
  1. package/.scannerwork/report-task.txt +2 -2
  2. package/.scannerwork/scanner-report/analysis-cache2.pb +0 -0
  3. package/.scannerwork/scanner-report/analysis-warnings.pb +2 -2
  4. package/.scannerwork/scanner-report/analysis.log +1 -1
  5. package/.scannerwork/scanner-report/changesets-12.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-14.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-16.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-17.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-18.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-19.pb +1 -0
  11. package/.scannerwork/scanner-report/changesets-20.pb +1 -0
  12. package/.scannerwork/scanner-report/changesets-22.pb +1 -0
  13. package/.scannerwork/scanner-report/changesets-39.pb +1 -0
  14. package/.scannerwork/scanner-report/component-1.pb +2 -1
  15. package/.scannerwork/scanner-report/component-10.pb +2 -0
  16. package/.scannerwork/scanner-report/component-12.pb +1 -1
  17. package/.scannerwork/scanner-report/component-14.pb +1 -0
  18. package/.scannerwork/scanner-report/component-16.pb +1 -0
  19. package/.scannerwork/scanner-report/component-17.pb +1 -0
  20. package/.scannerwork/scanner-report/component-18.pb +1 -0
  21. package/.scannerwork/scanner-report/component-19.pb +1 -0
  22. package/.scannerwork/scanner-report/component-20.pb +1 -0
  23. package/.scannerwork/scanner-report/component-21.pb +1 -1
  24. package/.scannerwork/scanner-report/component-22.pb +1 -0
  25. package/.scannerwork/scanner-report/component-23.pb +1 -1
  26. package/.scannerwork/scanner-report/component-24.pb +1 -1
  27. package/.scannerwork/scanner-report/component-25.pb +1 -1
  28. package/.scannerwork/scanner-report/component-26.pb +1 -1
  29. package/.scannerwork/scanner-report/component-27.pb +1 -1
  30. package/.scannerwork/scanner-report/component-28.pb +1 -1
  31. package/.scannerwork/scanner-report/component-29.pb +1 -1
  32. package/.scannerwork/scanner-report/component-3.pb +1 -1
  33. package/.scannerwork/scanner-report/component-30.pb +1 -1
  34. package/.scannerwork/scanner-report/component-31.pb +1 -1
  35. package/.scannerwork/scanner-report/component-32.pb +1 -1
  36. package/.scannerwork/scanner-report/component-33.pb +1 -1
  37. package/.scannerwork/scanner-report/component-34.pb +1 -1
  38. package/.scannerwork/scanner-report/component-35.pb +1 -1
  39. package/.scannerwork/scanner-report/component-36.pb +1 -1
  40. package/.scannerwork/scanner-report/component-37.pb +1 -1
  41. package/.scannerwork/scanner-report/component-38.pb +1 -1
  42. package/.scannerwork/scanner-report/component-39.pb +1 -0
  43. package/.scannerwork/scanner-report/component-53.pb +1 -1
  44. package/.scannerwork/scanner-report/component-54.pb +1 -1
  45. package/.scannerwork/scanner-report/component-55.pb +1 -1
  46. package/.scannerwork/scanner-report/component-56.pb +1 -1
  47. package/.scannerwork/scanner-report/component-57.pb +1 -1
  48. package/.scannerwork/scanner-report/component-58.pb +1 -1
  49. package/.scannerwork/scanner-report/component-59.pb +1 -1
  50. package/.scannerwork/scanner-report/component-6.pb +1 -1
  51. package/.scannerwork/scanner-report/component-60.pb +1 -1
  52. package/.scannerwork/scanner-report/component-62.pb +1 -1
  53. package/.scannerwork/scanner-report/component-64.pb +1 -1
  54. package/.scannerwork/scanner-report/component-65.pb +1 -1
  55. package/.scannerwork/scanner-report/component-66.pb +1 -1
  56. package/.scannerwork/scanner-report/component-67.pb +1 -1
  57. package/.scannerwork/scanner-report/component-68.pb +1 -1
  58. package/.scannerwork/scanner-report/component-69.pb +1 -1
  59. package/.scannerwork/scanner-report/component-70.pb +1 -1
  60. package/.scannerwork/scanner-report/coverages-16.pb +0 -0
  61. package/.scannerwork/scanner-report/coverages-17.pb +0 -0
  62. package/.scannerwork/scanner-report/coverages-18.pb +0 -0
  63. package/.scannerwork/scanner-report/coverages-19.pb +0 -0
  64. package/.scannerwork/scanner-report/coverages-21.pb +0 -0
  65. package/.scannerwork/scanner-report/coverages-22.pb +0 -0
  66. package/.scannerwork/scanner-report/coverages-23.pb +0 -0
  67. package/.scannerwork/scanner-report/coverages-24.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-25.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-26.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-27.pb +0 -0
  71. package/.scannerwork/scanner-report/coverages-28.pb +0 -0
  72. package/.scannerwork/scanner-report/coverages-29.pb +0 -0
  73. package/.scannerwork/scanner-report/coverages-30.pb +0 -0
  74. package/.scannerwork/scanner-report/coverages-31.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-32.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-33.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-34.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-35.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-36.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-37.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-38.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-39.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-53.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-54.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-55.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-62.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-65.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-66.pb +0 -0
  95. package/.scannerwork/scanner-report/coverages-67.pb +0 -0
  96. package/.scannerwork/scanner-report/coverages-68.pb +0 -0
  97. package/.scannerwork/scanner-report/coverages-69.pb +0 -0
  98. package/.scannerwork/scanner-report/duplications-12.pb +2 -0
  99. package/.scannerwork/scanner-report/duplications-14.pb +2 -0
  100. package/.scannerwork/scanner-report/duplications-24.pb +0 -2
  101. package/.scannerwork/scanner-report/duplications-25.pb +2 -0
  102. package/.scannerwork/scanner-report/duplications-26.pb +3 -0
  103. package/.scannerwork/scanner-report/duplications-33.pb +0 -3
  104. package/.scannerwork/scanner-report/duplications-36.pb +0 -2
  105. package/.scannerwork/scanner-report/duplications-39.pb +2 -0
  106. package/.scannerwork/scanner-report/duplications-56.pb +2 -0
  107. package/.scannerwork/scanner-report/duplications-58.pb +0 -2
  108. package/.scannerwork/scanner-report/duplications-60.pb +0 -2
  109. package/.scannerwork/scanner-report/duplications-66.pb +2 -0
  110. package/.scannerwork/scanner-report/issues-17.pb +3 -0
  111. package/.scannerwork/scanner-report/issues-26.pb +3 -2
  112. package/.scannerwork/scanner-report/measures-12.pb +0 -0
  113. package/.scannerwork/scanner-report/measures-16.pb +0 -0
  114. package/.scannerwork/scanner-report/measures-17.pb +0 -0
  115. package/.scannerwork/scanner-report/measures-18.pb +0 -0
  116. package/.scannerwork/scanner-report/measures-19.pb +0 -0
  117. package/.scannerwork/scanner-report/measures-21.pb +0 -0
  118. package/.scannerwork/scanner-report/measures-22.pb +16 -0
  119. package/.scannerwork/scanner-report/measures-23.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-24.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-25.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-26.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-27.pb +0 -0
  124. package/.scannerwork/scanner-report/measures-28.pb +0 -0
  125. package/.scannerwork/scanner-report/measures-29.pb +0 -0
  126. package/.scannerwork/scanner-report/measures-30.pb +0 -0
  127. package/.scannerwork/scanner-report/measures-31.pb +0 -0
  128. package/.scannerwork/scanner-report/measures-32.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-33.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-34.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-35.pb +0 -0
  132. package/.scannerwork/scanner-report/measures-36.pb +0 -0
  133. package/.scannerwork/scanner-report/measures-37.pb +0 -0
  134. package/.scannerwork/scanner-report/measures-38.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-39.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-53.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-54.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-55.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-56.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-58.pb +0 -0
  142. package/.scannerwork/scanner-report/measures-59.pb +0 -0
  143. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  144. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  145. package/.scannerwork/scanner-report/measures-62.pb +0 -0
  146. package/.scannerwork/scanner-report/measures-64.pb +0 -0
  147. package/.scannerwork/scanner-report/measures-65.pb +0 -0
  148. package/.scannerwork/scanner-report/measures-66.pb +0 -0
  149. package/.scannerwork/scanner-report/measures-67.pb +0 -0
  150. package/.scannerwork/scanner-report/measures-68.pb +0 -0
  151. package/.scannerwork/scanner-report/measures-69.pb +0 -0
  152. package/.scannerwork/scanner-report/measures-70.pb +0 -0
  153. package/.scannerwork/scanner-report/metadata.pb +0 -0
  154. package/.scannerwork/scanner-report/{source-4.txt → source-10.txt} +162 -162
  155. package/.scannerwork/scanner-report/source-12.txt +190 -424
  156. package/.scannerwork/scanner-report/source-16.txt +46 -0
  157. package/.scannerwork/scanner-report/source-17.txt +130 -0
  158. package/.scannerwork/scanner-report/source-18.txt +134 -0
  159. package/.scannerwork/scanner-report/source-19.txt +37 -0
  160. package/.scannerwork/scanner-report/source-21.txt +22 -27
  161. package/.scannerwork/scanner-report/source-22.txt +293 -0
  162. package/.scannerwork/scanner-report/source-23.txt +83 -82
  163. package/.scannerwork/scanner-report/source-24.txt +13 -168
  164. package/.scannerwork/scanner-report/source-25.txt +163 -9
  165. package/.scannerwork/scanner-report/source-26.txt +180 -97
  166. package/.scannerwork/scanner-report/source-27.txt +85 -60
  167. package/.scannerwork/scanner-report/source-28.txt +428 -16
  168. package/.scannerwork/scanner-report/source-29.txt +20 -18
  169. package/.scannerwork/scanner-report/source-3.txt +154 -154
  170. package/.scannerwork/scanner-report/source-30.txt +10 -115
  171. package/.scannerwork/scanner-report/source-31.txt +17 -21
  172. package/.scannerwork/scanner-report/source-32.txt +314 -136
  173. package/.scannerwork/scanner-report/source-33.txt +44 -192
  174. package/.scannerwork/scanner-report/source-34.txt +73 -158
  175. package/.scannerwork/scanner-report/source-35.txt +54 -16
  176. package/.scannerwork/scanner-report/source-36.txt +130 -162
  177. package/.scannerwork/scanner-report/source-37.txt +158 -68
  178. package/.scannerwork/scanner-report/source-38.txt +19 -272
  179. package/.scannerwork/scanner-report/source-39.txt +187 -0
  180. package/.scannerwork/scanner-report/source-53.txt +104 -18
  181. package/.scannerwork/scanner-report/source-54.txt +22 -425
  182. package/.scannerwork/scanner-report/source-55.txt +150 -28
  183. package/.scannerwork/scanner-report/source-56.txt +53 -43
  184. package/.scannerwork/scanner-report/source-57.txt +241 -78
  185. package/.scannerwork/scanner-report/source-58.txt +59 -71
  186. package/.scannerwork/scanner-report/source-59.txt +147 -133
  187. package/.scannerwork/scanner-report/source-6.txt +102 -81
  188. package/.scannerwork/scanner-report/source-60.txt +91 -53
  189. package/.scannerwork/scanner-report/source-62.txt +108 -25
  190. package/.scannerwork/scanner-report/source-64.txt +20 -260
  191. package/.scannerwork/scanner-report/source-65.txt +87 -154
  192. package/.scannerwork/scanner-report/source-66.txt +65 -14
  193. package/.scannerwork/scanner-report/source-67.txt +388 -85
  194. package/.scannerwork/scanner-report/source-68.txt +41 -61
  195. package/.scannerwork/scanner-report/source-69.txt +63 -111
  196. package/.scannerwork/scanner-report/source-70.txt +424 -113
  197. package/.scannerwork/scanner-report/symbols-16.pb +7 -0
  198. package/.scannerwork/scanner-report/symbols-17.pb +86 -0
  199. package/.scannerwork/scanner-report/symbols-18.pb +71 -0
  200. package/.scannerwork/scanner-report/symbols-19.pb +9 -0
  201. package/.scannerwork/scanner-report/symbols-21.pb +31 -7
  202. package/.scannerwork/scanner-report/symbols-22.pb +428 -0
  203. package/.scannerwork/scanner-report/symbols-23.pb +57 -68
  204. package/.scannerwork/scanner-report/symbols-24.pb +9 -227
  205. package/.scannerwork/scanner-report/symbols-25.pb +203 -8
  206. package/.scannerwork/scanner-report/symbols-26.pb +263 -85
  207. package/.scannerwork/scanner-report/symbols-27.pb +68 -38
  208. package/.scannerwork/scanner-report/symbols-28.pb +790 -9
  209. package/.scannerwork/scanner-report/symbols-29.pb +19 -23
  210. package/.scannerwork/scanner-report/symbols-30.pb +8 -71
  211. package/.scannerwork/scanner-report/symbols-31.pb +13 -31
  212. package/.scannerwork/scanner-report/symbols-32.pb +353 -93
  213. package/.scannerwork/scanner-report/symbols-33.pb +33 -264
  214. package/.scannerwork/scanner-report/symbols-34.pb +59 -209
  215. package/.scannerwork/scanner-report/symbols-35.pb +39 -13
  216. package/.scannerwork/scanner-report/symbols-36.pb +88 -198
  217. package/.scannerwork/scanner-report/symbols-37.pb +209 -58
  218. package/.scannerwork/scanner-report/symbols-38.pb +23 -428
  219. package/.scannerwork/scanner-report/symbols-39.pb +227 -0
  220. package/.scannerwork/scanner-report/symbols-53.pb +30 -9
  221. package/.scannerwork/scanner-report/symbols-54.pb +19 -789
  222. package/.scannerwork/scanner-report/symbols-55.pb +126 -19
  223. package/.scannerwork/scanner-report/symbols-56.pb +41 -32
  224. package/.scannerwork/scanner-report/symbols-57.pb +354 -30
  225. package/.scannerwork/scanner-report/symbols-58.pb +45 -43
  226. package/.scannerwork/scanner-report/symbols-59.pb +129 -111
  227. package/.scannerwork/scanner-report/symbols-60.pb +44 -40
  228. package/.scannerwork/scanner-report/symbols-62.pb +33 -20
  229. package/.scannerwork/scanner-report/symbols-64.pb +18 -354
  230. package/.scannerwork/scanner-report/symbols-65.pb +56 -141
  231. package/.scannerwork/scanner-report/symbols-66.pb +42 -16
  232. package/.scannerwork/scanner-report/symbols-67.pb +604 -59
  233. package/.scannerwork/scanner-report/symbols-68.pb +21 -46
  234. package/.scannerwork/scanner-report/symbols-69.pb +31 -32
  235. package/.scannerwork/scanner-report/{syntax-highlightings-4.pb → syntax-highlightings-10.pb} +94 -94
  236. package/.scannerwork/scanner-report/syntax-highlightings-12.pb +202 -3317
  237. package/.scannerwork/scanner-report/syntax-highlightings-16.pb +62 -0
  238. package/.scannerwork/scanner-report/syntax-highlightings-17.pb +125 -0
  239. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +181 -0
  240. package/.scannerwork/scanner-report/syntax-highlightings-19.pb +61 -0
  241. package/.scannerwork/scanner-report/syntax-highlightings-21.pb +36 -29
  242. package/.scannerwork/scanner-report/syntax-highlightings-22.pb +720 -0
  243. package/.scannerwork/scanner-report/syntax-highlightings-23.pb +114 -67
  244. package/.scannerwork/scanner-report/syntax-highlightings-24.pb +19 -333
  245. package/.scannerwork/scanner-report/syntax-highlightings-25.pb +246 -15
  246. package/.scannerwork/scanner-report/syntax-highlightings-26.pb +260 -88
  247. package/.scannerwork/scanner-report/syntax-highlightings-27.pb +68 -62
  248. package/.scannerwork/scanner-report/syntax-highlightings-28.pb +592 -26
  249. package/.scannerwork/scanner-report/syntax-highlightings-29.pb +27 -17
  250. package/.scannerwork/scanner-report/syntax-highlightings-3.pb +88 -87
  251. package/.scannerwork/scanner-report/syntax-highlightings-30.pb +15 -147
  252. package/.scannerwork/scanner-report/syntax-highlightings-31.pb +26 -33
  253. package/.scannerwork/scanner-report/syntax-highlightings-32.pb +550 -167
  254. package/.scannerwork/scanner-report/syntax-highlightings-33.pb +64 -251
  255. package/.scannerwork/scanner-report/syntax-highlightings-34.pb +138 -250
  256. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +64 -25
  257. package/.scannerwork/scanner-report/syntax-highlightings-36.pb +162 -205
  258. package/.scannerwork/scanner-report/syntax-highlightings-37.pb +246 -110
  259. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +19 -683
  260. package/.scannerwork/scanner-report/syntax-highlightings-39.pb +368 -0
  261. package/.scannerwork/scanner-report/syntax-highlightings-53.pb +83 -24
  262. package/.scannerwork/scanner-report/syntax-highlightings-54.pb +33 -596
  263. package/.scannerwork/scanner-report/syntax-highlightings-55.pb +177 -30
  264. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +47 -76
  265. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +250 -78
  266. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +57 -55
  267. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +166 -136
  268. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +689 -98
  269. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +93 -48
  270. package/.scannerwork/scanner-report/syntax-highlightings-62.pb +94 -29
  271. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +19 -252
  272. package/.scannerwork/scanner-report/syntax-highlightings-65.pb +88 -198
  273. package/.scannerwork/scanner-report/syntax-highlightings-66.pb +59 -18
  274. package/.scannerwork/scanner-report/syntax-highlightings-67.pb +609 -101
  275. package/.scannerwork/scanner-report/syntax-highlightings-68.pb +61 -74
  276. package/.scannerwork/scanner-report/syntax-highlightings-69.pb +74 -103
  277. package/.scannerwork/scanner-report/syntax-highlightings-70.pb +3328 -115
  278. package/CHANGES.md +4 -0
  279. package/package.json +2 -2
  280. package/test-18-results.xml +157 -157
  281. package/test-20-results.xml +162 -162
  282. package/test-21-results.xml +163 -163
  283. package/test-iam-20-results.xml +50 -50
  284. package/.scannerwork/scanner-report/changesets-11.pb +0 -1
  285. package/.scannerwork/scanner-report/changesets-2.pb +0 -1
  286. package/.scannerwork/scanner-report/changesets-50.pb +0 -1
  287. package/.scannerwork/scanner-report/changesets-51.pb +0 -1
  288. package/.scannerwork/scanner-report/changesets-52.pb +0 -1
  289. package/.scannerwork/scanner-report/changesets-6.pb +0 -1
  290. package/.scannerwork/scanner-report/changesets-7.pb +0 -1
  291. package/.scannerwork/scanner-report/changesets-70.pb +0 -1
  292. package/.scannerwork/scanner-report/changesets-8.pb +0 -1
  293. package/.scannerwork/scanner-report/component-11.pb +0 -1
  294. package/.scannerwork/scanner-report/component-2.pb +0 -1
  295. package/.scannerwork/scanner-report/component-4.pb +0 -1
  296. package/.scannerwork/scanner-report/component-5.pb +0 -1
  297. package/.scannerwork/scanner-report/component-50.pb +0 -1
  298. package/.scannerwork/scanner-report/component-51.pb +0 -1
  299. package/.scannerwork/scanner-report/component-52.pb +0 -1
  300. package/.scannerwork/scanner-report/component-7.pb +0 -1
  301. package/.scannerwork/scanner-report/component-8.pb +0 -1
  302. package/.scannerwork/scanner-report/coverages-2.pb +0 -0
  303. package/.scannerwork/scanner-report/coverages-51.pb +0 -0
  304. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  305. package/.scannerwork/scanner-report/coverages-6.pb +0 -0
  306. package/.scannerwork/scanner-report/coverages-7.pb +0 -0
  307. package/.scannerwork/scanner-report/coverages-70.pb +0 -0
  308. package/.scannerwork/scanner-report/duplications-11.pb +0 -2
  309. package/.scannerwork/scanner-report/duplications-7.pb +0 -0
  310. package/.scannerwork/scanner-report/duplications-70.pb +0 -0
  311. package/.scannerwork/scanner-report/duplications-8.pb +0 -2
  312. package/.scannerwork/scanner-report/issues-33.pb +0 -4
  313. package/.scannerwork/scanner-report/measures-11.pb +0 -0
  314. package/.scannerwork/scanner-report/measures-2.pb +0 -0
  315. package/.scannerwork/scanner-report/measures-5.pb +0 -0
  316. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  317. package/.scannerwork/scanner-report/measures-52.pb +0 -0
  318. package/.scannerwork/scanner-report/measures-7.pb +0 -0
  319. package/.scannerwork/scanner-report/source-11.txt +0 -190
  320. package/.scannerwork/scanner-report/source-2.txt +0 -414
  321. package/.scannerwork/scanner-report/source-5.txt +0 -102
  322. package/.scannerwork/scanner-report/source-51.txt +0 -329
  323. package/.scannerwork/scanner-report/source-52.txt +0 -106
  324. package/.scannerwork/scanner-report/source-7.txt +0 -60
  325. package/.scannerwork/scanner-report/symbols-2.pb +0 -604
  326. package/.scannerwork/scanner-report/symbols-51.pb +0 -353
  327. package/.scannerwork/scanner-report/symbols-52.pb +0 -59
  328. package/.scannerwork/scanner-report/symbols-6.pb +0 -32
  329. package/.scannerwork/scanner-report/symbols-7.pb +0 -21
  330. package/.scannerwork/scanner-report/symbols-70.pb +0 -46
  331. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +0 -225
  332. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +0 -641
  333. package/.scannerwork/scanner-report/syntax-highlightings-5.pb +0 -691
  334. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +0 -620
  335. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +0 -178
  336. package/.scannerwork/scanner-report/syntax-highlightings-7.pb +0 -82
  337. /package/.scannerwork/scanner-report/{coverages-11.pb → coverages-12.pb} +0 -0
  338. /package/.scannerwork/scanner-report/{coverages-8.pb → coverages-14.pb} +0 -0
  339. /package/.scannerwork/scanner-report/{coverages-50.pb → coverages-20.pb} +0 -0
  340. /package/.scannerwork/scanner-report/{duplications-2.pb → duplications-16.pb} +0 -0
  341. /package/.scannerwork/scanner-report/{duplications-30.pb → duplications-17.pb} +0 -0
  342. /package/.scannerwork/scanner-report/{duplications-50.pb → duplications-18.pb} +0 -0
  343. /package/.scannerwork/scanner-report/{duplications-51.pb → duplications-19.pb} +0 -0
  344. /package/.scannerwork/scanner-report/{duplications-52.pb → duplications-20.pb} +0 -0
  345. /package/.scannerwork/scanner-report/{duplications-6.pb → duplications-22.pb} +0 -0
  346. /package/.scannerwork/scanner-report/{issues-55.pb → issues-29.pb} +0 -0
  347. /package/.scannerwork/scanner-report/{issues-51.pb → issues-32.pb} +0 -0
  348. /package/.scannerwork/scanner-report/{measures-4.pb → measures-10.pb} +0 -0
  349. /package/.scannerwork/scanner-report/{measures-8.pb → measures-14.pb} +0 -0
  350. /package/.scannerwork/scanner-report/{measures-50.pb → measures-20.pb} +0 -0
  351. /package/.scannerwork/scanner-report/{source-8.txt → source-14.txt} +0 -0
  352. /package/.scannerwork/scanner-report/{source-50.txt → source-20.txt} +0 -0
  353. /package/.scannerwork/scanner-report/{symbols-11.pb → symbols-12.pb} +0 -0
  354. /package/.scannerwork/scanner-report/{symbols-8.pb → symbols-14.pb} +0 -0
  355. /package/.scannerwork/scanner-report/{symbols-50.pb → symbols-20.pb} +0 -0
  356. /package/.scannerwork/scanner-report/{syntax-highlightings-8.pb → syntax-highlightings-14.pb} +0 -0
  357. /package/.scannerwork/scanner-report/{syntax-highlightings-50.pb → syntax-highlightings-20.pb} +0 -0
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2023 IBM Corp. All rights reserved.
1
+ // Copyright © 2023 IBM Corp. All rights reserved.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -12,172 +12,140 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
- /* global describe it beforeEach */
15
+ /* global */
16
16
  'use strict';
17
17
 
18
- const assert = require('assert');
19
- const backup = require('../includes/shallowbackup.js');
20
- const request = require('../includes/request.js');
21
- const fs = require('fs');
22
- const nock = require('nock');
18
+ const { fork, spawn } = require('node:child_process');
19
+ const { once } = require('node:events');
20
+ const { Duplex } = require('node:stream');
21
+ const debug = require('debug');
22
+ const logProcess = debug('couchbackup:test:process');
23
23
 
24
- // Function to create a DB object and call the shallow backup function
25
- // This is normally done by app.js
26
- function shallowBackup(dbUrl, opts) {
27
- const db = request.client(dbUrl, opts);
28
- // Disable compression to make body assertions easier
29
- db.service.setEnableGzipCompression(false);
30
- return backup(db, opts);
31
- }
32
-
33
- // Note all these tests include a body parameter of include_docs and a query
34
- // string of include_docs because of a quirk of nano that when using the fetch
35
- // method always adds the include_docs query string.
36
- describe('#unit Perform backup using shallow backup', function() {
37
- const dbUrl = 'http://localhost:5984/animaldb';
38
- // Query string keys are stringified by Nano
39
- const badgerKey = 'badger\0';
40
- const kookaburraKey = 'kookaburra\0';
41
- const snipeKey = 'snipe\0';
42
-
43
- beforeEach('Reset nocks', function() {
44
- nock.cleanAll();
45
- });
24
+ class TestProcess {
25
+ constructor(cmd, args, mode) {
26
+ this.cmd = cmd;
27
+ // Child process stdio [stdin, stdout, stderr, ...extra channels]
28
+ const childProcessOptions = { stdio: [] };
29
+ switch (mode) {
30
+ case 'readable':
31
+ // Readable only, no writing to stdin so ignore it
32
+ childProcessOptions.stdio = ['ignore', 'pipe', 'inherit'];
33
+ break;
34
+ case 'writable':
35
+ // Writable only, no reading from stdout so ignore it
36
+ childProcessOptions.stdio = ['pipe', 'ignore', 'inherit'];
37
+ break;
38
+ default:
39
+ // Default Duplex mode pipe both stdin and stdout
40
+ childProcessOptions.stdio = ['pipe', 'pipe', 'inherit'];
41
+ break;
42
+ }
43
+ if (cmd.endsWith('.js')) {
44
+ // Add Node fork ipc channel
45
+ childProcessOptions.stdio.push('ipc');
46
+ logProcess(`Forking Node process for ${cmd} with stdio:[${childProcessOptions.stdio}]`);
47
+ this.childProcess = fork(cmd, args, childProcessOptions);
48
+ } else {
49
+ logProcess(`Spawning process for ${cmd} with stdio:[${childProcessOptions.stdio}]`);
50
+ this.childProcess = spawn(cmd, args, childProcessOptions);
51
+ }
46
52
 
47
- it('should perform a shallow backup', async function() {
48
- const couch = nock(dbUrl)
49
- // batch 1
50
- .post('/_all_docs', { limit: 3, include_docs: true })
51
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
52
- // batch 2
53
- .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
54
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
55
- // batch 3
56
- .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
57
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_3.json', 'utf8')))
58
- // batch 4
59
- .post('/_all_docs', { limit: 3, start_key: snipeKey, include_docs: true })
60
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_4.json', 'utf8')));
61
-
62
- return new Promise((resolve, reject) => {
63
- shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
64
- .on('error', function(err) {
65
- reject(err);
66
- })
67
- .on('received', function(data) {
68
- try {
69
- if (data.batch === 3) {
70
- assert.strictEqual(data.length, 2); // smaller last batch
71
- } else {
72
- assert.strictEqual(data.length, 3);
73
- }
74
- } catch (err) {
75
- reject(err);
76
- }
77
- })
78
- .on('finished', function(data) {
79
- try {
80
- assert.strictEqual(data.total, 11);
81
- assert.ok(couch.isDone());
82
- resolve();
83
- } catch (err) {
84
- reject(err);
85
- }
86
- });
53
+ this.childProcessPromise = once(this.childProcess, 'close').then(() => {
54
+ const code = this.childProcess.exitCode;
55
+ const signal = this.childProcess.signalCode;
56
+ logProcess(`Test process ${cmd} closed with code ${code} and signal ${signal}`);
57
+ if (code === 0) {
58
+ logProcess(`Resolving process promise for ${cmd}`);
59
+ return Promise.resolve(code);
60
+ } else {
61
+ const e = new Error(`Test child process ${cmd} exited with code ${code} and ${signal}. This may be normal for error case testing.`);
62
+ e.code = code;
63
+ e.signal = signal;
64
+ logProcess(`Will reject process promise for ${cmd} with ${e}`);
65
+ return Promise.reject(e);
66
+ }
87
67
  });
88
- });
89
68
 
90
- it('should perform a shallow backup with transient error', async function() {
91
- const couch = nock(dbUrl)
92
- // batch 1
93
- .post('/_all_docs', { limit: 3, include_docs: true })
94
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
95
- // batch 2
96
- .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
97
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
98
- // batch 3 - transient error
99
- .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
100
- .reply(500, { error: 'Internal Server Error' })
101
- // batch 3 - retry
102
- .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
103
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_3.json', 'utf8')))
104
- // batch 4
105
- .post('/_all_docs', { limit: 3, start_key: snipeKey, include_docs: true })
106
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_4.json', 'utf8')));
69
+ switch (mode) {
70
+ case 'readable':
71
+ this.duplexFrom = this.childProcess.stdout;
72
+ break;
73
+ case 'writable':
74
+ this.duplexFrom = this.childProcess.stdin;
75
+ break;
76
+ default:
77
+ // Default is duplex
78
+ this.duplexFrom = { writable: this.childProcess.stdin, readable: this.childProcess.stdout };
79
+ }
107
80
 
108
- return new Promise((resolve, reject) => {
109
- shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
110
- .on('error', function(err) {
111
- try {
112
- assert.strictEqual(err.name, 'HTTPError');
113
- } catch (err) {
114
- reject(err);
115
- }
116
- })
117
- .on('received', function(data) {
118
- try {
119
- if (data.batch === 3) {
120
- assert.strictEqual(data.length, 2); // smaller last batch
121
- } else {
122
- assert.strictEqual(data.length, 3);
123
- }
124
- } catch (err) {
125
- reject(err);
126
- }
127
- })
128
- .on('finished', function(data) {
129
- try {
130
- assert.strictEqual(data.total, 11);
131
- assert.ok(couch.isDone());
132
- resolve();
133
- } catch (err) {
134
- reject(err);
135
- }
136
- });
137
- });
138
- });
139
-
140
- it('should fail to perform a shallow backup on fatal error', async function() {
141
- const couch = nock(dbUrl)
142
- // batch 1
143
- .post('/_all_docs', { limit: 3, include_docs: true })
144
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
145
- // batch 2
146
- .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
147
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
148
- // batch 3 - fatal error
149
- .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
150
- .reply(401, { error: 'Unauthorized' });
151
-
152
- let errCount = 0;
81
+ this.stream = Duplex.from(this.duplexFrom);
82
+ }
83
+ }
153
84
 
154
- return new Promise((resolve, reject) => {
155
- shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
156
- .on('error', function(err) {
157
- try {
158
- errCount++;
159
- assert.strictEqual(err.name, 'Unauthorized');
160
- } catch (err) {
161
- reject(err);
162
- }
163
- })
164
- .on('received', function(data) {
165
- try {
166
- assert.strictEqual(data.length, 3);
167
- } catch (err) {
168
- reject(err);
169
- }
170
- })
171
- .on('finished', function(data) {
172
- try {
173
- assert.strictEqual(data.total, 6);
174
- assert.ok(couch.isDone());
175
- assert.strictEqual(errCount, 1);
176
- resolve();
177
- } catch (err) {
178
- reject(err);
179
- }
180
- });
181
- });
182
- });
183
- });
85
+ module.exports = {
86
+ TestProcess,
87
+ cliBackup: function(databaseName, params = {}) {
88
+ const args = ['--db', databaseName];
89
+ if (params.opts) {
90
+ if (params.opts.mode) {
91
+ args.push('--mode');
92
+ args.push(params.opts.mode);
93
+ }
94
+ if (params.opts.output) {
95
+ args.push('--output');
96
+ args.push(params.opts.output);
97
+ }
98
+ if (params.opts.log) {
99
+ args.push('--log');
100
+ args.push(params.opts.log);
101
+ }
102
+ if (params.opts.resume) {
103
+ args.push('--resume');
104
+ args.push(params.opts.resume);
105
+ }
106
+ if (params.opts.bufferSize) {
107
+ args.push('--buffer-size');
108
+ args.push(params.opts.bufferSize);
109
+ }
110
+ if (params.opts.iamApiKey) {
111
+ args.push('--iam-api-key');
112
+ args.push(params.opts.iamApiKey);
113
+ }
114
+ }
115
+ return new TestProcess('./bin/couchbackup.bin.js', args, 'readable');
116
+ },
117
+ cliRestore: function(databaseName, params) {
118
+ const args = ['--db', databaseName];
119
+ if (params.opts) {
120
+ if (params.opts.bufferSize) {
121
+ args.push('--buffer-size');
122
+ args.push(params.opts.bufferSize);
123
+ }
124
+ if (params.opts.parallelism) {
125
+ args.push('--parallelism');
126
+ args.push(params.opts.parallelism);
127
+ }
128
+ if (params.opts.requestTimeout) {
129
+ args.push('--request-timeout');
130
+ args.push(params.opts.requestTimeout);
131
+ }
132
+ if (params.opts.iamApiKey) {
133
+ args.push('--iam-api-key');
134
+ args.push(params.opts.iamApiKey);
135
+ }
136
+ }
137
+ return new TestProcess('./bin/couchrestore.bin.js', args, 'writable');
138
+ },
139
+ cliGzip: function() {
140
+ return new TestProcess('gzip', []);
141
+ },
142
+ cliGunzip: function() {
143
+ return new TestProcess('gunzip', []);
144
+ },
145
+ cliEncrypt: function() {
146
+ return new TestProcess('openssl', ['aes-128-cbc', '-pass', 'pass:12345']);
147
+ },
148
+ cliDecrypt: function() {
149
+ return new TestProcess('openssl', ['aes-128-cbc', '-d', '-pass', 'pass:12345']);
150
+ }
151
+ };
@@ -16,86 +16,176 @@
16
16
  'use strict';
17
17
 
18
18
  const assert = require('assert');
19
- const fs = require('fs');
20
- const { once } = require('node:events');
21
- const u = require('./citestutils.js');
19
+ const nock = require('nock');
20
+ const request = require('../includes/request.js');
21
+ const changes = require('../includes/spoolchanges.js');
22
22
 
23
- [{ useApi: true }, { useApi: false }].forEach(function(params) {
24
- describe(u.scenario('Resume tests', params), function() {
25
- it('should create a log file', async function() {
26
- // Allow up to 90 s for this test
27
- u.setTimeout(this, 60);
23
+ const url = 'http://localhost:7777';
24
+ const dbName = 'fakenockdb';
25
+ const longTestTimeout = 3000;
28
26
 
29
- const actualBackup = `./${this.fileName}`;
30
- const logFile = `./${this.fileName}` + '.log';
31
- const p = u.p(params, { opts: { log: logFile } });
32
- return u.testBackupToFile(p, 'animaldb', actualBackup).then(() => {
33
- assert.ok(fs.existsSync(logFile), 'The log file should exist.');
34
- });
27
+ const db = request.client(`${url}/${dbName}`, { parallelism: 1 });
28
+
29
+ const seqSuffix = Buffer.alloc(124, 'abc123').toString('base64');
30
+ function provideChanges(batchSize, totalChanges, fullResponse = false) {
31
+ let pending = totalChanges;
32
+ const sparseResultsArray = Array(batchSize).fill({
33
+ seq: null,
34
+ id: 'doc',
35
+ changes: [{ rev: '1-abcdef0123456789abcdef0123456789' }]
36
+ });
37
+ nock(url)
38
+ .post(`/${dbName}/_changes`)
39
+ .query(true)
40
+ .times(totalChanges / batchSize + (totalChanges % batchSize > 0 ? 1 : 0))
41
+ .reply(200, (uri, requestBody) => {
42
+ pending -= batchSize;
43
+ const lastSeq = (totalChanges - pending);
44
+ const seq = lastSeq - batchSize;
45
+ return {
46
+ results: fullResponse
47
+ ? Array.from(Array(batchSize), (_, i) => {
48
+ return {
49
+ seq: `${seq + i}-${seqSuffix}`,
50
+ id: `doc${seq + i}`,
51
+ changes: [{ rev: '1-abcdef0123456789abcdef0123456789' }]
52
+ };
53
+ })
54
+ : sparseResultsArray,
55
+ pending: pending,
56
+ last_seq: `${lastSeq}-abc`
57
+ };
35
58
  });
59
+ }
36
60
 
37
- it('should restore corrupted animaldb to a database correctly', async function() {
38
- // Allow up to 60 s to restore and compare (again it should be faster)!
39
- u.setTimeout(this, 60);
40
- const input = fs.createReadStream('./test/fixtures/animaldb_corrupted.json');
41
- const dbName = this.dbName;
42
- const p = u.p(params, { expectedRestoreErrorRecoverable: { name: 'BackupFileJsonError' } });
43
- return once(input, 'open')
44
- .then(() => {
45
- return u.testRestore(p, input, dbName);
46
- }).then(() => {
47
- return u.dbCompare('animaldb', dbName);
48
- });
61
+ describe('#unit Check spool changes', function() {
62
+ it('should terminate on request error', async function() {
63
+ nock(url)
64
+ .post(`/${dbName}/_changes`)
65
+ .query(true)
66
+ .times(3)
67
+ .replyWithError({ code: 'ECONNRESET', message: 'socket hang up' });
68
+
69
+ return new Promise((resolve, reject) => {
70
+ changes(db, '/dev/null', 500, null, function(err) {
71
+ try {
72
+ assert.strictEqual(err.name, 'SpoolChangesError');
73
+ assert.strictEqual(err.message, `Failed changes request - socket hang up: post ${url}/${dbName}/_changes`);
74
+ assert.ok(nock.isDone());
75
+ resolve();
76
+ } catch (err) {
77
+ reject(err);
78
+ }
79
+ });
49
80
  });
81
+ }).timeout(longTestTimeout);
50
82
 
51
- it('should restore resumed animaldb with blank line to a database correctly', async function() {
52
- // Allow up to 60 s to restore and compare (again it should be faster)!
53
- u.setTimeout(this, 60);
54
- const input = fs.createReadStream('./test/fixtures/animaldb_resumed_blank.json');
55
- const dbName = this.dbName;
56
- return once(input, 'open')
57
- .then(() => {
58
- return u.testRestore(params, input, dbName);
59
- }).then(() => {
60
- return u.dbCompare('animaldb', dbName);
61
- });
83
+ it('should terminate on bad HTTP status code response', async function() {
84
+ nock(url)
85
+ .post(`/${dbName}/_changes`)
86
+ .query(true)
87
+ .times(3)
88
+ .reply(500, function(uri, requestBody) {
89
+ this.req.response.statusMessage = 'Internal Server Error';
90
+ return { error: 'foo', reason: 'bar' };
91
+ });
92
+ return new Promise((resolve, reject) => {
93
+ changes(db, '/dev/null', 500, null, function(err) {
94
+ try {
95
+ assert.strictEqual(err.name, 'HTTPFatalError');
96
+ assert.strictEqual(err.message, `500 Internal Server Error: post ${url}/${dbName}/_changes - Error: foo, Reason: bar`);
97
+ assert.ok(nock.isDone());
98
+ resolve();
99
+ } catch (err) {
100
+ reject(err);
101
+ }
102
+ });
62
103
  });
63
- });
64
- });
104
+ }).timeout(longTestTimeout);
65
105
 
66
- describe('Resume tests', function() {
67
- // Currently cannot abort API backups, when we do this test should be run for
68
- // both API and CLI
69
- it('should correctly backup and restore backup10m', async function() {
70
- // Allow up to 90 s for this test
71
- u.setTimeout(this, 90);
106
+ it('should keep collecting changes', async function() {
107
+ // This test validates that spooling will correctly
108
+ // continue across multiple requests
109
+ // (4 batches of 100000 to be precise).
110
+ // This test might take up to 10 seconds
111
+ this.timeout(10 * 1000);
72
112
 
73
- const actualBackup = `./${this.fileName}`;
74
- const logFile = `./${this.fileName}` + '.log';
75
- // Use abort parameter to terminate the backup
76
- const p = u.p(params, { abort: true }, { opts: { log: logFile } });
77
- const restoreDb = this.dbName;
78
- // Set the database doc count as fewer than this should be written during
79
- // resumed backup.
80
- p.exclusiveMaxExpected = 5096;
113
+ // Use full changes for this test
114
+ provideChanges(100000, 400000, true);
115
+ return new Promise((resolve, reject) => {
116
+ changes(db, '/dev/null', 500, null, function(err) {
117
+ try {
118
+ assert.ok(!err);
119
+ assert.ok(nock.isDone());
120
+ resolve();
121
+ } catch (err) {
122
+ reject(err);
123
+ }
124
+ });
125
+ });
126
+ });
81
127
 
82
- return u.testBackupAbortResumeRestore(p, 'backup10m', actualBackup, restoreDb);
128
+ it('should keep collecting sparse changes', async function() {
129
+ // This test checks that making thousands of requests doesn't
130
+ // make anything bad happen.
131
+ // This test might take up to 25 seconds
132
+ this.timeout(25 * 1000);
133
+ // Use sparse changes for this test and a batch size of 1
134
+ provideChanges(1, 2500);
135
+ return new Promise((resolve, reject) => {
136
+ changes(db, '/dev/null', 500, null, function(err) {
137
+ try {
138
+ assert.ok(!err);
139
+ assert.ok(nock.isDone());
140
+ resolve();
141
+ } catch (err) {
142
+ reject(err);
143
+ }
144
+ });
145
+ });
83
146
  });
84
- // Note --output is only valid for CLI usage, this test should only run for CLI
85
- const params = { useApi: false };
86
- it('should correctly backup and restore backup10m using --output', async function() {
87
- // Allow up to 90 s for this test
88
- u.setTimeout(this, 90);
147
+ });
89
148
 
90
- const actualBackup = `./${this.fileName}`;
91
- const logFile = `./${this.fileName}` + '.log';
92
- // Use abort parameter to terminate the backup
93
- const p = u.p(params, { abort: true }, { opts: { output: actualBackup, log: logFile } });
94
- const restoreDb = this.dbName;
95
- // Set the database doc count as fewer than this should be written during
96
- // resumed backup.
97
- p.exclusiveMaxExpected = 5096;
149
+ describe('Longer spool changes checks', function() {
150
+ it('#slow should keep collecting changes (25M)', async function() {
151
+ // This test might take up to 5 minutes
152
+ this.timeout(5 * 60 * 1000);
153
+ // Note changes spooling uses a constant batch size, we are setting
154
+ // a test value here and setting the buffer to match
155
+ const batch = 100000;
156
+ // Use sparse changes for this test
157
+ provideChanges(batch, 25000000);
158
+ return new Promise((resolve, reject) => {
159
+ changes(db, '/dev/null', batch, null, function(err) {
160
+ try {
161
+ assert.ok(!err);
162
+ assert.ok(nock.isDone());
163
+ resolve();
164
+ } catch (err) {
165
+ reject(err);
166
+ }
167
+ });
168
+ });
169
+ });
98
170
 
99
- return await u.testBackupAbortResumeRestore(p, 'backup10m', actualBackup, restoreDb);
171
+ it('#slower should keep collecting changes (500M)', async function() {
172
+ // This test might take up to 90 minutes
173
+ this.timeout(90 * 60 * 1000);
174
+ // Note changes spooling uses a constant batch size, we are setting
175
+ // a test value here and setting the buffer to match
176
+ const batch = 1000000;
177
+ // Use full changes for this test to exercise load
178
+ provideChanges(batch, 500000000, true);
179
+ return new Promise((resolve, reject) => {
180
+ changes(db, '/dev/null', batch, null, function(err) {
181
+ try {
182
+ assert.ok(!err);
183
+ assert.ok(nock.isDone());
184
+ resolve();
185
+ } catch (err) {
186
+ reject(err);
187
+ }
188
+ });
189
+ });
100
190
  });
101
191
  });