@cloudant/couchbackup 2.9.8 → 2.9.9-SNAPSHOT.96

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 (438) 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/changesets-10.pb +2 -0
  4. package/.scannerwork/scanner-report/changesets-11.pb +1 -0
  5. package/.scannerwork/scanner-report/changesets-12.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-13.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-14.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-15.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-16.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-17.pb +1 -0
  11. package/.scannerwork/scanner-report/changesets-18.pb +1 -0
  12. package/.scannerwork/scanner-report/changesets-2.pb +1 -0
  13. package/.scannerwork/scanner-report/changesets-3.pb +1 -0
  14. package/.scannerwork/scanner-report/changesets-38.pb +1 -0
  15. package/.scannerwork/scanner-report/changesets-39.pb +1 -0
  16. package/.scannerwork/scanner-report/changesets-55.pb +1 -0
  17. package/.scannerwork/scanner-report/changesets-56.pb +1 -0
  18. package/.scannerwork/scanner-report/changesets-59.pb +1 -0
  19. package/.scannerwork/scanner-report/changesets-60.pb +1 -0
  20. package/.scannerwork/scanner-report/changesets-61.pb +1 -0
  21. package/.scannerwork/scanner-report/changesets-62.pb +1 -0
  22. package/.scannerwork/scanner-report/changesets-63.pb +1 -0
  23. package/.scannerwork/scanner-report/changesets-64.pb +1 -0
  24. package/.scannerwork/scanner-report/changesets-8.pb +1 -0
  25. package/.scannerwork/scanner-report/changesets-9.pb +1 -0
  26. package/.scannerwork/scanner-report/component-1.pb +2 -1
  27. package/.scannerwork/scanner-report/component-10.pb +2 -0
  28. package/.scannerwork/scanner-report/component-11.pb +1 -0
  29. package/.scannerwork/scanner-report/component-12.pb +1 -0
  30. package/.scannerwork/scanner-report/component-13.pb +1 -0
  31. package/.scannerwork/scanner-report/component-14.pb +1 -0
  32. package/.scannerwork/scanner-report/component-15.pb +1 -0
  33. package/.scannerwork/scanner-report/component-16.pb +1 -0
  34. package/.scannerwork/scanner-report/component-17.pb +1 -0
  35. package/.scannerwork/scanner-report/component-18.pb +1 -0
  36. package/.scannerwork/scanner-report/component-2.pb +1 -0
  37. package/.scannerwork/scanner-report/component-23.pb +1 -1
  38. package/.scannerwork/scanner-report/component-24.pb +1 -1
  39. package/.scannerwork/scanner-report/component-28.pb +1 -1
  40. package/.scannerwork/scanner-report/component-29.pb +1 -1
  41. package/.scannerwork/scanner-report/component-3.pb +1 -0
  42. package/.scannerwork/scanner-report/component-30.pb +1 -1
  43. package/.scannerwork/scanner-report/component-31.pb +1 -1
  44. package/.scannerwork/scanner-report/component-32.pb +1 -1
  45. package/.scannerwork/scanner-report/component-33.pb +1 -1
  46. package/.scannerwork/scanner-report/component-34.pb +1 -1
  47. package/.scannerwork/scanner-report/component-35.pb +1 -1
  48. package/.scannerwork/scanner-report/component-36.pb +1 -1
  49. package/.scannerwork/scanner-report/component-37.pb +1 -1
  50. package/.scannerwork/scanner-report/component-38.pb +1 -1
  51. package/.scannerwork/scanner-report/component-39.pb +1 -0
  52. package/.scannerwork/scanner-report/component-5.pb +1 -1
  53. package/.scannerwork/scanner-report/component-51.pb +1 -1
  54. package/.scannerwork/scanner-report/component-52.pb +1 -1
  55. package/.scannerwork/scanner-report/component-53.pb +1 -1
  56. package/.scannerwork/scanner-report/component-54.pb +1 -1
  57. package/.scannerwork/scanner-report/component-55.pb +1 -1
  58. package/.scannerwork/scanner-report/component-56.pb +1 -0
  59. package/.scannerwork/scanner-report/component-57.pb +1 -1
  60. package/.scannerwork/scanner-report/component-58.pb +1 -1
  61. package/.scannerwork/scanner-report/component-59.pb +1 -1
  62. package/.scannerwork/scanner-report/component-6.pb +1 -1
  63. package/.scannerwork/scanner-report/component-60.pb +1 -0
  64. package/.scannerwork/scanner-report/component-61.pb +1 -1
  65. package/.scannerwork/scanner-report/component-62.pb +1 -0
  66. package/.scannerwork/scanner-report/component-63.pb +1 -0
  67. package/.scannerwork/scanner-report/component-64.pb +1 -0
  68. package/.scannerwork/scanner-report/component-65.pb +1 -1
  69. package/.scannerwork/scanner-report/component-69.pb +1 -1
  70. package/.scannerwork/scanner-report/component-7.pb +1 -1
  71. package/.scannerwork/scanner-report/component-70.pb +1 -0
  72. package/.scannerwork/scanner-report/component-8.pb +1 -0
  73. package/.scannerwork/scanner-report/component-9.pb +1 -0
  74. package/.scannerwork/scanner-report/coverages-11.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-13.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-16.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-18.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-2.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-23.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-24.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-30.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-31.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-32.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-33.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-34.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-35.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-36.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-37.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-38.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-5.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-51.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-53.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-54.pb +0 -0
  95. package/.scannerwork/scanner-report/coverages-55.pb +0 -0
  96. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  97. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  98. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  99. package/.scannerwork/scanner-report/coverages-6.pb +0 -0
  100. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  101. package/.scannerwork/scanner-report/coverages-7.pb +0 -0
  102. package/.scannerwork/scanner-report/duplications-23.pb +2 -0
  103. package/.scannerwork/scanner-report/duplications-24.pb +2 -0
  104. package/.scannerwork/scanner-report/duplications-32.pb +0 -2
  105. package/.scannerwork/scanner-report/duplications-33.pb +2 -0
  106. package/.scannerwork/scanner-report/duplications-36.pb +0 -2
  107. package/.scannerwork/scanner-report/duplications-5.pb +0 -3
  108. package/.scannerwork/scanner-report/duplications-52.pb +3 -0
  109. package/.scannerwork/scanner-report/duplications-53.pb +3 -0
  110. package/.scannerwork/scanner-report/duplications-57.pb +2 -0
  111. package/.scannerwork/scanner-report/duplications-6.pb +2 -0
  112. package/.scannerwork/scanner-report/duplications-60.pb +3 -0
  113. package/.scannerwork/scanner-report/duplications-62.pb +0 -0
  114. package/.scannerwork/scanner-report/duplications-63.pb +0 -0
  115. package/.scannerwork/scanner-report/duplications-64.pb +0 -0
  116. package/.scannerwork/scanner-report/duplications-8.pb +0 -0
  117. package/.scannerwork/scanner-report/duplications-9.pb +2 -0
  118. package/.scannerwork/scanner-report/measures-11.pb +0 -0
  119. package/.scannerwork/scanner-report/measures-13.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-16.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-18.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-2.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-23.pb +0 -0
  124. package/.scannerwork/scanner-report/measures-24.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-5.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-52.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-53.pb +0 -0
  142. package/.scannerwork/scanner-report/measures-54.pb +0 -0
  143. package/.scannerwork/scanner-report/measures-55.pb +0 -0
  144. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  145. package/.scannerwork/scanner-report/measures-58.pb +0 -0
  146. package/.scannerwork/scanner-report/measures-59.pb +0 -0
  147. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  148. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  149. package/.scannerwork/scanner-report/measures-62.pb +0 -0
  150. package/.scannerwork/scanner-report/measures-64.pb +0 -0
  151. package/.scannerwork/scanner-report/measures-65.pb +0 -0
  152. package/.scannerwork/scanner-report/measures-69.pb +0 -0
  153. package/.scannerwork/scanner-report/measures-7.pb +0 -0
  154. package/.scannerwork/scanner-report/measures-70.pb +0 -0
  155. package/.scannerwork/scanner-report/metadata.pb +0 -0
  156. package/.scannerwork/scanner-report/source-11.txt +111 -0
  157. package/.scannerwork/scanner-report/source-13.txt +164 -0
  158. package/.scannerwork/scanner-report/source-16.txt +80 -0
  159. package/.scannerwork/scanner-report/source-18.txt +46 -0
  160. package/.scannerwork/scanner-report/source-2.txt +114 -0
  161. package/.scannerwork/scanner-report/source-23.txt +162 -64
  162. package/.scannerwork/scanner-report/source-24.txt +133 -583
  163. package/.scannerwork/scanner-report/source-28.txt +509 -142
  164. package/.scannerwork/scanner-report/source-29.txt +509 -366
  165. package/.scannerwork/scanner-report/source-3.txt +418 -0
  166. package/.scannerwork/scanner-report/source-30.txt +39 -19
  167. package/.scannerwork/scanner-report/source-31.txt +57 -80
  168. package/.scannerwork/scanner-report/source-32.txt +16 -127
  169. package/.scannerwork/scanner-report/source-33.txt +189 -120
  170. package/.scannerwork/scanner-report/source-34.txt +596 -39
  171. package/.scannerwork/scanner-report/source-35.txt +17 -129
  172. package/.scannerwork/scanner-report/source-36.txt +43 -200
  173. package/.scannerwork/scanner-report/source-37.txt +15 -93
  174. package/.scannerwork/scanner-report/source-38.txt +92 -167
  175. package/.scannerwork/scanner-report/source-39.txt +366 -0
  176. package/.scannerwork/scanner-report/source-5.txt +89 -229
  177. package/.scannerwork/scanner-report/source-51.txt +135 -59
  178. package/.scannerwork/scanner-report/source-52.txt +228 -95
  179. package/.scannerwork/scanner-report/source-53.txt +104 -31
  180. package/.scannerwork/scanner-report/source-54.txt +130 -147
  181. package/.scannerwork/scanner-report/source-55.txt +100 -509
  182. package/.scannerwork/scanner-report/source-57.txt +120 -52
  183. package/.scannerwork/scanner-report/source-58.txt +31 -40
  184. package/.scannerwork/scanner-report/source-59.txt +36 -509
  185. package/.scannerwork/scanner-report/source-6.txt +71 -47
  186. package/.scannerwork/scanner-report/source-61.txt +293 -509
  187. package/.scannerwork/scanner-report/source-62.txt +142 -0
  188. package/.scannerwork/scanner-report/source-64.txt +68 -0
  189. package/.scannerwork/scanner-report/source-65.txt +509 -190
  190. package/.scannerwork/scanner-report/source-69.txt +509 -418
  191. package/.scannerwork/scanner-report/source-7.txt +38 -31
  192. package/.scannerwork/scanner-report/source-70.txt +167 -0
  193. package/.scannerwork/scanner-report/symbols-11.pb +59 -0
  194. package/.scannerwork/scanner-report/symbols-13.pb +126 -0
  195. package/.scannerwork/scanner-report/symbols-16.pb +46 -0
  196. package/.scannerwork/scanner-report/symbols-18.pb +20 -0
  197. package/.scannerwork/scanner-report/symbols-2.pb +28 -0
  198. package/.scannerwork/scanner-report/symbols-23.pb +180 -60
  199. package/.scannerwork/scanner-report/symbols-24.pb +143 -1244
  200. package/.scannerwork/scanner-report/symbols-30.pb +19 -14
  201. package/.scannerwork/scanner-report/symbols-31.pb +29 -68
  202. package/.scannerwork/scanner-report/symbols-32.pb +10 -102
  203. package/.scannerwork/scanner-report/symbols-33.pb +410 -104
  204. package/.scannerwork/scanner-report/symbols-34.pb +1251 -33
  205. package/.scannerwork/scanner-report/symbols-35.pb +17 -85
  206. package/.scannerwork/scanner-report/symbols-36.pb +35 -417
  207. package/.scannerwork/scanner-report/symbols-37.pb +11 -28
  208. package/.scannerwork/scanner-report/symbols-38.pb +60 -0
  209. package/.scannerwork/scanner-report/symbols-5.pb +41 -393
  210. package/.scannerwork/scanner-report/symbols-51.pb +110 -44
  211. package/.scannerwork/scanner-report/symbols-52.pb +393 -58
  212. package/.scannerwork/scanner-report/symbols-53.pb +76 -19
  213. package/.scannerwork/scanner-report/symbols-54.pb +80 -121
  214. package/.scannerwork/scanner-report/symbols-55.pb +69 -0
  215. package/.scannerwork/scanner-report/symbols-57.pb +102 -30
  216. package/.scannerwork/scanner-report/symbols-58.pb +27 -19
  217. package/.scannerwork/scanner-report/symbols-59.pb +14 -0
  218. package/.scannerwork/scanner-report/symbols-6.pb +43 -44
  219. package/.scannerwork/scanner-report/symbols-64.pb +45 -0
  220. package/.scannerwork/scanner-report/symbols-7.pb +15 -27
  221. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +133 -0
  222. package/.scannerwork/scanner-report/syntax-highlightings-13.pb +213 -0
  223. package/.scannerwork/scanner-report/syntax-highlightings-16.pb +95 -0
  224. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +64 -0
  225. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +138 -0
  226. package/.scannerwork/scanner-report/syntax-highlightings-23.pb +186 -71
  227. package/.scannerwork/scanner-report/syntax-highlightings-24.pb +142 -815
  228. package/.scannerwork/scanner-report/syntax-highlightings-28.pb +3736 -123
  229. package/.scannerwork/scanner-report/syntax-highlightings-29.pb +3504 -385
  230. package/.scannerwork/scanner-report/syntax-highlightings-3.pb +648 -0
  231. package/.scannerwork/scanner-report/syntax-highlightings-30.pb +63 -35
  232. package/.scannerwork/scanner-report/syntax-highlightings-31.pb +73 -75
  233. package/.scannerwork/scanner-report/syntax-highlightings-32.pb +14 -191
  234. package/.scannerwork/scanner-report/syntax-highlightings-33.pb +270 -162
  235. package/.scannerwork/scanner-report/syntax-highlightings-34.pb +849 -57
  236. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +27 -155
  237. package/.scannerwork/scanner-report/syntax-highlightings-36.pb +58 -294
  238. package/.scannerwork/scanner-report/syntax-highlightings-37.pb +24 -103
  239. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +99 -937
  240. package/.scannerwork/scanner-report/syntax-highlightings-39.pb +630 -0
  241. package/.scannerwork/scanner-report/syntax-highlightings-5.pb +85 -298
  242. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +190 -62
  243. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +292 -96
  244. package/.scannerwork/scanner-report/syntax-highlightings-53.pb +127 -33
  245. package/.scannerwork/scanner-report/syntax-highlightings-54.pb +151 -173
  246. package/.scannerwork/scanner-report/syntax-highlightings-55.pb +94 -3735
  247. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +200 -76
  248. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +45 -59
  249. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +43 -3736
  250. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +56 -76
  251. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +398 -3487
  252. package/.scannerwork/scanner-report/syntax-highlightings-62.pb +134 -0
  253. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +110 -0
  254. package/.scannerwork/scanner-report/syntax-highlightings-65.pb +3725 -202
  255. package/.scannerwork/scanner-report/syntax-highlightings-69.pb +3544 -445
  256. package/.scannerwork/scanner-report/syntax-highlightings-7.pb +24 -38
  257. package/.scannerwork/scanner-report/syntax-highlightings-70.pb +949 -0
  258. package/package.json +1 -1
  259. package/test-14-results.xml +158 -158
  260. package/test-16-results.xml +139 -139
  261. package/test-18-results.xml +155 -155
  262. package/test-19-results.xml +151 -151
  263. package/test-iam-18-results.xml +50 -50
  264. package/.scannerwork/scanner-report/changesets-19.pb +0 -1
  265. package/.scannerwork/scanner-report/changesets-20.pb +0 -1
  266. package/.scannerwork/scanner-report/changesets-21.pb +0 -1
  267. package/.scannerwork/scanner-report/changesets-22.pb +0 -1
  268. package/.scannerwork/scanner-report/changesets-25.pb +0 -1
  269. package/.scannerwork/scanner-report/changesets-26.pb +0 -1
  270. package/.scannerwork/scanner-report/changesets-27.pb +0 -1
  271. package/.scannerwork/scanner-report/changesets-28.pb +0 -1
  272. package/.scannerwork/scanner-report/changesets-29.pb +0 -1
  273. package/.scannerwork/scanner-report/changesets-4.pb +0 -1
  274. package/.scannerwork/scanner-report/changesets-41.pb +0 -1
  275. package/.scannerwork/scanner-report/changesets-42.pb +0 -1
  276. package/.scannerwork/scanner-report/changesets-43.pb +0 -1
  277. package/.scannerwork/scanner-report/changesets-44.pb +0 -1
  278. package/.scannerwork/scanner-report/changesets-45.pb +0 -1
  279. package/.scannerwork/scanner-report/changesets-46.pb +0 -1
  280. package/.scannerwork/scanner-report/changesets-47.pb +0 -1
  281. package/.scannerwork/scanner-report/changesets-48.pb +0 -1
  282. package/.scannerwork/scanner-report/changesets-49.pb +0 -1
  283. package/.scannerwork/scanner-report/changesets-50.pb +0 -1
  284. package/.scannerwork/scanner-report/changesets-65.pb +0 -1
  285. package/.scannerwork/scanner-report/changesets-66.pb +0 -1
  286. package/.scannerwork/scanner-report/changesets-69.pb +0 -1
  287. package/.scannerwork/scanner-report/component-19.pb +0 -1
  288. package/.scannerwork/scanner-report/component-20.pb +0 -1
  289. package/.scannerwork/scanner-report/component-21.pb +0 -1
  290. package/.scannerwork/scanner-report/component-22.pb +0 -1
  291. package/.scannerwork/scanner-report/component-25.pb +0 -1
  292. package/.scannerwork/scanner-report/component-26.pb +0 -1
  293. package/.scannerwork/scanner-report/component-27.pb +0 -1
  294. package/.scannerwork/scanner-report/component-4.pb +0 -1
  295. package/.scannerwork/scanner-report/component-40.pb +0 -1
  296. package/.scannerwork/scanner-report/component-41.pb +0 -1
  297. package/.scannerwork/scanner-report/component-42.pb +0 -1
  298. package/.scannerwork/scanner-report/component-43.pb +0 -1
  299. package/.scannerwork/scanner-report/component-44.pb +0 -1
  300. package/.scannerwork/scanner-report/component-45.pb +0 -1
  301. package/.scannerwork/scanner-report/component-46.pb +0 -1
  302. package/.scannerwork/scanner-report/component-47.pb +0 -1
  303. package/.scannerwork/scanner-report/component-48.pb +0 -1
  304. package/.scannerwork/scanner-report/component-49.pb +0 -1
  305. package/.scannerwork/scanner-report/component-50.pb +0 -1
  306. package/.scannerwork/scanner-report/component-66.pb +0 -1
  307. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  308. package/.scannerwork/scanner-report/coverages-22.pb +0 -0
  309. package/.scannerwork/scanner-report/coverages-27.pb +0 -0
  310. package/.scannerwork/scanner-report/coverages-4.pb +0 -0
  311. package/.scannerwork/scanner-report/coverages-42.pb +0 -0
  312. package/.scannerwork/scanner-report/coverages-43.pb +0 -0
  313. package/.scannerwork/scanner-report/coverages-46.pb +0 -0
  314. package/.scannerwork/scanner-report/coverages-65.pb +0 -0
  315. package/.scannerwork/scanner-report/coverages-66.pb +0 -0
  316. package/.scannerwork/scanner-report/duplications-19.pb +0 -3
  317. package/.scannerwork/scanner-report/duplications-22.pb +0 -3
  318. package/.scannerwork/scanner-report/duplications-43.pb +0 -2
  319. package/.scannerwork/scanner-report/duplications-45.pb +0 -2
  320. package/.scannerwork/scanner-report/duplications-65.pb +0 -2
  321. package/.scannerwork/scanner-report/duplications-66.pb +0 -2
  322. package/.scannerwork/scanner-report/measures-20.pb +0 -0
  323. package/.scannerwork/scanner-report/measures-21.pb +0 -15
  324. package/.scannerwork/scanner-report/measures-22.pb +0 -0
  325. package/.scannerwork/scanner-report/measures-27.pb +0 -0
  326. package/.scannerwork/scanner-report/measures-4.pb +0 -0
  327. package/.scannerwork/scanner-report/measures-40.pb +0 -0
  328. package/.scannerwork/scanner-report/measures-42.pb +0 -15
  329. package/.scannerwork/scanner-report/measures-43.pb +0 -0
  330. package/.scannerwork/scanner-report/measures-46.pb +0 -0
  331. package/.scannerwork/scanner-report/measures-66.pb +0 -0
  332. package/.scannerwork/scanner-report/source-20.txt +0 -35
  333. package/.scannerwork/scanner-report/source-21.txt +0 -293
  334. package/.scannerwork/scanner-report/source-22.txt +0 -119
  335. package/.scannerwork/scanner-report/source-27.txt +0 -36
  336. package/.scannerwork/scanner-report/source-4.txt +0 -34
  337. package/.scannerwork/scanner-report/source-40.txt +0 -509
  338. package/.scannerwork/scanner-report/source-42.txt +0 -104
  339. package/.scannerwork/scanner-report/source-43.txt +0 -92
  340. package/.scannerwork/scanner-report/source-46.txt +0 -54
  341. package/.scannerwork/scanner-report/source-66.txt +0 -175
  342. package/.scannerwork/scanner-report/symbols-20.pb +0 -17
  343. package/.scannerwork/scanner-report/symbols-22.pb +0 -77
  344. package/.scannerwork/scanner-report/symbols-27.pb +0 -11
  345. package/.scannerwork/scanner-report/symbols-4.pb +0 -10
  346. package/.scannerwork/scanner-report/symbols-42.pb +0 -42
  347. package/.scannerwork/scanner-report/symbols-43.pb +0 -44
  348. package/.scannerwork/scanner-report/symbols-46.pb +0 -15
  349. package/.scannerwork/scanner-report/symbols-65.pb +0 -180
  350. package/.scannerwork/scanner-report/symbols-66.pb +0 -153
  351. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +0 -63
  352. package/.scannerwork/scanner-report/syntax-highlightings-21.pb +0 -659
  353. package/.scannerwork/scanner-report/syntax-highlightings-22.pb +0 -158
  354. package/.scannerwork/scanner-report/syntax-highlightings-27.pb +0 -59
  355. package/.scannerwork/scanner-report/syntax-highlightings-4.pb +0 -50
  356. package/.scannerwork/scanner-report/syntax-highlightings-40.pb +0 -3749
  357. package/.scannerwork/scanner-report/syntax-highlightings-42.pb +0 -116
  358. package/.scannerwork/scanner-report/syntax-highlightings-43.pb +0 -90
  359. package/.scannerwork/scanner-report/syntax-highlightings-46.pb +0 -54
  360. package/.scannerwork/scanner-report/syntax-highlightings-66.pb +0 -214
  361. /package/.scannerwork/scanner-report/{coverages-49.pb → coverages-10.pb} +0 -0
  362. /package/.scannerwork/scanner-report/{coverages-44.pb → coverages-12.pb} +0 -0
  363. /package/.scannerwork/scanner-report/{coverages-41.pb → coverages-14.pb} +0 -0
  364. /package/.scannerwork/scanner-report/{coverages-47.pb → coverages-15.pb} +0 -0
  365. /package/.scannerwork/scanner-report/{coverages-48.pb → coverages-17.pb} +0 -0
  366. /package/.scannerwork/scanner-report/{coverages-69.pb → coverages-3.pb} +0 -0
  367. /package/.scannerwork/scanner-report/{coverages-29.pb → coverages-39.pb} +0 -0
  368. /package/.scannerwork/scanner-report/{coverages-25.pb → coverages-56.pb} +0 -0
  369. /package/.scannerwork/scanner-report/{coverages-19.pb → coverages-60.pb} +0 -0
  370. /package/.scannerwork/scanner-report/{coverages-21.pb → coverages-61.pb} +0 -0
  371. /package/.scannerwork/scanner-report/{coverages-28.pb → coverages-62.pb} +0 -0
  372. /package/.scannerwork/scanner-report/{coverages-26.pb → coverages-63.pb} +0 -0
  373. /package/.scannerwork/scanner-report/{coverages-50.pb → coverages-8.pb} +0 -0
  374. /package/.scannerwork/scanner-report/{coverages-45.pb → coverages-9.pb} +0 -0
  375. /package/.scannerwork/scanner-report/{duplications-20.pb → duplications-10.pb} +0 -0
  376. /package/.scannerwork/scanner-report/{duplications-26.pb → duplications-11.pb} +0 -0
  377. /package/.scannerwork/scanner-report/{duplications-27.pb → duplications-12.pb} +0 -0
  378. /package/.scannerwork/scanner-report/{duplications-28.pb → duplications-13.pb} +0 -0
  379. /package/.scannerwork/scanner-report/{duplications-29.pb → duplications-14.pb} +0 -0
  380. /package/.scannerwork/scanner-report/{duplications-4.pb → duplications-15.pb} +0 -0
  381. /package/.scannerwork/scanner-report/{duplications-41.pb → duplications-16.pb} +0 -0
  382. /package/.scannerwork/scanner-report/{duplications-42.pb → duplications-17.pb} +0 -0
  383. /package/.scannerwork/scanner-report/{duplications-44.pb → duplications-18.pb} +0 -0
  384. /package/.scannerwork/scanner-report/{duplications-46.pb → duplications-2.pb} +0 -0
  385. /package/.scannerwork/scanner-report/{duplications-47.pb → duplications-3.pb} +0 -0
  386. /package/.scannerwork/scanner-report/{duplications-48.pb → duplications-38.pb} +0 -0
  387. /package/.scannerwork/scanner-report/{duplications-49.pb → duplications-39.pb} +0 -0
  388. /package/.scannerwork/scanner-report/{duplications-50.pb → duplications-55.pb} +0 -0
  389. /package/.scannerwork/scanner-report/{duplications-69.pb → duplications-59.pb} +0 -0
  390. /package/.scannerwork/scanner-report/{duplications-21.pb → duplications-61.pb} +0 -0
  391. /package/.scannerwork/scanner-report/{issues-29.pb → issues-39.pb} +0 -0
  392. /package/.scannerwork/scanner-report/{issues-5.pb → issues-52.pb} +0 -0
  393. /package/.scannerwork/scanner-report/{issues-7.pb → issues-58.pb} +0 -0
  394. /package/.scannerwork/scanner-report/{issues-28.pb → issues-62.pb} +0 -0
  395. /package/.scannerwork/scanner-report/{measures-49.pb → measures-10.pb} +0 -0
  396. /package/.scannerwork/scanner-report/{measures-44.pb → measures-12.pb} +0 -0
  397. /package/.scannerwork/scanner-report/{measures-41.pb → measures-14.pb} +0 -0
  398. /package/.scannerwork/scanner-report/{measures-47.pb → measures-15.pb} +0 -0
  399. /package/.scannerwork/scanner-report/{measures-48.pb → measures-17.pb} +0 -0
  400. /package/.scannerwork/scanner-report/{measures-25.pb → measures-56.pb} +0 -0
  401. /package/.scannerwork/scanner-report/{measures-19.pb → measures-60.pb} +0 -0
  402. /package/.scannerwork/scanner-report/{measures-26.pb → measures-63.pb} +0 -0
  403. /package/.scannerwork/scanner-report/{measures-50.pb → measures-8.pb} +0 -0
  404. /package/.scannerwork/scanner-report/{measures-45.pb → measures-9.pb} +0 -0
  405. /package/.scannerwork/scanner-report/{source-49.txt → source-10.txt} +0 -0
  406. /package/.scannerwork/scanner-report/{source-44.txt → source-12.txt} +0 -0
  407. /package/.scannerwork/scanner-report/{source-41.txt → source-14.txt} +0 -0
  408. /package/.scannerwork/scanner-report/{source-47.txt → source-15.txt} +0 -0
  409. /package/.scannerwork/scanner-report/{source-48.txt → source-17.txt} +0 -0
  410. /package/.scannerwork/scanner-report/{source-25.txt → source-56.txt} +0 -0
  411. /package/.scannerwork/scanner-report/{source-19.txt → source-60.txt} +0 -0
  412. /package/.scannerwork/scanner-report/{source-26.txt → source-63.txt} +0 -0
  413. /package/.scannerwork/scanner-report/{source-50.txt → source-8.txt} +0 -0
  414. /package/.scannerwork/scanner-report/{source-45.txt → source-9.txt} +0 -0
  415. /package/.scannerwork/scanner-report/{symbols-49.pb → symbols-10.pb} +0 -0
  416. /package/.scannerwork/scanner-report/{symbols-44.pb → symbols-12.pb} +0 -0
  417. /package/.scannerwork/scanner-report/{symbols-41.pb → symbols-14.pb} +0 -0
  418. /package/.scannerwork/scanner-report/{symbols-47.pb → symbols-15.pb} +0 -0
  419. /package/.scannerwork/scanner-report/{symbols-48.pb → symbols-17.pb} +0 -0
  420. /package/.scannerwork/scanner-report/{symbols-69.pb → symbols-3.pb} +0 -0
  421. /package/.scannerwork/scanner-report/{symbols-29.pb → symbols-39.pb} +0 -0
  422. /package/.scannerwork/scanner-report/{symbols-25.pb → symbols-56.pb} +0 -0
  423. /package/.scannerwork/scanner-report/{symbols-19.pb → symbols-60.pb} +0 -0
  424. /package/.scannerwork/scanner-report/{symbols-21.pb → symbols-61.pb} +0 -0
  425. /package/.scannerwork/scanner-report/{symbols-28.pb → symbols-62.pb} +0 -0
  426. /package/.scannerwork/scanner-report/{symbols-26.pb → symbols-63.pb} +0 -0
  427. /package/.scannerwork/scanner-report/{symbols-50.pb → symbols-8.pb} +0 -0
  428. /package/.scannerwork/scanner-report/{symbols-45.pb → symbols-9.pb} +0 -0
  429. /package/.scannerwork/scanner-report/{syntax-highlightings-49.pb → syntax-highlightings-10.pb} +0 -0
  430. /package/.scannerwork/scanner-report/{syntax-highlightings-44.pb → syntax-highlightings-12.pb} +0 -0
  431. /package/.scannerwork/scanner-report/{syntax-highlightings-41.pb → syntax-highlightings-14.pb} +0 -0
  432. /package/.scannerwork/scanner-report/{syntax-highlightings-47.pb → syntax-highlightings-15.pb} +0 -0
  433. /package/.scannerwork/scanner-report/{syntax-highlightings-48.pb → syntax-highlightings-17.pb} +0 -0
  434. /package/.scannerwork/scanner-report/{syntax-highlightings-25.pb → syntax-highlightings-56.pb} +0 -0
  435. /package/.scannerwork/scanner-report/{syntax-highlightings-19.pb → syntax-highlightings-60.pb} +0 -0
  436. /package/.scannerwork/scanner-report/{syntax-highlightings-26.pb → syntax-highlightings-63.pb} +0 -0
  437. /package/.scannerwork/scanner-report/{syntax-highlightings-50.pb → syntax-highlightings-8.pb} +0 -0
  438. /package/.scannerwork/scanner-report/{syntax-highlightings-45.pb → syntax-highlightings-9.pb} +0 -0
