@cloudant/couchbackup 2.9.9-SNAPSHOT.99 → 2.9.9

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 (351) hide show
  1. package/.scannerwork/report-task.txt +2 -2
  2. package/.scannerwork/scanner-report/analysis-warnings.pb +2 -2
  3. package/.scannerwork/scanner-report/analysis.log +1 -1
  4. package/.scannerwork/scanner-report/changesets-36.pb +1 -0
  5. package/.scannerwork/scanner-report/changesets-45.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-47.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-49.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-64.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-66.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-68.pb +1 -0
  11. package/.scannerwork/scanner-report/component-1.pb +1 -1
  12. package/.scannerwork/scanner-report/component-19.pb +1 -1
  13. package/.scannerwork/scanner-report/component-2.pb +1 -1
  14. package/.scannerwork/scanner-report/component-20.pb +1 -1
  15. package/.scannerwork/scanner-report/component-21.pb +1 -1
  16. package/.scannerwork/scanner-report/component-22.pb +1 -1
  17. package/.scannerwork/scanner-report/component-23.pb +1 -1
  18. package/.scannerwork/scanner-report/component-24.pb +1 -1
  19. package/.scannerwork/scanner-report/component-25.pb +1 -1
  20. package/.scannerwork/scanner-report/component-26.pb +1 -1
  21. package/.scannerwork/scanner-report/component-27.pb +1 -1
  22. package/.scannerwork/scanner-report/component-28.pb +1 -1
  23. package/.scannerwork/scanner-report/component-29.pb +1 -1
  24. package/.scannerwork/scanner-report/component-3.pb +1 -1
  25. package/.scannerwork/scanner-report/component-30.pb +1 -1
  26. package/.scannerwork/scanner-report/component-31.pb +1 -1
  27. package/.scannerwork/scanner-report/component-32.pb +1 -1
  28. package/.scannerwork/scanner-report/component-33.pb +1 -1
  29. package/.scannerwork/scanner-report/component-34.pb +1 -1
  30. package/.scannerwork/scanner-report/component-35.pb +1 -1
  31. package/.scannerwork/scanner-report/component-36.pb +1 -0
  32. package/.scannerwork/scanner-report/component-37.pb +1 -1
  33. package/.scannerwork/scanner-report/component-38.pb +1 -1
  34. package/.scannerwork/scanner-report/component-39.pb +1 -1
  35. package/.scannerwork/scanner-report/component-4.pb +1 -1
  36. package/.scannerwork/scanner-report/component-40.pb +1 -1
  37. package/.scannerwork/scanner-report/component-45.pb +1 -0
  38. package/.scannerwork/scanner-report/component-47.pb +1 -1
  39. package/.scannerwork/scanner-report/component-49.pb +1 -0
  40. package/.scannerwork/scanner-report/component-50.pb +1 -1
  41. package/.scannerwork/scanner-report/component-52.pb +1 -1
  42. package/.scannerwork/scanner-report/component-56.pb +1 -1
  43. package/.scannerwork/scanner-report/component-57.pb +1 -1
  44. package/.scannerwork/scanner-report/component-58.pb +1 -1
  45. package/.scannerwork/scanner-report/component-59.pb +1 -1
  46. package/.scannerwork/scanner-report/component-60.pb +1 -1
  47. package/.scannerwork/scanner-report/component-61.pb +1 -1
  48. package/.scannerwork/scanner-report/component-62.pb +1 -1
  49. package/.scannerwork/scanner-report/component-63.pb +1 -1
  50. package/.scannerwork/scanner-report/component-64.pb +1 -1
  51. package/.scannerwork/scanner-report/component-65.pb +1 -1
  52. package/.scannerwork/scanner-report/component-66.pb +1 -0
  53. package/.scannerwork/scanner-report/component-67.pb +1 -1
  54. package/.scannerwork/scanner-report/component-68.pb +1 -0
  55. package/.scannerwork/scanner-report/component-69.pb +1 -0
  56. package/.scannerwork/scanner-report/coverages-19.pb +0 -0
  57. package/.scannerwork/scanner-report/coverages-2.pb +0 -0
  58. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  59. package/.scannerwork/scanner-report/coverages-21.pb +0 -0
  60. package/.scannerwork/scanner-report/coverages-22.pb +0 -0
  61. package/.scannerwork/scanner-report/coverages-23.pb +0 -0
  62. package/.scannerwork/scanner-report/coverages-24.pb +0 -0
  63. package/.scannerwork/scanner-report/coverages-25.pb +0 -0
  64. package/.scannerwork/scanner-report/coverages-26.pb +0 -0
  65. package/.scannerwork/scanner-report/coverages-27.pb +0 -0
  66. package/.scannerwork/scanner-report/coverages-28.pb +0 -0
  67. package/.scannerwork/scanner-report/coverages-29.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-3.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-30.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-31.pb +0 -0
  71. package/.scannerwork/scanner-report/coverages-32.pb +0 -0
  72. package/.scannerwork/scanner-report/coverages-33.pb +0 -0
  73. package/.scannerwork/scanner-report/coverages-34.pb +0 -0
  74. package/.scannerwork/scanner-report/coverages-35.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-36.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-37.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-38.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-39.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-45.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-47.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-49.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-61.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-62.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-63.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-65.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-66.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-67.pb +0 -0
  95. package/.scannerwork/scanner-report/duplications-20.pb +0 -2
  96. package/.scannerwork/scanner-report/duplications-22.pb +3 -0
  97. package/.scannerwork/scanner-report/duplications-28.pb +3 -0
  98. package/.scannerwork/scanner-report/duplications-29.pb +2 -0
  99. package/.scannerwork/scanner-report/duplications-3.pb +0 -2
  100. package/.scannerwork/scanner-report/duplications-30.pb +2 -0
  101. package/.scannerwork/scanner-report/duplications-31.pb +0 -2
  102. package/.scannerwork/scanner-report/duplications-33.pb +0 -3
  103. package/.scannerwork/scanner-report/duplications-34.pb +3 -0
  104. package/.scannerwork/scanner-report/duplications-37.pb +2 -0
  105. package/.scannerwork/scanner-report/duplications-47.pb +2 -0
  106. package/.scannerwork/scanner-report/duplications-49.pb +2 -0
  107. package/.scannerwork/scanner-report/duplications-56.pb +2 -0
  108. package/.scannerwork/scanner-report/duplications-63.pb +2 -0
  109. package/.scannerwork/scanner-report/duplications-65.pb +0 -2
  110. package/.scannerwork/scanner-report/duplications-66.pb +0 -0
  111. package/.scannerwork/scanner-report/duplications-67.pb +0 -2
  112. package/.scannerwork/scanner-report/duplications-68.pb +0 -0
  113. package/.scannerwork/scanner-report/issues-28.pb +4 -0
  114. package/.scannerwork/scanner-report/issues-33.pb +2 -3
  115. package/.scannerwork/scanner-report/measures-19.pb +0 -0
  116. package/.scannerwork/scanner-report/measures-2.pb +0 -0
  117. package/.scannerwork/scanner-report/measures-20.pb +0 -0
  118. package/.scannerwork/scanner-report/measures-21.pb +0 -0
  119. package/.scannerwork/scanner-report/measures-22.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-23.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-24.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-25.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-26.pb +0 -0
  124. package/.scannerwork/scanner-report/measures-27.pb +0 -0
  125. package/.scannerwork/scanner-report/measures-28.pb +0 -0
  126. package/.scannerwork/scanner-report/measures-29.pb +0 -0
  127. package/.scannerwork/scanner-report/measures-3.pb +0 -0
  128. package/.scannerwork/scanner-report/measures-30.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-31.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-32.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-33.pb +0 -0
  132. package/.scannerwork/scanner-report/measures-34.pb +0 -0
  133. package/.scannerwork/scanner-report/measures-35.pb +0 -0
  134. package/.scannerwork/scanner-report/measures-36.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-37.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-38.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-39.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-4.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-40.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-45.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-47.pb +0 -0
  142. package/.scannerwork/scanner-report/measures-49.pb +0 -0
  143. package/.scannerwork/scanner-report/measures-50.pb +0 -0
  144. package/.scannerwork/scanner-report/measures-52.pb +0 -0
  145. package/.scannerwork/scanner-report/measures-56.pb +0 -0
  146. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  147. package/.scannerwork/scanner-report/measures-58.pb +0 -0
  148. package/.scannerwork/scanner-report/measures-59.pb +0 -0
  149. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  150. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  151. package/.scannerwork/scanner-report/measures-62.pb +0 -0
  152. package/.scannerwork/scanner-report/measures-63.pb +0 -0
  153. package/.scannerwork/scanner-report/measures-64.pb +0 -0
  154. package/.scannerwork/scanner-report/measures-65.pb +0 -0
  155. package/.scannerwork/scanner-report/measures-66.pb +0 -0
  156. package/.scannerwork/scanner-report/measures-67.pb +0 -0
  157. package/.scannerwork/scanner-report/measures-68.pb +0 -0
  158. package/.scannerwork/scanner-report/metadata.pb +0 -0
  159. package/.scannerwork/scanner-report/source-19.txt +84 -18
  160. package/.scannerwork/scanner-report/source-2.txt +39 -401
  161. package/.scannerwork/scanner-report/source-20.txt +15 -274
  162. package/.scannerwork/scanner-report/source-21.txt +348 -18
  163. package/.scannerwork/scanner-report/source-22.txt +91 -35
  164. package/.scannerwork/scanner-report/source-23.txt +43 -346
  165. package/.scannerwork/scanner-report/source-24.txt +73 -16
  166. package/.scannerwork/scanner-report/source-25.txt +125 -51
  167. package/.scannerwork/scanner-report/source-26.txt +136 -9
  168. package/.scannerwork/scanner-report/source-27.txt +598 -41
  169. package/.scannerwork/scanner-report/source-28.txt +187 -99
  170. package/.scannerwork/scanner-report/source-29.txt +203 -25
  171. package/.scannerwork/scanner-report/source-3.txt +52 -200
  172. package/.scannerwork/scanner-report/source-30.txt +254 -108
  173. package/.scannerwork/scanner-report/source-31.txt +17 -127
  174. package/.scannerwork/scanner-report/source-32.txt +6 -96
  175. package/.scannerwork/scanner-report/source-33.txt +27 -224
  176. package/.scannerwork/scanner-report/source-34.txt +114 -125
  177. package/.scannerwork/scanner-report/source-35.txt +37 -61
  178. package/.scannerwork/scanner-report/source-36.txt +36 -0
  179. package/.scannerwork/scanner-report/source-37.txt +120 -52
  180. package/.scannerwork/scanner-report/source-38.txt +48 -36
  181. package/.scannerwork/scanner-report/source-39.txt +125 -92
  182. package/.scannerwork/scanner-report/source-4.txt +509 -625
  183. package/.scannerwork/scanner-report/source-40.txt +393 -51
  184. package/.scannerwork/scanner-report/source-45.txt +418 -0
  185. package/.scannerwork/scanner-report/source-47.txt +175 -509
  186. package/.scannerwork/scanner-report/source-49.txt +190 -0
  187. package/.scannerwork/scanner-report/source-50.txt +167 -281
  188. package/.scannerwork/scanner-report/source-52.txt +94 -21
  189. package/.scannerwork/scanner-report/source-56.txt +73 -35
  190. package/.scannerwork/scanner-report/source-57.txt +111 -93
  191. package/.scannerwork/scanner-report/source-58.txt +88 -74
  192. package/.scannerwork/scanner-report/source-59.txt +94 -14
  193. package/.scannerwork/scanner-report/source-60.txt +147 -133
  194. package/.scannerwork/scanner-report/source-61.txt +83 -59
  195. package/.scannerwork/scanner-report/source-62.txt +33 -157
  196. package/.scannerwork/scanner-report/source-63.txt +56 -99
  197. package/.scannerwork/scanner-report/source-64.txt +41 -509
  198. package/.scannerwork/scanner-report/source-65.txt +65 -160
  199. package/.scannerwork/scanner-report/source-66.txt +31 -0
  200. package/.scannerwork/scanner-report/source-67.txt +144 -170
  201. package/.scannerwork/scanner-report/source-68.txt +281 -0
  202. package/{test-19-results.xml → .scannerwork/scanner-report/source-69.txt} +139 -139
  203. package/.scannerwork/scanner-report/symbols-19.pb +68 -9
  204. package/.scannerwork/scanner-report/symbols-2.pb +19 -610
  205. package/.scannerwork/scanner-report/symbols-20.pb +9 -485
  206. package/.scannerwork/scanner-report/symbols-21.pb +494 -11
  207. package/.scannerwork/scanner-report/symbols-22.pb +76 -42
  208. package/.scannerwork/scanner-report/symbols-23.pb +43 -494
  209. package/.scannerwork/scanner-report/symbols-24.pb +60 -17
  210. package/.scannerwork/scanner-report/symbols-25.pb +116 -36
  211. package/.scannerwork/scanner-report/symbols-26.pb +112 -9
  212. package/.scannerwork/scanner-report/symbols-27.pb +1253 -44
  213. package/.scannerwork/scanner-report/symbols-28.pb +385 -103
  214. package/.scannerwork/scanner-report/symbols-29.pb +417 -26
  215. package/.scannerwork/scanner-report/symbols-3.pb +29 -417
  216. package/.scannerwork/scanner-report/symbols-30.pb +486 -85
  217. package/.scannerwork/scanner-report/symbols-31.pb +17 -102
  218. package/.scannerwork/scanner-report/symbols-32.pb +9 -77
  219. package/.scannerwork/scanner-report/symbols-33.pb +26 -393
  220. package/.scannerwork/scanner-report/symbols-34.pb +97 -116
  221. package/.scannerwork/scanner-report/symbols-35.pb +36 -60
  222. package/.scannerwork/scanner-report/symbols-36.pb +11 -0
  223. package/.scannerwork/scanner-report/symbols-37.pb +102 -30
  224. package/.scannerwork/scanner-report/symbols-38.pb +44 -18
  225. package/.scannerwork/scanner-report/symbols-39.pb +85 -28
  226. package/.scannerwork/scanner-report/symbols-45.pb +610 -0
  227. package/.scannerwork/scanner-report/symbols-47.pb +153 -0
  228. package/.scannerwork/scanner-report/symbols-49.pb +180 -0
  229. package/.scannerwork/scanner-report/symbols-52.pb +28 -18
  230. package/.scannerwork/scanner-report/symbols-56.pb +42 -13
  231. package/.scannerwork/scanner-report/symbols-57.pb +33 -59
  232. package/.scannerwork/scanner-report/symbols-58.pb +30 -42
  233. package/.scannerwork/scanner-report/symbols-59.pb +58 -13
  234. package/.scannerwork/scanner-report/symbols-60.pb +129 -111
  235. package/.scannerwork/scanner-report/symbols-61.pb +41 -45
  236. package/.scannerwork/scanner-report/symbols-62.pb +14 -143
  237. package/.scannerwork/scanner-report/symbols-63.pb +42 -30
  238. package/.scannerwork/scanner-report/symbols-64.pb +18 -0
  239. package/.scannerwork/scanner-report/symbols-65.pb +45 -152
  240. package/.scannerwork/scanner-report/symbols-66.pb +14 -0
  241. package/.scannerwork/scanner-report/symbols-67.pb +126 -180
  242. package/.scannerwork/scanner-report/syntax-highlightings-19.pb +70 -15
  243. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +58 -624
  244. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +14 -623
  245. package/.scannerwork/scanner-report/syntax-highlightings-21.pb +596 -25
  246. package/.scannerwork/scanner-report/syntax-highlightings-22.pb +119 -43
  247. package/.scannerwork/scanner-report/syntax-highlightings-23.pb +46 -594
  248. package/.scannerwork/scanner-report/syntax-highlightings-24.pb +74 -27
  249. package/.scannerwork/scanner-report/syntax-highlightings-25.pb +98 -59
  250. package/.scannerwork/scanner-report/syntax-highlightings-26.pb +189 -14
  251. package/.scannerwork/scanner-report/syntax-highlightings-27.pb +843 -66
  252. package/.scannerwork/scanner-report/syntax-highlightings-28.pb +269 -163
  253. package/.scannerwork/scanner-report/syntax-highlightings-29.pb +291 -28
  254. package/.scannerwork/scanner-report/syntax-highlightings-3.pb +76 -304
  255. package/.scannerwork/scanner-report/syntax-highlightings-30.pb +610 -142
  256. package/.scannerwork/scanner-report/syntax-highlightings-31.pb +27 -191
  257. package/.scannerwork/scanner-report/syntax-highlightings-32.pb +13 -123
  258. package/.scannerwork/scanner-report/syntax-highlightings-33.pb +29 -290
  259. package/.scannerwork/scanner-report/syntax-highlightings-34.pb +147 -99
  260. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +55 -70
  261. package/.scannerwork/scanner-report/syntax-highlightings-36.pb +59 -0
  262. package/.scannerwork/scanner-report/syntax-highlightings-37.pb +200 -76
  263. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +85 -57
  264. package/.scannerwork/scanner-report/syntax-highlightings-39.pb +156 -103
  265. package/.scannerwork/scanner-report/syntax-highlightings-4.pb +3396 -536
  266. package/.scannerwork/scanner-report/syntax-highlightings-40.pb +3526 -727
  267. package/.scannerwork/scanner-report/syntax-highlightings-45.pb +648 -0
  268. package/.scannerwork/scanner-report/syntax-highlightings-47.pb +199 -3733
  269. package/.scannerwork/scanner-report/syntax-highlightings-49.pb +225 -0
  270. package/.scannerwork/scanner-report/syntax-highlightings-50.pb +863 -199
  271. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +108 -20
  272. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +57 -21
  273. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +85 -89
  274. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +77 -80
  275. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +103 -15
  276. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +166 -136
  277. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +81 -60
  278. package/.scannerwork/scanner-report/syntax-highlightings-62.pb +17 -206
  279. package/.scannerwork/scanner-report/syntax-highlightings-63.pb +44 -79
  280. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +39 -3736
  281. package/.scannerwork/scanner-report/syntax-highlightings-65.pb +64 -183
  282. package/.scannerwork/scanner-report/syntax-highlightings-66.pb +45 -0
  283. package/.scannerwork/scanner-report/syntax-highlightings-67.pb +154 -166
  284. package/.scannerwork/scanner-report/syntax-highlightings-68.pb +285 -0
  285. package/.scannerwork/scanner-report/{syntax-highlightings-43.pb → syntax-highlightings-69.pb} +98 -99
  286. package/CHANGES.md +4 -0
  287. package/README.md +1 -1
  288. package/package.json +4 -4
  289. package/test-16-results.xml +152 -152
  290. package/test-18-results.xml +156 -156
  291. package/{.scannerwork/scanner-report/source-43.txt → test-20-results.xml} +144 -144
  292. package/test-iam-18-results.xml +50 -50
  293. package/.scannerwork/scanner-report/changesets-4.pb +0 -1
  294. package/.scannerwork/scanner-report/changesets-5.pb +0 -1
  295. package/.scannerwork/scanner-report/changesets-50.pb +0 -1
  296. package/.scannerwork/scanner-report/changesets-51.pb +0 -1
  297. package/.scannerwork/scanner-report/changesets-53.pb +0 -1
  298. package/.scannerwork/scanner-report/changesets-54.pb +0 -1
  299. package/.scannerwork/scanner-report/changesets-6.pb +0 -1
  300. package/.scannerwork/scanner-report/component-42.pb +0 -1
  301. package/.scannerwork/scanner-report/component-43.pb +0 -1
  302. package/.scannerwork/scanner-report/component-5.pb +0 -1
  303. package/.scannerwork/scanner-report/component-51.pb +0 -1
  304. package/.scannerwork/scanner-report/component-53.pb +0 -1
  305. package/.scannerwork/scanner-report/component-54.pb +0 -1
  306. package/.scannerwork/scanner-report/component-6.pb +0 -1
  307. package/.scannerwork/scanner-report/coverages-4.pb +0 -0
  308. package/.scannerwork/scanner-report/coverages-5.pb +0 -0
  309. package/.scannerwork/scanner-report/coverages-51.pb +0 -0
  310. package/.scannerwork/scanner-report/coverages-53.pb +0 -0
  311. package/.scannerwork/scanner-report/coverages-54.pb +0 -0
  312. package/.scannerwork/scanner-report/coverages-6.pb +0 -0
  313. package/.scannerwork/scanner-report/duplications-32.pb +0 -3
  314. package/.scannerwork/scanner-report/duplications-5.pb +0 -3
  315. package/.scannerwork/scanner-report/duplications-51.pb +0 -2
  316. package/.scannerwork/scanner-report/duplications-54.pb +0 -2
  317. package/.scannerwork/scanner-report/issues-29.pb +0 -3
  318. package/.scannerwork/scanner-report/measures-43.pb +0 -0
  319. package/.scannerwork/scanner-report/measures-5.pb +0 -0
  320. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  321. package/.scannerwork/scanner-report/measures-53.pb +0 -0
  322. package/.scannerwork/scanner-report/measures-54.pb +0 -0
  323. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  324. package/.scannerwork/scanner-report/source-42.txt +0 -509
  325. package/.scannerwork/scanner-report/source-5.txt +0 -131
  326. package/.scannerwork/scanner-report/source-51.txt +0 -92
  327. package/.scannerwork/scanner-report/source-53.txt +0 -129
  328. package/.scannerwork/scanner-report/source-54.txt +0 -75
  329. package/.scannerwork/scanner-report/source-6.txt +0 -100
  330. package/.scannerwork/scanner-report/symbols-4.pb +0 -1254
  331. package/.scannerwork/scanner-report/symbols-5.pb +0 -97
  332. package/.scannerwork/scanner-report/symbols-51.pb +0 -44
  333. package/.scannerwork/scanner-report/symbols-53.pb +0 -33
  334. package/.scannerwork/scanner-report/symbols-54.pb +0 -42
  335. package/.scannerwork/scanner-report/symbols-6.pb +0 -69
  336. package/.scannerwork/scanner-report/syntax-highlightings-42.pb +0 -3748
  337. package/.scannerwork/scanner-report/syntax-highlightings-5.pb +0 -182
  338. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +0 -90
  339. package/.scannerwork/scanner-report/syntax-highlightings-53.pb +0 -129
  340. package/.scannerwork/scanner-report/syntax-highlightings-54.pb +0 -78
  341. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +0 -105
  342. package/test-14-results.xml +0 -509
  343. /package/.scannerwork/scanner-report/{coverages-50.pb → coverages-68.pb} +0 -0
  344. /package/.scannerwork/scanner-report/{duplications-4.pb → duplications-26.pb} +0 -0
  345. /package/.scannerwork/scanner-report/{duplications-50.pb → duplications-36.pb} +0 -0
  346. /package/.scannerwork/scanner-report/{duplications-53.pb → duplications-45.pb} +0 -0
  347. /package/.scannerwork/scanner-report/{duplications-6.pb → duplications-64.pb} +0 -0
  348. /package/.scannerwork/scanner-report/{issues-23.pb → issues-21.pb} +0 -0
  349. /package/.scannerwork/scanner-report/{issues-34.pb → issues-25.pb} +0 -0
  350. /package/.scannerwork/scanner-report/{measures-42.pb → measures-69.pb} +0 -0
  351. /package/.scannerwork/scanner-report/{symbols-50.pb → symbols-68.pb} +0 -0
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2021 IBM Corp. All rights reserved.
1
+ // Copyright © 2017, 2018 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,233 +12,36 @@
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 describe it */
16
16
  'use strict';