@@ -1,418 +1,509 @@
1
- // Copyright © 2017, 2021 IBM Corp. All rights reserved.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- 'use strict';
15
-
16
- /**
17
- * CouchBackup module.
18
- * @module couchbackup
19
- * @see module:couchbackup
20
- */
21
-
22
- const backupFull = require('./includes/backup.js');
23
- const defaults = require('./includes/config.js').apiDefaults;
24
- const error = require('./includes/error.js');
25
- const request = require('./includes/request.js');
26
- const restoreInternal = require('./includes/restore.js');
27
- const backupShallow = require('./includes/shallowbackup.js');
28
- const debug = require('debug')('couchbackup:app');
29
- const events = require('events');
30
- const fs = require('fs');
31
- const URL = require('url').URL;
32
-
33
- /**
34
- * Test for a positive, safe integer.
35
- *
36
- * @param {object} x - Object under test.
37
- */
38
- function isSafePositiveInteger(x) {
39
- // https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
40
- const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
41
- // Is it a number?
42
- return Object.prototype.toString.call(x) === '[object Number]' &&
43
- // Is it an integer?
44
- x % 1 === 0 &&
45
- // Is it positive?
46
- x > 0 &&
47
- // Is it less than the maximum safe integer?
48
- x <= MAX_SAFE_INTEGER;
49
- }
50
-
51
- /**
52
- * Validate arguments.
53
- *
54
- * @param {object} url - URL of database.
55
- * @param {object} opts - Options.
56
- * @param {function} cb - Callback to be called on error.
57
- */
58
- function validateArgs(url, opts, cb) {
59
- if (typeof url !== 'string') {
60
- cb(new error.BackupError('InvalidOption', 'Invalid URL, must be type string'), null);
61
- return;
62
- }
63
- if (opts && typeof opts.bufferSize !== 'undefined' && !isSafePositiveInteger(opts.bufferSize)) {
64
- cb(new error.BackupError('InvalidOption', 'Invalid buffer size option, must be a positive integer in the range (0, MAX_SAFE_INTEGER]'), null);
65
- return;
66
- }
67
- if (opts && typeof opts.iamApiKey !== 'undefined' && typeof opts.iamApiKey !== 'string') {
68
- cb(new error.BackupError('InvalidOption', 'Invalid iamApiKey option, must be type string'), null);
69
- return;
70
- }
71
- if (opts && typeof opts.log !== 'undefined' && typeof opts.log !== 'string') {
72
- cb(new error.BackupError('InvalidOption', 'Invalid log option, must be type string'), null);
73
- return;
74
- }
75
- if (opts && typeof opts.mode !== 'undefined' && ['full', 'shallow'].indexOf(opts.mode) === -1) {
76
- cb(new error.BackupError('InvalidOption', 'Invalid mode option, must be either "full" or "shallow"'), null);
77
- return;
78
- }
79
- if (opts && typeof opts.output !== 'undefined' && typeof opts.output !== 'string') {
80
- cb(new error.BackupError('InvalidOption', 'Invalid output option, must be type string'), null);
81
- return;
82
- }
83
- if (opts && typeof opts.parallelism !== 'undefined' && !isSafePositiveInteger(opts.parallelism)) {
84
- cb(new error.BackupError('InvalidOption', 'Invalid parallelism option, must be a positive integer in the range (0, MAX_SAFE_INTEGER]'), null);
85
- return;
86
- }
87
- if (opts && typeof opts.requestTimeout !== 'undefined' && !isSafePositiveInteger(opts.requestTimeout)) {
88
- cb(new error.BackupError('InvalidOption', 'Invalid request timeout option, must be a positive integer in the range (0, MAX_SAFE_INTEGER]'), null);
89
- return;
90
- }
91
- if (opts && typeof opts.resume !== 'undefined' && typeof opts.resume !== 'boolean') {
92
- cb(new error.BackupError('InvalidOption', 'Invalid resume option, must be type boolean'), null);
93
- return;
94
- }
95
-
96
- // Validate URL and ensure no auth if using key
97
- try {
98
- const urlObject = new URL(url);
99
- // We require a protocol, host and path (for db), fail if any is missing.
100
- if (urlObject.protocol !== 'https:' && urlObject.protocol !== 'http:') {
101
- cb(new error.BackupError('InvalidOption', 'Invalid URL protocol.'));
102
- return;
103
- }
104
- if (!urlObject.host) {
105
- cb(new error.BackupError('InvalidOption', 'Invalid URL host.'));
106
- return;
107
- }
108
- if (!urlObject.pathname || urlObject.pathname === '/') {
109
- cb(new error.BackupError('InvalidOption', 'Invalid URL, missing path element (no database).'));
110
- return;
111
- }
112
- if (opts && opts.iamApiKey && (urlObject.username || urlObject.password)) {
113
- cb(new error.BackupError('InvalidOption', 'URL user information must not be supplied when using IAM API key.'));
114
- return;
115
- }
116
- } catch (err) {
117
- cb(err);
118
- return;
119
- }
120
-
121
- // Perform validation of invalid options for shallow mode and WARN
122
- // We don't error for backwards compatibility with scripts that may have been
123
- // written passing complete sets of options through
124
- if (opts && opts.mode === 'shallow') {
125
- if (opts.log || opts.resume) {
126
- console.warn('WARNING: the options "log" and "resume" are invalid when using shallow mode.');
127
- }
128
- if (opts.parallelism) {
129
- console.warn('WARNING: the option "parallelism" has no effect when using shallow mode.');
130
- }
131
- }
132
-
133
- if (opts && opts.resume) {
134
- if (!opts.log) {
135
- // This is the second place we check for the presence of the log option in conjunction with resume
136
- // It has to be here for the API case
137
- cb(new error.BackupError('NoLogFileName', 'To resume a backup, a log file must be specified'), null);
138
- return;
139
- } else if (!fs.existsSync(opts.log)) {
140
- cb(new error.BackupError('LogDoesNotExist', 'To resume a backup, the log file must exist'), null);
141
- return;
142
- }
143
- }
144
- return true;
145
- }
146
-
147
- function addEventListener(indicator, emitter, event, f) {
148
- emitter.on(event, function(...args) {
149
- if (!indicator.errored) {
150
- if (event === 'error') indicator.errored = true;
151
- f(...args);
152
- }
153
- });
154
- }
155
-
156
- /*
157
- Check the backup database exists and that the credentials used have
158
- visibility. Callback with a fatal error if there is a problem with the DB.
159
- @param {string} db - database object
160
- @param {function(err)} callback - error is undefined if DB exists
161
- */
162
- function proceedIfBackupDbValid(db, callback) {
163
- db.service.headDatabase({ db: db.db }).then(() => callback()).catch(err => {
164
- err = error.convertResponseError(err, err => parseIfDbValidResponseError(db, err));
165
- callback(err);
166
- });
167
- }
168
-
169
- /*
170
- Check that the restore database exists, is new and is empty. Also verify that the credentials used have
171
- visibility. Callback with a fatal error if there is a problem with the DB.
172
- @param {string} db - database object
173
- @param {function(err)} callback - error is undefined if DB exists, new and empty
174
- */
175
- function proceedIfRestoreDbValid(db, callback) {
176
- db.service.getDatabaseInformation({ db: db.db }).then(response => {
177
- const { doc_count: docCount, doc_del_count: deletedDocCount } = response.result;
178
- // The system databases can have a validation ddoc(s) injected in them on creation.
179
- // This sets the doc count off, so we just complitely exclude the system databases from this check.
180
- // The assumption here is that users restoring system databases know what they are doing.
181
- if (!db.db.startsWith('_') && (docCount !== 0 || deletedDocCount !== 0)) {
182
- const notEmptyDBErr = new Error(`Target database ${db.url}${db.db} is not empty.`);
183
- notEmptyDBErr.name = 'DatabaseNotEmpty';
184
- callback(notEmptyDBErr);
185
- } else {
186
- callback();
187
- }
188
- }).catch(err => {
189
- err = error.convertResponseError(err, err => parseIfDbValidResponseError(db, err));
190
- callback(err);
191
- });
192
- }
193
-
194
- /*
195
- Convert the database validation response error to a special DatabaseNotFound error
196
- in case the database is missing. Otherwise delegate to the default error factory.
197
- @param {object} db - database object
198
- @param {object} err - HTTP response error
199
- */
200
- function parseIfDbValidResponseError(db, err) {
201
- if (err && err.status === 404) {
202
- // Override the error type and message for the DB not found case
203
- const msg = `Database ${db.url}` +
204
- `${db.db} does not exist. ` +
205
- 'Check the URL and database name have been specified correctly.';
206
- const noDBErr = new Error(msg);
207
- noDBErr.name = 'DatabaseNotFound';
208
- return noDBErr;
209
- }
210
- // Delegate to the default error factory if it wasn't a 404
211
- return error.convertResponseError(err);
212
- }
213
-
214
- module.exports = {
215
-
216
- /**
217
- * Backup a Cloudant database to a stream.
218
- *
219
- * @param {string} srcUrl - URL of database to backup.
220
- * @param {stream.Writable} targetStream - Stream to write content to.
221
- * @param {object} opts - Backup options.
222
- * @param {number} [opts.parallelism=5] - Number of parallel HTTP requests to use.
223
- * @param {number} [opts.bufferSize=500] - Number of documents per batch request.
224
- * @param {number} [opts.requestTimeout=120000] - Milliseconds to wait before retrying a HTTP request.
225
- * @param {string} [opts.iamApiKey] - IAM API key to use to access Cloudant database.
226
- * @param {string} [opts.log] - Log file name. Default uses a temporary file.
227
- * @param {boolean} [opts.resume] - Whether to resume from existing log.
228
- * @param {string} [opts.mode=full] - Use `full` or `shallow` mode.
229
- * @param {backupRestoreCallback} callback - Called on completion.
230
- */
231
- backup: function(srcUrl, targetStream, opts, callback) {
232
- const listenerErrorIndicator = { errored: false };
233
- if (typeof callback === 'undefined' && typeof opts === 'function') {
234
- callback = opts;
235
- opts = {};
236
- }
237
- if (!validateArgs(srcUrl, opts, callback)) {
238
- // bad args, bail
239
- return;
240
- }
241
-
242
- // if there is an error writing to the stream, call the completion
243
- // callback with the error set
244
- addEventListener(listenerErrorIndicator, targetStream, 'error', function(err) {
245
- debug('Error ' + JSON.stringify(err));
246
- if (callback) callback(err);
247
- });
248
-
249
- opts = Object.assign({}, defaults(), opts);
250
-
251
- const ee = new events.EventEmitter();
252
-
253
- // Set up the DB client
254
- const backupDB = request.client(srcUrl, opts);
255
-
256
- // Validate the DB exists, before proceeding to backup
257
- proceedIfBackupDbValid(backupDB, function(err) {
258
- if (err) {
259
- if (err.name === 'DatabaseNotFound') {
260
- err.message = `${err.message} Ensure the backup source database exists.`;
261
- }
262
- // Didn't exist, or another fatal error, exit
263
- callback(err);
264
- return;
265
- }
266
- let backup = null;
267
- if (opts.mode === 'shallow') {
268
- backup = backupShallow;
269
- } else { // full mode
270
- backup = backupFull;
271
- }
272
-
273
- // If resuming write a newline as it's possible one would be missing from
274
- // an interruption of the previous backup. If the backup was clean this
275
- // will cause an empty line that will be gracefully handled by the restore.
276
- if (opts.resume) {
277
- targetStream.write('\n');
278
- }
279
-
280
- // Get the event emitter from the backup process so we can handle events
281
- // before passing them on to the app's event emitter if needed.
282
- const internalEE = backup(backupDB, opts);
283
- addEventListener(listenerErrorIndicator, internalEE, 'changes', function(batch) {
284
- ee.emit('changes', batch);
285
- });
286
- addEventListener(listenerErrorIndicator, internalEE, 'received', function(obj, q, logCompletedBatch) {
287
- // this may be too verbose to have as well as the "backed up" message
288
- // debug(' received batch', obj.batch, ' docs: ', obj.total, 'Time', obj.time);
289
- // Callback to emit the written event when the content is flushed
290
- function writeFlushed() {
291
- ee.emit('written', { total: obj.total, time: obj.time, batch: obj.batch });
292
- if (logCompletedBatch) {
293
- logCompletedBatch(obj.batch);
294
- }
295
- debug(' backed up batch', obj.batch, ' docs: ', obj.total, 'Time', obj.time);
296
- }
297
- // Write the received content to the targetStream
298
- const continueWriting = targetStream.write(JSON.stringify(obj.data) + '\n',
299
- 'utf8',
300
- writeFlushed);
301
- if (!continueWriting) {
302
- // The buffer was full, pause the queue to stop the writes until we
303
- // get a drain event
304
- if (q && !q.paused) {
305
- q.pause();
306
- targetStream.once('drain', function() {
307
- q.resume();
308
- });
309
- }
310
- }
311
- });
312
- // For errors we expect, may or may not be fatal
313
- addEventListener(listenerErrorIndicator, internalEE, 'error', function(err) {
314
- debug('Error ' + JSON.stringify(err));
315
- callback(err);
316
- });
317
- addEventListener(listenerErrorIndicator, internalEE, 'finished', function(obj) {
318
- function emitFinished() {
319
- debug('Backup complete - written ' + JSON.stringify(obj));
320
- const summary = { total: obj.total };
321
- ee.emit('finished', summary);
322
- if (callback) callback(null, summary);
323
- }
324
- if (targetStream === process.stdout) {
325
- // stdout cannot emit a finish event so use a final write + callback
326
- targetStream.write('', 'utf8', emitFinished);
327
- } else {
328
- // If we're writing to a file, end the writes and register the
329
- // emitFinished function for a callback when the file stream's finish
330
- // event is emitted.
331
- targetStream.end('', 'utf8', emitFinished);
332
- }
333
- });
334
- });
335
- return ee;
336
- },
337
-
338
- /**
339
- * Restore a backup from a stream.
340
- *
341
- * @param {stream.Readable} srcStream - Stream containing backed up data.
342
- * @param {string} targetUrl - Target database.
343
- * @param {object} opts - Restore options.
344
- * @param {number} opts.parallelism - Number of parallel HTTP requests to use. Default 5.
345
- * @param {number} opts.bufferSize - Number of documents per batch request. Default 500.
346
- * @param {number} opts.requestTimeout - Milliseconds to wait before retrying a HTTP request. Default 120000.
347
- * @param {string} opts.iamApiKey - IAM API key to use to access Cloudant database.
348
- * @param {backupRestoreCallback} callback - Called on completion.
349
- */
350
- restore: function(srcStream, targetUrl, opts, callback) {
351
- const listenerErrorIndicator = { errored: false };
352
- if (typeof callback === 'undefined' && typeof opts === 'function') {
353
- callback = opts;
354
- opts = {};
355
- }
356
- validateArgs(targetUrl, opts, callback);
357
- opts = Object.assign({}, defaults(), opts);
358
-
359
- const ee = new events.EventEmitter();
360
-
361
- // Set up the DB client
362
- const restoreDB = request.client(targetUrl, opts);
363
-
364
- // Validate the DB exists, before proceeding to restore
365
- proceedIfRestoreDbValid(restoreDB, function(err) {
366
- if (err) {
367
- if (err.name === 'DatabaseNotFound') {
368
- err.message = `${err.message} Create the target database before restoring.`;
369
- } else if (err.name === 'DatabaseNotEmpty') {
370
- err.message = `${err.message} A target database must be a new and empty database.`;
371
- }
372
- // Didn't exist, or another fatal error, exit
373
- callback(err);
374
- return;
375
- }
376
-
377
- restoreInternal(
378
- restoreDB,
379
- opts,
380
- srcStream,
381
- ee,
382
- function(err, writer) {
383
- if (err) {
384
- callback(err, null);
385
- return;
386
- }
387
- if (writer != null) {
388
- addEventListener(listenerErrorIndicator, writer, 'restored', function(obj) {
389
- debug(' restored ', obj.total);
390
- ee.emit('restored', { documents: obj.documents, total: obj.total });
391
- });
392
- addEventListener(listenerErrorIndicator, writer, 'error', function(err) {
393
- debug('Error ' + JSON.stringify(err));
394
- // Only call destroy if it is available on the stream
395
- if (srcStream.destroy && srcStream.destroy instanceof Function) {
396
- srcStream.destroy();
397
- }
398
- callback(err);
399
- });
400
- addEventListener(listenerErrorIndicator, writer, 'finished', function(obj) {
401
- debug('restore complete');
402
- ee.emit('finished', { total: obj.total });
403
- callback(null, obj);
404
- });
405
- }
406
- }
407
- );
408
- });
409
- return ee;
410
- }
411
- };
412
-
413
- /**
414
- * Backup/restore callback
415
- * @callback backupRestoreCallback
416
- * @param {Error} err - Error object if operation failed.
417
- * @param {object} data - summary data for backup/restore
418
- */
1
+ <testsuites name="test">
2
+ <testsuite name="#unit Validate arguments" tests="33" errors="0" failures="0" skipped="0" timestamp="2023-04-04T16:49:47" time="0.11">
3
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid URL type" time="0.001">
4
+ </testcase>
5
+ <testcase classname="test.#unit Validate arguments" name="returns no error for valid URL type" time="0.019">
6
+ </testcase>
7
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid (no host) URL" time="0.001">
8
+ </testcase>
9
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid (no protocol) URL" time="0">
10
+ </testcase>
11
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid (wrong protocol) URL" time="0">
12
+ </testcase>
13
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid (no path) URL" time="0">
14
+ </testcase>
15
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid (no protocol, no host) URL" time="0">
16
+ </testcase>
17
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid buffer size type" time="0.001">
18
+ </testcase>
19
+ <testcase classname="test.#unit Validate arguments" name="returns error for zero buffer size" time="0">
20
+ </testcase>
21
+ <testcase classname="test.#unit Validate arguments" name="returns error for float buffer size" time="0">
22
+ </testcase>
23
+ <testcase classname="test.#unit Validate arguments" name="returns no error for valid buffer size type" time="0.004">
24
+ </testcase>
25
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid log type" time="0.001">
26
+ </testcase>
27
+ <testcase classname="test.#unit Validate arguments" name="returns no error for valid log type" time="0.005">
28
+ </testcase>
29
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid mode type" time="0">
30
+ </testcase>
31
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid mode string" time="0.001">
32
+ </testcase>
33
+ <testcase classname="test.#unit Validate arguments" name="returns no error for valid mode type" time="0.005">
34
+ </testcase>
35
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid output type" time="0.001">
36
+ </testcase>
37
+ <testcase classname="test.#unit Validate arguments" name="returns no error for valid output type" time="0.008">
38
+ </testcase>
39
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid parallelism type" time="0.001">
40
+ </testcase>
41
+ <testcase classname="test.#unit Validate arguments" name="returns error for zero parallelism" time="0">
42
+ </testcase>
43
+ <testcase classname="test.#unit Validate arguments" name="returns error for float parallelism" time="0">
44
+ </testcase>
45
+ <testcase classname="test.#unit Validate arguments" name="returns no error for valid parallelism type" time="0.006">
46
+ </testcase>
47
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid request timeout type" time="0">
48
+ </testcase>
49
+ <testcase classname="test.#unit Validate arguments" name="returns error for zero request timeout" time="0.001">
50
+ </testcase>
51
+ <testcase classname="test.#unit Validate arguments" name="returns error for float request timout" time="0">
52
+ </testcase>
53
+ <testcase classname="test.#unit Validate arguments" name="returns no error for valid request timeout type" time="0.005">
54
+ </testcase>
55
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid resume type" time="0.001">
56
+ </testcase>
57
+ <testcase classname="test.#unit Validate arguments" name="returns no error for valid resume type" time="0.006">
58
+ </testcase>
59
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid key type" time="0">
60
+ </testcase>
61
+ <testcase classname="test.#unit Validate arguments" name="returns error for key and URL credentials supplied" time="0">
62
+ </testcase>
63
+ <testcase classname="test.#unit Validate arguments" name="warns for log arg in shallow mode" time="0.001">
64
+ </testcase>
65
+ <testcase classname="test.#unit Validate arguments" name="warns for resume arg in shallow mode" time="0.001">
66
+ </testcase>
67
+ <testcase classname="test.#unit Validate arguments" name="warns for parallism arg in shallow mode" time="0.001">
68
+ </testcase>
69
+ </testsuite>
70
+ <testsuite name="Basic backup and restore using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-04-04T16:49:47" time="4.511">
71
+ <testcase classname="test.Basic backup and restore using API" name="should backup animaldb to a file correctly" time="0.969">
72
+ <system-out><![CDATA[{ total: 15 }
73
+ ]]></system-out>
74
+ </testcase>
75
+ <testcase classname="test.Basic backup and restore using API" name="should restore animaldb to a database correctly" time="1.804">
76
+ <system-out><![CDATA[{ total: 15 }
77
+ ]]></system-out>
78
+ </testcase>
79
+ <testcase classname="test.Basic backup and restore using API" name="should execute a shallow mode backup successfully" time="0.652">
80
+ <system-out><![CDATA[{ total: 11 }
81
+ ]]></system-out>
82
+ </testcase>
83
+ </testsuite>
84
+ <testsuite name="Basic backup and restore using API Buffer size tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-04-04T16:49:51" time="11.405">
85
+ <testcase classname="test.Basic backup and restore using API Buffer size tests using API" name="should backup/restore animaldb with the same buffer size" time="3.663">
86
+ <system-out><![CDATA[{ total: 15 }
87
+ { total: 15 }
88
+ ]]></system-out>
89
+ </testcase>
90
+ <testcase classname="test.Basic backup and restore using API Buffer size tests using API" name="should backup/restore animaldb with backup buffer &gt; restore buffer" time="3.417">
91
+ <system-out><![CDATA[{ total: 15 }
92
+ { total: 15 }
93
+ ]]></system-out>
94
+ </testcase>
95
+ <testcase classname="test.Basic backup and restore using API Buffer size tests using API" name="should backup/restore animaldb with backup buffer &lt; restore buffer" time="3.56">
96
+ <system-out><![CDATA[{ total: 15 }
97
+ { total: 15 }
98
+ ]]></system-out>
99
+ </testcase>
100
+ </testsuite>
101
+ <testsuite name="Basic backup and restore using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-04-04T16:50:03" time="5.395">
102
+ <testcase classname="test.Basic backup and restore using CLI" name="should backup animaldb to a file correctly" time="1.369">
103
+ <system-out><![CDATA[Backup process close 0 null
104
+ ]]></system-out>
105
+ </testcase>
106
+ <testcase classname="test.Basic backup and restore using CLI" name="should restore animaldb to a database correctly" time="2.207">
107
+ </testcase>
108
+ <testcase classname="test.Basic backup and restore using CLI" name="should execute a shallow mode backup successfully" time="1.05">
109
+ <system-out><![CDATA[Backup process close 0 null
110
+ ]]></system-out>
111
+ </testcase>
112
+ </testsuite>
113
+ <testsuite name="Basic backup and restore using CLI Buffer size tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-04-04T16:50:08" time="14.14">
114
+ <testcase classname="test.Basic backup and restore using CLI Buffer size tests using CLI" name="should backup/restore animaldb with the same buffer size" time="4.523">
115
+ <system-out><![CDATA[Backup process close 0 null
116
+ ]]></system-out>
117
+ </testcase>
118
+ <testcase classname="test.Basic backup and restore using CLI Buffer size tests using CLI" name="should backup/restore animaldb with backup buffer &gt; restore buffer" time="4.33">
119
+ <system-out><![CDATA[Backup process close 0 null
120
+ ]]></system-out>
121
+ </testcase>
122
+ <testcase classname="test.Basic backup and restore using CLI Buffer size tests using CLI" name="should backup/restore animaldb with backup buffer &lt; restore buffer" time="4.527">
123
+ <system-out><![CDATA[Backup process close 0 null
124
+ ]]></system-out>
125
+ </testcase>
126
+ </testsuite>
127
+ <testsuite name="Compression tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-04-04T16:50:22" time="6.457">
128
+ <testcase classname="test.Compression tests using API" name="should backup animaldb to a compressed file" time="0.866">
129
+ <system-out><![CDATA[{ total: 15 }
130
+ ]]></system-out>
131
+ </testcase>
132
+ <testcase classname="test.Compression tests using API" name="should backup and restore animaldb via a compressed file" time="2.684">
133
+ <system-out><![CDATA[{ total: 15 }
134
+ { total: 15 }
135
+ ]]></system-out>
136
+ </testcase>
137
+ <testcase classname="test.Compression tests using API" name="should backup and restore animaldb via a compressed stream" time="2.151">
138
+ <system-out><![CDATA[{ total: 15 }
139
+ { total: 15 }
140
+ ]]></system-out>
141
+ </testcase>
142
+ </testsuite>
143
+ <testsuite name="Compression tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-04-04T16:50:29" time="8.383">
144
+ <testcase classname="test.Compression tests using CLI" name="should backup animaldb to a compressed file" time="1.344">
145
+ <system-out><![CDATA[Backup process close 0 null
146
+ ]]></system-out>
147
+ </testcase>
148
+ <testcase classname="test.Compression tests using CLI" name="should backup and restore animaldb via a compressed file" time="3.531">
149
+ <system-out><![CDATA[Backup process close 0 null
150
+ ]]></system-out>
151
+ </testcase>
152
+ <testcase classname="test.Compression tests using CLI" name="should backup and restore animaldb via a compressed stream" time="2.647">
153
+ <system-out><![CDATA[Backup process close 0 null
154
+ ]]></system-out>
155
+ </testcase>
156
+ </testsuite>
157
+ <testsuite name="End to end backup and restore using API" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-04-04T16:50:37" time="330.681">
158
+ <testcase classname="test.End to end backup and restore using API" name="should backup and restore animaldb" time="2.132">
159
+ <system-out><![CDATA[{ total: 15 }
160
+ { total: 15 }
161
+ ]]></system-out>
162
+ </testcase>
163
+ <testcase classname="test.End to end backup and restore using API" name="should backup and restore largedb1g #slow" time="327.784">
164
+ <system-out><![CDATA[{ total: 522948 }
165
+ { total: 522948 }
166
+ ]]></system-out>
167
+ </testcase>
168
+ </testsuite>
169
+ <testsuite name="End to end backup and restore using CLI" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-04-04T16:56:08" time="508.651">
170
+ <testcase classname="test.End to end backup and restore using CLI" name="should backup and restore animaldb" time="2.642">
171
+ <system-out><![CDATA[Backup process close 0 null
172
+ ]]></system-out>
173
+ </testcase>
174
+ <testcase classname="test.End to end backup and restore using CLI" name="should backup and restore largedb1g #slow" time="505.253">
175
+ <system-out><![CDATA[Backup process close 0 null
176
+ ]]></system-out>
177
+ </testcase>
178
+ </testsuite>
179
+ <testsuite name="Encryption tests" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:04:36" time="3.901">
180
+ <testcase classname="test.Encryption tests" name="should backup and restore animaldb via an encrypted file" time="3.642">
181
+ <system-out><![CDATA[Backup process close 0 null
182
+ ]]></system-out>
183
+ </testcase>
184
+ </testsuite>
185
+ <testsuite name="Write error tests" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:04:40" time="0.272">
186
+ <testcase classname="test.Write error tests" name="calls callback with error set when stream is not writeable" time="0.012">
187
+ </testcase>
188
+ </testsuite>
189
+ <testsuite name="Event tests" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:04:41" time="2.295">
190
+ <testcase classname="test.Event tests" name="should get a finished event when using stdout" time="0.882">
191
+ </testcase>
192
+ <testcase classname="test.Event tests" name="should get a finished event when using file output" time="0.892">
193
+ </testcase>
194
+ </testsuite>
195
+ <testsuite name="Resume tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:04:43" time="5.286">
196
+ <testcase classname="test.Resume tests using API" name="should create a log file" time="0.899">
197
+ <system-out><![CDATA[{ total: 15 }
198
+ ]]></system-out>
199
+ </testcase>
200
+ <testcase classname="test.Resume tests using API" name="should restore corrupted animaldb to a database correctly" time="1.812">
201
+ <system-out><![CDATA[{ total: 15 }
202
+ ]]></system-out>
203
+ </testcase>
204
+ <testcase classname="test.Resume tests using API" name="should restore resumed animaldb with blank line to a database correctly" time="1.798">
205
+ <system-out><![CDATA[{ total: 15 }
206
+ ]]></system-out>
207
+ </testcase>
208
+ </testsuite>
209
+ <testsuite name="Resume tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:04:48" time="6.593">
210
+ <testcase classname="test.Resume tests using CLI" name="should create a log file" time="1.372">
211
+ <system-out><![CDATA[Backup process close 0 null
212
+ ]]></system-out>
213
+ </testcase>
214
+ <testcase classname="test.Resume tests using CLI" name="should restore corrupted animaldb to a database correctly" time="2.216">
215
+ </testcase>
216
+ <testcase classname="test.Resume tests using CLI" name="should restore resumed animaldb with blank line to a database correctly" time="2.227">
217
+ </testcase>
218
+ </testsuite>
219
+ <testsuite name="Resume tests" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:04:55" time="33.709">
220
+ <testcase classname="test.Resume tests" name="should correctly backup and restore backup10m" time="16.553">
221
+ <system-out><![CDATA[Backup process close null SIGTERM
222
+ Backup process close 0 null
223
+ ]]></system-out>
224
+ </testcase>
225
+ <testcase classname="test.Resume tests" name="should correctly backup and restore backup10m using --output" time="16.641">
226
+ <system-out><![CDATA[Backup process close null SIGTERM
227
+ Backup process close 0 null
228
+ ]]></system-out>
229
+ </testcase>
230
+ </testsuite>
231
+ <testsuite name="#unit Configuration" tests="12" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:28" time="0.011">
232
+ <testcase classname="test.#unit Configuration" name="respects the COUCH_URL env variable" time="0.001">
233
+ </testcase>
234
+ <testcase classname="test.#unit Configuration" name="respects the COUCH_DATABASE env variable" time="0">
235
+ </testcase>
236
+ <testcase classname="test.#unit Configuration" name="respects the COUCH_BUFFER_SIZE env variable" time="0">
237
+ </testcase>
238
+ <testcase classname="test.#unit Configuration" name="respects the COUCH_PARALLELISM env variable" time="0.001">
239
+ </testcase>
240
+ <testcase classname="test.#unit Configuration" name="respects the COUCH_REQUEST_TIMEOUT env variable" time="0">
241
+ </testcase>
242
+ <testcase classname="test.#unit Configuration" name="respects the CLOUDANT_IAM_API_KEY env variable" time="0">
243
+ </testcase>
244
+ <testcase classname="test.#unit Configuration" name="respects the CLOUDANT_IAM_TOKEN_URL env variable" time="0">
245
+ </testcase>
246
+ <testcase classname="test.#unit Configuration" name="respects the COUCH_LOG env variable" time="0">
247
+ </testcase>
248
+ <testcase classname="test.#unit Configuration" name="respects the COUCH_RESUME env variable" time="0.001">
249
+ </testcase>
250
+ <testcase classname="test.#unit Configuration" name="respects the COUCH_OUTPUT env variable" time="0">
251
+ </testcase>
252
+ <testcase classname="test.#unit Configuration" name="respects the COUCH_MODE env variable" time="0">
253
+ </testcase>
254
+ <testcase classname="test.#unit Configuration" name="respects the COUCH_QUIET env variable" time="0">
255
+ </testcase>
256
+ </testsuite>
257
+ <testsuite name="#unit Fatal errors using API for backup" tests="10" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:28" time="0.093">
258
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate when DB does not exist" time="0.009">
259
+ </testcase>
260
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate on BulkGetError" time="0.008">
261
+ </testcase>
262
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate on Unauthorized existence check" time="0.005">
263
+ </testcase>
264
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate on Forbidden no _reader" time="0.005">
265
+ </testcase>
266
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate on _bulk_get HTTPFatalError" time="0.02">
267
+ </testcase>
268
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate on NoLogFileName" time="0">
269
+ </testcase>
270
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate on LogDoesNotExist" time="0">
271
+ </testcase>
272
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate on IncompleteChangesInLogFile" time="0.009">
273
+ </testcase>
274
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate on _changes HTTPFatalError" time="0.014">
275
+ </testcase>
276
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate on SpoolChangesError" time="0.013">
277
+ </testcase>
278
+ </testsuite>
279
+ <testsuite name="#unit Fatal errors using API for restore" tests="9" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:29" time="0.122">
280
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on Unauthorized db existence check" time="0.007">
281
+ </testcase>
282
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on Forbidden no _writer" time="0.012">
283
+ </testcase>
284
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on RestoreDatabaseNotFound" time="0.005">
285
+ </testcase>
286
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on notEmptyDBErr when database is not empty" time="0.005">
287
+ </testcase>
288
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on notEmptyDBErr when database is not new" time="0.005">
289
+ </testcase>
290
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on _bulk_docs HTTPFatalError" time="0.012">
291
+ </testcase>
292
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on _bulk_docs HTTPFatalError from system database" time="0.037">
293
+ </testcase>
294
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on _bulk_docs HTTPFatalError large stream" time="0.023">
295
+ </testcase>
296
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on multiple _bulk_docs HTTPFatalError" time="0.01">
297
+ </testcase>
298
+ </testsuite>
299
+ <testsuite name="#unit Fatal errors using CLI for backup" tests="10" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:29" time="3.67">
300
+ <testcase classname="test.#unit Fatal errors using CLI for backup" name="should terminate when DB does not exist" time="0.34">
301
+ <system-out><![CDATA[Backup process close 10 null
302
+ ]]></system-out>
303
+ </testcase>
304
+ <testcase classname="test.#unit Fatal errors using CLI for backup" name="should terminate on BulkGetError" time="0.396">
305
+ <system-out><![CDATA[Backup process close 50 null
306
+ ]]></system-out>
307
+ </testcase>
308
+ <testcase classname="test.#unit Fatal errors using CLI for backup" name="should terminate on Unauthorized existence check" time="0.351">
309
+ <system-out><![CDATA[Backup process close 11 null
310
+ ]]></system-out>
311
+ </testcase>
312
+ <testcase classname="test.#unit Fatal errors using CLI for backup" name="should terminate on Forbidden no _reader" time="0.348">
313
+ <system-out><![CDATA[Backup process close 12 null
314
+ ]]></system-out>
315
+ </testcase>
316
+ <testcase classname="test.#unit Fatal errors using CLI for backup" name="should terminate on _bulk_get HTTPFatalError" time="0.386">
317
+ <system-out><![CDATA[Backup process close 40 null
318
+ ]]></system-out>
319
+ </testcase>
320
+ <testcase classname="test.#unit Fatal errors using CLI for backup" name="should terminate on NoLogFileName" time="0.327">
321
+ <system-out><![CDATA[Backup process close 20 null
322
+ ]]></system-out>
323
+ </testcase>
324
+ <testcase classname="test.#unit Fatal errors using CLI for backup" name="should terminate on LogDoesNotExist" time="0.353">
325
+ <system-out><![CDATA[Backup process close 21 null
326
+ ]]></system-out>
327
+ </testcase>
328
+ <testcase classname="test.#unit Fatal errors using CLI for backup" name="should terminate on IncompleteChangesInLogFile" time="0.373">
329
+ <system-out><![CDATA[Backup process close 22 null
330
+ ]]></system-out>
331
+ </testcase>
332
+ <testcase classname="test.#unit Fatal errors using CLI for backup" name="should terminate on _changes HTTPFatalError" time="0.406">
333
+ <system-out><![CDATA[Backup process close 40 null
334
+ ]]></system-out>
335
+ </testcase>
336
+ <testcase classname="test.#unit Fatal errors using CLI for backup" name="should terminate on SpoolChangesError" time="0.372">
337
+ <system-out><![CDATA[Backup process close 30 null
338
+ ]]></system-out>
339
+ </testcase>
340
+ </testsuite>
341
+ <testsuite name="#unit Fatal errors using CLI for restore" tests="9" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:32" time="3.362">
342
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on Unauthorized db existence check" time="0.349">
343
+ </testcase>
344
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on Forbidden no _writer" time="0.361">
345
+ </testcase>
346
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on RestoreDatabaseNotFound" time="0.361">
347
+ </testcase>
348
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on notEmptyDBErr when database is not empty" time="0.369">
349
+ </testcase>
350
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on notEmptyDBErr when database is not new" time="0.332">
351
+ </testcase>
352
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on _bulk_docs HTTPFatalError" time="0.378">
353
+ </testcase>
354
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on _bulk_docs HTTPFatalError from system database" time="0.427">
355
+ </testcase>
356
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on _bulk_docs HTTPFatalError large stream" time="0.407">
357
+ </testcase>
358
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on multiple _bulk_docs HTTPFatalError" time="0.366">
359
+ </testcase>
360
+ </testsuite>
361
+ <testsuite name="#unit Fetching batches from a log file" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:36" time="0.003">
362
+ <testcase classname="test.#unit Fetching batches from a log file" name="should fetch multiple batches correctly" time="0.001">
363
+ </testcase>
364
+ </testsuite>
365
+ <testsuite name="#unit Fetching summary from the log file" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:36" time="0.002">
366
+ <testcase classname="test.#unit Fetching summary from the log file" name="should fetch a summary correctly" time="0.002">
367
+ </testcase>
368
+ </testsuite>
369
+ <testsuite name="#unit Default parameters Backup command-line" tests="23" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:36" time="0.04">
370
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the COUCH_URL env variable if the --url backup command-line parameter is missing" time="0.015">
371
+ </testcase>
372
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the COUCH_DATABASE env variable if the --db backup command-line parameter is missing" time="0.002">
373
+ </testcase>
374
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the COUCH_BUFFER_SIZE env variable if the --buffer-size backup command-line parameter is missing" time="0.001">
375
+ </testcase>
376
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the COUCH_PARALLELISM env variable if the --parallelism backup command-line parameter is missing" time="0.001">
377
+ </testcase>
378
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the COUCH_REQUEST_TIMEOUT env variable if the --request-timeout backup command-line parameter is missing" time="0.001">
379
+ </testcase>
380
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the CLOUDANT_IAM_API_KEY env variable if the --iam-api-key backup command-line parameter is missing" time="0.001">
381
+ </testcase>
382
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the COUCH_LOG env variable if the --log backup command-line parameter is missing" time="0">
383
+ </testcase>
384
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the COUCH_RESUME env variable if the --resume backup command-line parameter is missing" time="0">
385
+ </testcase>
386
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the COUCH_OUTPUT env variable if the --output backup command-line parameter is missing" time="0.001">
387
+ </testcase>
388
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the COUCH_MODE env variable if the --mode backup command-line parameter is missing" time="0.001">
389
+ </testcase>
390
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the COUCH_QUIET env variable if the --quiet backup command-line parameter is missing" time="0.001">
391
+ </testcase>
392
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --url command-line parameter" time="0.001">
393
+ </testcase>
394
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --db command-line parameter" time="0">
395
+ </testcase>
396
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --buffer-size command-line parameter" time="0">
397
+ </testcase>
398
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --parallelism command-line parameter" time="0">
399
+ </testcase>
400
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --request-timeout command-line parameter" time="0">
401
+ </testcase>
402
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --iam-api-key command-line parameter" time="0">
403
+ </testcase>
404
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --log command-line parameter" time="0.001">
405
+ </testcase>
406
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --resume command-line parameter" time="0.001">
407
+ </testcase>
408
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --output command-line parameter" time="0.001">
409
+ </testcase>
410
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --mode full command-line parameter" time="0.001">
411
+ </testcase>
412
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --mode shallow command-line parameter" time="0.001">
413
+ </testcase>
414
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --quiet command-line parameter" time="0.001">
415
+ </testcase>
416
+ </testsuite>
417
+ <testsuite name="#unit Default parameters Restore command-line" tests="14" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:36" time="0.02">
418
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the COUCH_URL env variable if the --url restore command-line parameter is missing" time="0">
419
+ </testcase>
420
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the COUCH_DATABASE env variable if the --db restore command-line parameter is missing" time="0">
421
+ </testcase>
422
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the COUCH_BUFFER_SIZE env variable if the --buffer-size restore command-line parameter is missing" time="0">
423
+ </testcase>
424
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the COUCH_PARALLELISM env variable if the --parallelism restore command-line parameter is missing" time="0">
425
+ </testcase>
426
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the COUCH_REQUEST_TIMEOUT env variable if the --request-timeout restore command-line parameter is missing" time="0.001">
427
+ </testcase>
428
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the CLOUDANT_IAM_API_KEY env variable if the --iam-api-key restore command-line parameter is missing" time="0.001">
429
+ </testcase>
430
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the COUCH_QUIET env variable if the --quiet restorer command-line parameter is missing" time="0.001">
431
+ </testcase>
432
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the restore --url command-line parameter" time="0.001">
433
+ </testcase>
434
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the restore --db command-line parameter" time="0.001">
435
+ </testcase>
436
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the restore --buffer-size command-line parameter" time="0.001">
437
+ </testcase>
438
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the restore --parallelism command-line parameter" time="0.001">
439
+ </testcase>
440
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the restore --request-timeout command-line parameter" time="0.001">
441
+ </testcase>
442
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the restore --iam-api-key command-line parameter" time="0.001">
443
+ </testcase>
444
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the restore --quiet command-line parameter" time="0.001">
445
+ </testcase>
446
+ </testsuite>
447
+ <testsuite name="#unit Check request headers" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:36" time="0.004">
448
+ <testcase classname="test.#unit Check request headers" name="should have a couchbackup user-agent" time="0.004">
449
+ </testcase>
450
+ </testsuite>
451
+ <testsuite name="#unit Check request response error callback" tests="8" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:36" time="10.586">
452
+ <testcase classname="test.#unit Check request response error callback" name="should not callback with error for 200 response" time="0.004">
453
+ </testcase>
454
+ <testcase classname="test.#unit Check request response error callback" name="should callback with error after 3 500 responses" time="2.014">
455
+ </testcase>
456
+ <testcase classname="test.#unit Check request response error callback" name="should callback with error after 3 POST 503 responses" time="2.016">
457
+ </testcase>
458
+ <testcase classname="test.#unit Check request response error callback" name="should callback with error after 3 429 responses" time="2.014">
459
+ </testcase>
460
+ <testcase classname="test.#unit Check request response error callback" name="should callback with fatal error for 404 response" time="0.004">
461
+ </testcase>
462
+ <testcase classname="test.#unit Check request response error callback" name="should callback with same error for no status code error response" time="2.011">
463
+ </testcase>
464
+ <testcase classname="test.#unit Check request response error callback" name="should retry request if HTTP request gets timed out" time="0.508">
465
+ </testcase>
466
+ <testcase classname="test.#unit Check request response error callback" name="should callback with error code ESOCKETTIMEDOUT if 3 HTTP requests gets timed out" time="2.009">
467
+ </testcase>
468
+ </testsuite>
469
+ <testsuite name="#unit Check request response error callback #unit Check credentials" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:46" time="0.013">
470
+ <testcase classname="test.#unit Check request response error callback #unit Check credentials" name="should properly decode username and password" time="0.012">
471
+ </testcase>
472
+ </testsuite>
473
+ <testsuite name="#unit Perform backup using shallow backup" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:46" time="0.557">
474
+ <testcase classname="test.#unit Perform backup using shallow backup" name="should perform a shallow backup" time="0.017">
475
+ </testcase>
476
+ <testcase classname="test.#unit Perform backup using shallow backup" name="should perform a shallow backup with transient error" time="0.523">
477
+ </testcase>
478
+ <testcase classname="test.#unit Perform backup using shallow backup" name="should fail to perform a shallow backup on fatal error" time="0.014">
479
+ </testcase>
480
+ </testsuite>
481
+ <testsuite name="#unit Check spool changes" tests="4" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:05:47" time="15.114">
482
+ <testcase classname="test.#unit Check spool changes" name="should terminate on request error" time="2.01">
483
+ </testcase>
484
+ <testcase classname="test.#unit Check spool changes" name="should terminate on bad HTTP status code response" time="2.021">
485
+ </testcase>
486
+ <testcase classname="test.#unit Check spool changes" name="should keep collecting changes" time="2.091">
487
+ </testcase>
488
+ <testcase classname="test.#unit Check spool changes" name="should keep collecting sparse changes" time="8.987">
489
+ </testcase>
490
+ </testsuite>
491
+ <testsuite name="Longer spool changes checks" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:06:02" time="50.987">
492
+ <testcase classname="test.Longer spool changes checks" name="#slow should keep collecting changes (25M)" time="50.716">
493
+ </testcase>
494
+ </testsuite>
495
+ <testsuite name="#unit Check database restore writer" tests="6" errors="0" failures="0" skipped="0" timestamp="2023-04-04T17:06:53" time="4.109">
496
+ <testcase classname="test.#unit Check database restore writer" name="should complete successfully" time="0.024">
497
+ </testcase>
498
+ <testcase classname="test.#unit Check database restore writer" name="should terminate on a fatal error" time="0.007">
499
+ </testcase>
500
+ <testcase classname="test.#unit Check database restore writer" name="should retry on transient errors" time="2.028">
501
+ </testcase>
502
+ <testcase classname="test.#unit Check database restore writer" name="should fail after 3 transient errors" time="2.017">
503
+ </testcase>
504
+ <testcase classname="test.#unit Check database restore writer" name="should restore shallow backups without rev info successfully" time="0.022">
505
+ </testcase>
506
+ <testcase classname="test.#unit Check database restore writer" name="should get a batch error for non-empty array response with new_edits false" time="0.007">
507
+ </testcase>
508
+ </testsuite>
509
+ </testsuites>