17
17
 
18
18
  const assert = require('assert');
19
- const nock = require('nock');
20
- const request = require('../includes/request.js');
21
- const error = require('../includes/error.js');
22
-
23
- const url = 'http://localhost:7777/testdb';
24
- const db = request.client(url, { parallelism: 1 });
25
- const timeoutDb = request.client(url, { parallelism: 1, requestTimeout: 500 });
26
- const longTestTimeout = 3000;
27
-
28
- beforeEach('Clean nock', function() {
29
- nock.cleanAll();
30
- });
31
-
32
- describe('#unit Check request headers', function() {
33
- it('should have a couchbackup user-agent', function(done) {
34
- const couch = nock(url)
35
- .matchHeader('user-agent', /couchbackup-cloudant\/\d+\.\d+\.\d+(?:-SNAPSHOT)? \(Node.js v\d+\.\d+\.\d+\)/)
36
- .head('/good')
37
- .reply(200);
38
-
39
- db.service.headDocument({ db: db.db, docId: 'good' }).then(response => {
40
- assert.ok(couch.isDone());
41
- done();
42
- }).catch(err => {
43
- done(err);
44
- });
45
- });
46
- });
47
-
48
- describe('#unit Check request response error callback', function() {
49
- it('should not callback with error for 200 response', function(done) {
50
- const couch = nock(url)
51
- .get('/good')
52
- .reply(200, { ok: true });
53
-
54
- db.service.getDocument({ db: db.db, docId: 'good' }).then(response => {
55
- assert.ok(response.result);
56
- assert.ok(couch.isDone());
57
- done();
58
- }).catch(err => {
59
- err = error.convertResponseError(err);
60
- done(err);
61
- });
62
- });
63
-
64
- it('should callback with error after 3 500 responses', function(done) {
65
- const couch = nock(url)
66
- .get('/bad')
67
- .times(3)
68
- .reply(500, function(uri, requestBody) {
69
- this.req.response.statusMessage = 'Internal Server Error';
70
- return { error: 'foo', reason: 'bar' };
71
- });
72
-
73
- db.service.getDocument({ db: db.db, docId: 'bad' }).then(response => {
74
- done(new Error('Successful response when error expected.'));
75
- }).catch(err => {
76
- err = error.convertResponseError(err);
77
- assert.strictEqual(err.name, 'HTTPFatalError');
78
- assert.strictEqual(err.message, `500 Internal Server Error: get ${url}/bad - Error: foo, Reason: bar`);
79
- assert.ok(couch.isDone());
80
- done();
81
- }).catch(err => {
82
- // Handle assertion errors
83
- done(err);
84
- });
85
- }).timeout(longTestTimeout);
86
-
87
- it('should callback with error after 3 POST 503 responses', function(done) {
88
- const couch = nock(url)
89
- .post('/_bulk_get')
90
- .query(true)
91
- .times(3)
92
- .reply(503, function(uri, requestBody) {
93
- this.req.response.statusMessage = 'Service Unavailable';
94
- return { error: 'service_unavailable', reason: 'Service unavailable' };
95
- });
96
-
97
- db.service.postBulkGet({ db: db.db, revs: true, docs: [] }).then(response => {
98
- done(new Error('Successful response when error expected.'));
99
- }).catch(err => {
100
- err = error.convertResponseError(err);
101
- assert.strictEqual(err.name, 'HTTPFatalError');
102
- assert.strictEqual(err.message, `503 Service Unavailable: post ${url}/_bulk_get - Error: service_unavailable, Reason: Service unavailable`);
103
- assert.ok(couch.isDone());
104
- done();
105
- }).catch(err => {
106
- // Handle assertion errors
107
- done(err);
108
- });
109
- }).timeout(longTestTimeout);
110
-
111
- it('should callback with error after 3 429 responses', function(done) {
112
- const couch = nock(url)
113
- .get('/bad')
114
- .times(3)
115
- .reply(429, function(uri, requestBody) {
116
- this.req.response.statusMessage = 'Too Many Requests';
117
- return { error: 'foo', reason: 'bar' };
118
- });
119
-
120
- db.service.getDocument({ db: db.db, docId: 'bad' }).then(response => {
121
- done(new Error('Successful response when error expected.'));
122
- }).catch(err => {
123
- err = error.convertResponseError(err);
124
- assert.strictEqual(err.name, 'HTTPFatalError');
125
- assert.strictEqual(err.message, `429 Too Many Requests: get ${url}/bad - Error: foo, Reason: bar`);
126
- assert.ok(couch.isDone());
127
- done();
128
- }).catch(err => {
129
- // Handle assertion errors
130
- done(err);
131
- });
132
- }).timeout(longTestTimeout);
133
-
134
- it('should callback with fatal error for 404 response', function(done) {
135
- const couch = nock(url)
136
- .get('/bad')
137
- .reply(404, function(uri, requestBody) {
138
- this.req.response.statusMessage = 'Not Found';
139
- return { error: 'foo', reason: 'bar' };
140
- });
141
-
142
- db.service.getDocument({ db: db.db, docId: 'bad' }).then(response => {
143
- done(new Error('Successful response when error expected.'));
144
- }).catch(err => {
145
- err = error.convertResponseError(err);
146
- assert.strictEqual(err.name, 'HTTPFatalError');
147
- assert.strictEqual(err.message, `404 Not Found: get ${url}/bad - Error: foo, Reason: bar`);
148
- assert.ok(couch.isDone());
149
- done();
150
- }).catch(err => {
151
- // Handle assertion errors
152
- done(err);
153
- });
154
- });
155
-
156
- it('should callback with same error for no status code error response', function(done) {
157
- const couch = nock(url)
158
- .get('/bad')
159
- .times(3)
160
- .replyWithError('testing badness');
161
-
162
- db.service.getDocument({ db: db.db, docId: 'bad' }).then(response => {
163
- done(new Error('Successful response when error expected.'));
164
- }).catch(err => {
165
- const err2 = error.convertResponseError(err);
166
- assert.strictEqual(err, err2);
167
- assert.ok(couch.isDone());
168
- done();
169
- }).catch(err => {
170
- // Handle assertion errors
171
- done(err);
172
- });
173
- }).timeout(longTestTimeout);
174
-
175
- it('should retry request if HTTP request gets timed out', function(done) {
176
- const couch = nock(url)
177
- .post('/_bulk_get')
178
- .query(true)
179
- .delay(1000)
180
- .reply(200, { results: { docs: [{ id: '1', ok: { _id: '1' } }] } })
181
- .post('/_bulk_get')
182
- .query(true)
183
- .reply(200, { results: { docs: [{ id: '1', ok: { _id: '1' } }, { id: '2', ok: { _id: '2' } }] } });
184
-
185
- timeoutDb.service.postBulkGet({ db: db.db, revs: true, docs: [] }).then(response => {
186
- assert.ok(response);
187
- assert.ok(response.result);
188
- assert.ok(response.result.results);
189
- assert.ok(response.result.results.docs);
190
- assert.strictEqual(response.result.results.docs.length, 2);
191
- assert.ok(couch.isDone());
192
- done();
193
- }).catch(err => {
194
- done(err);
195
- });
196
- });
197
-
198
- it('should callback with error code ESOCKETTIMEDOUT if 3 HTTP requests gets timed out', function(done) {
199
- // Increase the timeout for this test to allow for the delays
200
- this.timeout(3000);
201
- const couch = nock(url)
202
- .post('/_bulk_get')
203
- .query(true)
204
- .delay(1000)
205
- .times(3)
206
- .reply(200, { ok: true });
207
-
208
- timeoutDb.service.postBulkGet({ db: db.db, revs: true, docs: [] }).then(response => {
209
- done(new Error('Successful response when error expected.'));
210
- }).catch(err => {
211
- err = error.convertResponseError(err);
212
- // Note axios returns ECONNABORTED rather than ESOCKETTIMEDOUT
213
- // See https://github.com/axios/axios/issues/2710 via https://github.com/axios/axios/issues/1543`
214
- assert.strictEqual(err.statusText, 'ECONNABORTED');
215
- assert.strictEqual(err.message, `timeout of 500ms exceeded: post ${url}/_bulk_get ECONNABORTED`);
216
- assert.ok(couch.isDone());
217
- done();
218
- }).catch(err => {
219
- // Handle assertion errors
220
- done(err);
221
- });
222
- });
223
- describe('#unit Check credentials', function() {
224
- it('should properly decode username and password', function(done) {
225
- const username = 'user%123';
226
- const password = 'colon:at@321';
227
- const url = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@localhost:7777/testdb`;
228
- const sessionUrl = 'http://localhost:7777';
229
- const couch = nock(sessionUrl)
230
- .post('/_session', { username: username, password: password })
231
- .reply(200, { ok: true }, { 'Set-Cookie': 'AuthSession=ABC123DEF4356;' })
232
- .get('/')
233
- .reply(200);
234
- const db = request.client(url, { parallelism: 1 });
235
- db.service.getServerInformation().then(response => {
236
- assert.ok(response);
237
- assert.ok(couch.isDone());
238
- done();
239
- }).catch(err => {
19
+ const fs = require('fs');
20
+ const u = require('./citestutils.js');
21
+
22
+ describe('Write error tests', function() {
23
+ it('calls callback with error set when stream is not writeable', function(done) {
24
+ u.setTimeout(this, 10);
25
+ const dirname = fs.mkdtempSync('test_backup_');
26
+ // make temp dir read only
27
+ fs.chmodSync(dirname, 0o444);
28
+ const filename = dirname + '/test.backup';
29
+ const backupStream = fs.createWriteStream(filename, { flags: 'w' });
30
+ const params = { useApi: true };
31
+ // try to do backup and check err was set in callback
32
+ u.testBackup(params, 'animaldb', backupStream, function(resultErr) {
33
+ let err = null;
34
+ try {
35
+ // cleanup temp dir
36
+ fs.rmdirSync(dirname);
37
+ // error should have been set
38
+ assert.ok(resultErr);
39
+ assert.strictEqual(resultErr.code, 'EACCES');
40
+ } catch (thrownErr) {
41
+ err = thrownErr;
42
+ } finally {
240
43
  done(err);
241
- });
44
+ }
242
45
  });
243
46
  });
244
47
  });
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2021 IBM Corp. All rights reserved.
1
+ // Copyright © 2017 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,131 +12,120 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
- /* global describe it before after */
15
+ /* global describe it */
16
16
  'use strict';
17
17
 
18
- const assert = require('assert');
19
- const applyEnvVars = require('../includes/config.js').applyEnvironmentVariables;
20
-
21
- describe('#unit Configuration', function() {
22
- let processEnvCopy;
23
-
24
- before('Save env', function() {
25
- // Copy env so we can reset it after the tests
26
- processEnvCopy = JSON.parse(JSON.stringify(process.env));
27
- });
28
-
29
- after('Reset env', function() {
30
- process.env = processEnvCopy;
31
- });
32
-
33
- it('respects the COUCH_URL env variable', function(done) {
34
- process.env.COUCH_URL = 'http://user:pass@myurl.com';
35
- const config = {};
36
- applyEnvVars(config);
37
- assert.strictEqual(typeof config.url, 'string');
38
- assert.strictEqual(config.url, process.env.COUCH_URL);
39
- done();
40
- });
41
-
42
- it('respects the COUCH_DATABASE env variable', function(done) {
43
- process.env.COUCH_DATABASE = 'mydb';
44
- const config = {};
45
- applyEnvVars(config);
46
- assert.strictEqual(typeof config.db, 'string');
47
- assert.strictEqual(config.db, process.env.COUCH_DATABASE);
48
- done();
49
- });
50
-
51
- it('respects the COUCH_BUFFER_SIZE env variable', function(done) {
52
- process.env.COUCH_BUFFER_SIZE = '1000';
53
- const config = {};
54
- applyEnvVars(config);
55
- assert.strictEqual(typeof config.bufferSize, 'number');
56
- assert.strictEqual(config.bufferSize, 1000);
57
- done();
58
- });
59
-
60
- it('respects the COUCH_PARALLELISM env variable', function(done) {
61
- process.env.COUCH_PARALLELISM = '20';
62
- const config = {};
63
- applyEnvVars(config);
64
- assert.strictEqual(typeof config.parallelism, 'number');
65
- assert.strictEqual(config.parallelism, 20);
66
- done();
67
- });
68
-
69
- it('respects the COUCH_REQUEST_TIMEOUT env variable', function(done) {
70
- process.env.COUCH_REQUEST_TIMEOUT = '10000';
71
- const config = {};
72
- applyEnvVars(config);
73
- assert.strictEqual(typeof config.requestTimeout, 'number');
74
- assert.strictEqual(config.requestTimeout, 10000);
75
- done();
76
- });
77
-
78
- it('respects the CLOUDANT_IAM_API_KEY env variable', function(done) {
79
- const key = 'ABC123-ZYX987_cba789-xyz321';
80
- process.env.CLOUDANT_IAM_API_KEY = key;
81
- const config = {};
82
- applyEnvVars(config);
83
- assert.strictEqual(typeof config.iamApiKey, 'string');
84
- assert.strictEqual(config.iamApiKey, key);
85
- done();
86
- });
87
-
88
- it('respects the CLOUDANT_IAM_TOKEN_URL env variable', function(done) {
89
- const u = 'https://testhost.example:1234/identity/token';
90
- process.env.CLOUDANT_IAM_TOKEN_URL = u;
91
- const config = {};
92
- applyEnvVars(config);
93
- assert.strictEqual(typeof config.iamTokenUrl, 'string');
94
- assert.strictEqual(config.iamTokenUrl, u);
95
- done();
96
- });
97
-
98
- it('respects the COUCH_LOG env variable', function(done) {
99
- process.env.COUCH_LOG = 'my.log';
100
- const config = {};
101
- applyEnvVars(config);
102
- assert.strictEqual(typeof config.log, 'string');
103
- assert.strictEqual(config.log, process.env.COUCH_LOG);
104
- done();
105
- });
106
-
107
- it('respects the COUCH_RESUME env variable', function(done) {
108
- process.env.COUCH_RESUME = 'true';
109
- const config = {};
110
- applyEnvVars(config);
111
- assert.strictEqual(typeof config.resume, 'boolean');
112
- assert.strictEqual(config.resume, true);
113
- done();
114
- });
115
-
116
- it('respects the COUCH_OUTPUT env variable', function(done) {
117
- process.env.COUCH_OUTPUT = 'myfile.txt';
118
- const config = {};
119
- applyEnvVars(config);
120
- assert.strictEqual(typeof config.output, 'string');
121
- assert.strictEqual(config.output, process.env.COUCH_OUTPUT);
122
- done();
123
- });
124
-
125
- it('respects the COUCH_MODE env variable', function(done) {
126
- process.env.COUCH_MODE = 'shallow';
127
- const config = {};
128
- applyEnvVars(config);
129
- assert.strictEqual(typeof config.mode, 'string');
130
- assert.strictEqual(config.mode, 'shallow');
131
- done();
132
- });
133
-
134
- it('respects the COUCH_QUIET env variable', function(done) {
135
- process.env.COUCH_QUIET = 'true';
136
- const config = {};
137
- applyEnvVars(config);
138
- assert.strictEqual(typeof config.quiet, 'boolean');
139
- assert.strictEqual(config.quiet, true);
140
- done();
18
+ const fs = require('fs');
19
+ const u = require('./citestutils.js');
20
+
21
+ [{ useApi: true }, { useApi: false }].forEach(function(params) {
22
+ describe(u.scenario('Basic backup and restore', params), function() {
23
+ it('should backup animaldb to a file correctly', function(done) {
24
+ // Allow up to 40 s to backup and compare (it should be much faster)!
25
+ u.setTimeout(this, 40);
26
+ const actualBackup = `./${this.fileName}`;
27
+ // Create a file and backup to it
28
+ const output = fs.createWriteStream(actualBackup);
29
+ output.on('open', function() {
30
+ u.testBackup(params, 'animaldb', output, function(err) {
31
+ if (err) {
32
+ done(err);
33
+ } else {
34
+ u.readSortAndDeepEqual(actualBackup, './test/fixtures/animaldb_expected.json', done);
35
+ }
36
+ });
37
+ });
38
+ });
39
+
40
+ it('should restore animaldb to a database correctly', function(done) {
41
+ // Allow up to 60 s to restore and compare (again it should be faster)!
42
+ u.setTimeout(this, 60);
43
+ const input = fs.createReadStream('./test/fixtures/animaldb_expected.json');
44
+ const dbName = this.dbName;
45
+ input.on('open', function() {
46
+ u.testRestore(params, input, dbName, function(err) {
47
+ if (err) {
48
+ done(err);
49
+ } else {
50
+ u.dbCompare('animaldb', dbName, done);
51
+ }
52
+ });
53
+ });
54
+ });
55
+
56
+ it('should execute a shallow mode backup successfully', function(done) {
57
+ // Allow 30 s
58
+ u.setTimeout(this, 30);
59
+ const actualBackup = `./${this.fileName}`;
60
+ const output = fs.createWriteStream(actualBackup);
61
+ // Add the shallow mode option
62
+ const p = u.p(params, { opts: { mode: 'shallow' } });
63
+ output.on('open', function() {
64
+ u.testBackup(p, 'animaldb', output, function(err) {
65
+ if (err) {
66
+ done(err);
67
+ } else {
68
+ u.readSortAndDeepEqual(actualBackup, './test/fixtures/animaldb_expected_shallow.json', done);
69
+ }
70
+ });
71
+ });
72
+ });
73
+
74
+ describe(u.scenario('Buffer size tests', params), function() {
75
+ it('should backup/restore animaldb with the same buffer size', function(done) {
76
+ // Allow up to 60 s for backup and restore of animaldb
77
+ u.setTimeout(this, 60);
78
+ const actualBackup = `./${this.fileName}`;
79
+ const logFile = `./${this.fileName}` + '.log';
80
+ const p = u.p(params, { opts: { log: logFile, bufferSize: 1 } });
81
+ u.testBackupAndRestoreViaFile(p, 'animaldb', actualBackup, this.dbName, done);
82
+ });
83
+ it('should backup/restore animaldb with backup buffer > restore buffer', function(done) {
84
+ // Allow up to 60 s for backup and restore of animaldb
85
+ u.setTimeout(this, 60);
86
+ const actualBackup = `./${this.fileName}`;
87
+ const logFile = `./${this.fileName}` + '.log';
88
+ const dbName = this.dbName;
89
+ const p = u.p(params, { opts: { log: logFile, bufferSize: 2 } }); // backup
90
+ const q = u.p(params, { opts: { bufferSize: 1 } }); // restore
91
+ u.testBackupToFile(p, 'animaldb', actualBackup, function(err) {
92
+ if (err) {
93
+ done(err);
94
+ } else {
95
+ // restore
96
+ u.testRestoreFromFile(q, actualBackup, dbName, function(err) {
97
+ if (!err) {
98
+ u.dbCompare('animaldb', dbName, done);
99
+ } else {
100
+ done(err);
101
+ }
102
+ });
103
+ }
104
+ });
105
+ });
106
+ it('should backup/restore animaldb with backup buffer < restore buffer', function(done) {
107
+ // Allow up to 60 s for backup and restore of animaldb
108
+ u.setTimeout(this, 60);
109
+ const actualBackup = `./${this.fileName}`;
110
+ const logFile = `./${this.fileName}` + '.log';
111
+ const dbName = this.dbName;
112
+ const p = u.p(params, { opts: { log: logFile, bufferSize: 1 } }); // backup
113
+ const q = u.p(params, { opts: { bufferSize: 2 } }); // restore
114
+ u.testBackupToFile(p, 'animaldb', actualBackup, function(err) {
115
+ if (err) {
116
+ done(err);
117
+ } else {
118
+ // restore
119
+ u.testRestoreFromFile(q, actualBackup, dbName, function(err) {
120
+ if (!err) {
121
+ u.dbCompare('animaldb', dbName, done);
122
+ } else {
123
+ done(err);
124
+ }
125
+ });
126
+ }
127
+ });
128
+ });
129
+ });
141
130
  });
142
131
  });
@@ -1,4 +1,4 @@
1
- // Copyright © 2018, 2021 IBM Corp. All rights reserved.
1
+ // Copyright © 2017, 2018 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.
@@ -16,77 +16,53 @@
16
16
  'use strict';
17
17
 
18
18
  const fs = require('fs');
19
- const readline = require('readline');
20
19
  const u = require('./citestutils.js');
21
- const uuid = require('uuid').v4;
22
20
 
23
- const params = { useApi: true };
21
+ [{ useApi: true }, { useApi: false }].forEach(function(params) {
22
+ describe(u.scenario('Compression tests', params), function() {
23
+ const p = u.p(params, { compression: true });
24
24
 
25
- describe(u.scenario('Concurrent database backups', params), function() {
26
- it('should run concurrent API database backups correctly #slower', function(done) {
27
- // Allow up to 900 s to backup and compare (it should be much faster)!
28
- u.setTimeout(this, 900);
29
-
30
- let doneCount = 0;
31
- let doneErr;
32
- const finished = function(err) {
33
- doneCount++;
34
- if (doneCount === 2) {
35
- done(doneErr || err);
36
- }
37
- doneErr = err;
38
- };
39
-
40
- const checkForEmptyBatches = function(fileName, cb) {
41
- let foundEmptyBatch = false;
42
-
43
- const rd = readline.createInterface({
44
- input: fs.createReadStream(fileName),
45
- output: fs.createWriteStream('/dev/null'),
46
- terminal: false
25
+ it('should backup animaldb to a compressed file', function(done) {
26
+ // Allow up to 60 s for backup of animaldb
27
+ u.setTimeout(this, 60);
28
+ const compressedBackup = `./${this.fileName}`;
29
+ const output = fs.createWriteStream(compressedBackup);
30
+ output.on('open', function() {
31
+ u.testBackup(p, 'animaldb', output, function(err) {
32
+ if (err) {
33
+ done(err);
34
+ } else {
35
+ u.assertGzipFile(compressedBackup, done);
36
+ }
37
+ });
47
38
  });
39
+ });
48
40
 
49
- rd.on('line', function(line) {
50
- if (JSON.parse(line).length === 0) {
51
- // Note: Empty batch arrays indicate that the running backup is
52
- // incorrectly sharing a log file with another ongoing backup job.
53
- foundEmptyBatch = true;
54
- }
55
- });
56
-
57
- rd.on('close', function() {
58
- if (foundEmptyBatch) {
59
- cb(new Error(`Log file '${fileName}' contains empty batches`));
60
- } else {
61
- cb();
62
- }
63
- });
64
- };
65
-
66
- // [1] Run 'largedb2g' database backup
67
- const actualBackup1 = `./${uuid()}`;
68
- const output1 = fs.createWriteStream(actualBackup1);
69
- output1.on('open', function() {
70
- u.testBackup(params, 'largedb2g', output1, function(err) {
41
+ it('should backup and restore animaldb via a compressed file', function(done) {
42
+ // Allow up to 60 s for backup and restore of animaldb
43
+ u.setTimeout(this, 60);
44
+ const compressedBackup = `./${this.fileName}`;
45
+ u.testBackupAndRestoreViaFile(p, 'animaldb', compressedBackup, this.dbName, function(err) {
71
46
  if (err) {
72
- finished(err);
47
+ done(err);
73
48
  } else {
74
- checkForEmptyBatches(actualBackup1, finished);
49
+ u.assertGzipFile(compressedBackup, done);
75
50
  }
76
51
  });
77
52
  });
78
53
 
79
- // [2] Run 'largedb1g' database backup
80
- const actualBackup2 = `./${uuid()}`;
81
- const output2 = fs.createWriteStream(actualBackup2);
82
- output2.on('open', function() {
83
- u.testBackup(params, 'largedb1g', output2, function(err) {
84
- if (err) {
85
- finished(err);
86
- } else {
87
- checkForEmptyBatches(actualBackup2, finished);
88
- }
89
- });
54
+ it('should backup and restore animaldb via a compressed stream', function(done) {
55
+ // Allow up to 60 s for backup and restore of animaldb
56
+ u.setTimeout(this, 60);
57
+ u.testDirectBackupAndRestore(p, 'animaldb', this.dbName, done);
58
+ });
59
+
60
+ it('should backup and restore largedb2g via a compressed file #slower', function(done) {
61
+ // Takes ~ 25 min using CLI, but sometimes over an hour with API
62
+ u.setTimeout(this, 180 * 60);
63
+ const compressedBackup = `./${this.fileName}`;
64
+ params.compression = true;
65
+ u.testBackupAndRestoreViaFile(p, 'largedb2g', compressedBackup, this.dbName, done);
90
66
  });
91
67
  });
92
68
  });