@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,625 +1,509 @@
1
- // Copyright © 2017, 2023 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
-
15
- /* global */
16
- 'use strict';
17
-
18
- const assert = require('assert');
19
- const spawn = require('child_process').spawn;
20
- const app = require('../app.js');
21
- const dbUrl = require('../includes/cliutils.js').databaseUrl;
22
- const stream = require('stream');
23
- const fs = require('fs');
24
- const zlib = require('zlib');
25
- const Tail = require('tail').Tail;
26
- const compare = require('./compare.js');
27
- const request = require('../includes/request.js');
28
-
29
- function scenario(test, params) {
30
- return `${test} ${(params.useApi) ? 'using API' : 'using CLI'}`;
31
- }
32
-
33
- function params() {
34
- const p = {};
35
- for (let i = 0; i < arguments.length; i++) {
36
- Object.assign(p, arguments[i]);
37
- }
38
- return p;
39
- }
40
-
41
- // Returns the event emitter for API calls, or the child process for CLI calls
42
- function testBackup(params, databaseName, outputStream, callback) {
43
- let gzip;
44
- let openssl;
45
- let backup;
46
- let backupStream = outputStream;
47
-
48
- // Configure API key if needed
49
- augmentParamsWithApiKey(params);
50
-
51
- // Pipe via compression if requested
52
- if (params.compression) {
53
- if (params.useApi) {
54
- // If use API use the Node zlib stream
55
- const zlib = require('zlib');
56
- backupStream = zlib.createGzip();
57
- backupStream.pipe(outputStream);
58
- } else {
59
- // Spawn process for gzip
60
- gzip = spawn('gzip', [], { stdio: ['pipe', 'pipe', 'inherit'] });
61
- // Pipe the streams as needed
62
- gzip.stdout.pipe(outputStream);
63
- backupStream = gzip.stdin;
64
- // register an error handler
65
- gzip.on('error', function(err) {
66
- callback(err);
67
- });
68
- }
69
- }
70
-
71
- // Pipe via encryption if requested
72
- if (params.encryption) {
73
- if (params.useApi) {
74
- // Currently only CLI support for testing encryption
75
- callback(new Error('Not implemented: cannot test encrypted API backups at this time.'));
76
- } else {
77
- // Spawn process for openssl
78
- openssl = spawn('openssl', ['aes-128-cbc', '-pass', 'pass:12345'], { stdio: ['pipe', 'pipe', 'inherit'] });
79
- // Pipe the streams as needed
80
- openssl.stdout.pipe(outputStream);
81
- backupStream = openssl.stdin;
82
- // register an error handler
83
- openssl.on('error', function(err) {
84
- callback(err);
85
- });
86
- }
87
- }
88
-
89
- let tail;
90
- if (params.abort) {
91
- // Create the log file for abort tests so we can tail it, other tests assert
92
- // the log file is usually created normally by the backup process.
93
- const f = fs.openSync(params.opts.log, 'w');
94
- fs.closeSync(f);
95
-
96
- // Use tail to watch the log file for a batch to be completed then abort
97
- tail = new Tail(params.opts.log, { useWatchFile: true, fsWatchOptions: { interval: 500 }, follow: false });
98
- tail.on('line', function(data) {
99
- const matches = data.match(/:d batch\d+/);
100
- if (matches !== null) {
101
- // Turn off the tail.
102
- tail.unwatch();
103
- // Abort the backup
104
- backupAbort(params.useApi, backup);
105
- }
106
- });
107
- tail.on('error', function(err) {
108
- callback(err);
109
- });
110
- }
111
-
112
- if (params.useApi) {
113
- backup = app.backup(dbUrl(process.env.COUCH_URL, databaseName), backupStream, params.opts, function(err, data) {
114
- if (err) {
115
- if (params.expectedBackupError) {
116
- try {
117
- assert.strictEqual(err.name, params.expectedBackupError.name, 'The backup should receive the expected error.');
118
- // Got the expected error, so wipe it for the callback
119
- err = null;
120
- } catch (caught) {
121
- // Update the error with the assertion failure
122
- err = caught;
123
- }
124
- }
125
- } else {
126
- console.log(data);
127
- }
128
- callback(err);
129
- });
130
- if (backup) {
131
- backup.on('error', function(err) {
132
- console.error(`Caught non-fatal error: ${err}`);
133
- });
134
- }
135
- } else {
136
- // Default to pipe, but will use 'inherit' if using --output (see params.opts.output)
137
- let destination = 'pipe';
138
-
139
- // Set up default args
140
- const args = ['./bin/couchbackup.bin.js', '--db', databaseName];
141
- if (params.opts) {
142
- if (params.opts.mode) {
143
- args.push('--mode');
144
- args.push(params.opts.mode);
145
- }
146
- if (params.opts.output) {
147
- args.push('--output');
148
- args.push(params.opts.output);
149
- destination = 'inherit';
150
- }
151
- if (params.opts.log) {
152
- args.push('--log');
153
- args.push(params.opts.log);
154
- }
155
- if (params.opts.resume) {
156
- args.push('--resume');
157
- args.push(params.opts.resume);
158
- }
159
- if (params.opts.bufferSize) {
160
- args.push('--buffer-size');
161
- args.push(params.opts.bufferSize);
162
- }
163
- if (params.opts.iamApiKey) {
164
- args.push('--iam-api-key');
165
- args.push(params.opts.iamApiKey);
166
- }
167
- }
168
-
169
- let count = 0;
170
- /**
171
- * In some tests we need to wait for both the backup process
172
- * and the outputStream to "close". If we callback from either
173
- * event the other might not be ready and lead to flaky tests.
174
- *
175
- * This function delegates to the callback but only after the
176
- * correct number of invocations. That is 2 when we have an
177
- * output stream or 1 otherwise, and only once in the case of
178
- * an error.
179
- */
180
- function gatingCallback(err) {
181
- count += 1;
182
- if (err) {
183
- if (count === 1) {
184
- callback(err);
185
- }
186
- } else {
187
- // Output stream case we want a callback from process
188
- // and the stream.
189
- if (outputStream && count === 2) {
190
- callback();
191
- } else if (!outputStream && count === 1) {
192
- callback();
193
- }
194
- }
195
- }
196
-
197
- // Note use spawn not fork for stdio options not supported with fork in Node 4.x
198
- backup = spawn('node', args, { stdio: ['ignore', destination, 'pipe'] })
199
- .on('error', function(err) {
200
- gatingCallback(err);
201
- })
202
- .on('close', function(code, signal) {
203
- console.log(`Backup process close ${code} ${signal}`);
204
- try {
205
- if (params.abort) {
206
- // The tail should be stopped when we match a line and abort, but if
207
- // something didn't work we need to make sure the tail is stopped
208
- tail.unwatch();
209
- // Assert that the process was aborted as expected
210
- assert.strictEqual(signal, 'SIGTERM', `The backup should have terminated with SIGTERM, but was ${signal}.`);
211
- } else if (params.expectedBackupError) {
212
- assert.strictEqual(code, params.expectedBackupError.code, `The backup exited with unexpected code ${code}.`);
213
- } else {
214
- assert.strictEqual(code, 0, `The backup should exit normally, got exit code ${code} and signal ${signal}.`);
215
- }
216
- gatingCallback();
217
- } catch (err) {
218
- gatingCallback(err);
219
- }
220
- });
221
- // Pipe the stdout to the supplied outputStream
222
- if (destination === 'pipe') {
223
- backup.stdout.pipe(backupStream);
224
- }
225
-
226
- // Forward the spawned process stderr (we don't use inherit because we want
227
- // to access this stream directly as well)
228
- backup.stderr.on('data', function(data) {
229
- console.error(`${data}`);
230
- });
231
-
232
- // Check for errors on the spawned processes
233
- if (gzip) {
234
- gzip.on('close', function(code) {
235
- try {
236
- assert.strictEqual(code, 0, `The compression should exit normally, got exit code ${code}.`);
237
- } catch (err) {
238
- gatingCallback(err);
239
- }
240
- });
241
- }
242
- if (openssl) {
243
- openssl.on('close', function(code) {
244
- try {
245
- assert.strictEqual(code, 0, `The encryption should exit normally, got exit code ${code}.`);
246
- } catch (err) {
247
- gatingCallback(err);
248
- }
249
- });
250
- }
251
- if (outputStream) {
252
- // Callback when the destination stream closes.
253
- outputStream.on('close', gatingCallback);
254
- } else if (!params.opts.output) {
255
- gatingCallback(new Error('Unexpected test without outputStream or output option.'));
256
- }
257
- }
258
- return backup;
259
- }
260
-
261
- function backupAbort(usingApi, backup) {
262
- setImmediate(function() {
263
- if (usingApi) {
264
- // Currently no way to abort an API backup
265
- console.error('UNSUPPORTED: cannot abort API backups at this time.');
266
- } else {
267
- backup.kill();
268
- }
269
- });
270
- }
271
-
272
- function testRestore(params, inputStream, databaseName, callback) {
273
- let restoreStream = inputStream;
274
-
275
- // Configure API key if needed
276
- augmentParamsWithApiKey(params);
277
-
278
- // Pipe via decompression if requested
279
- if (params.compression) {
280
- if (params.useApi) {
281
- // If use API use the Node zlib stream
282
- restoreStream = zlib.createGunzip();
283
- inputStream.pipe(restoreStream);
284
- } else {
285
- // Spawn process for gunzip
286
- const gunzip = spawn('gunzip', [], { stdio: ['pipe', 'pipe', 'inherit'] });
287
- // Pipe the streams as needed
288
- inputStream.pipe(gunzip.stdin);
289
- restoreStream = gunzip.stdout;
290
- }
291
- }
292
-
293
- // Pipe via decryption if requested
294
- if (params.encryption) {
295
- if (params.useApi) {
296
- callback(new Error('Not implemented: cannot test encrypted API backups at this time.'));
297
- } else {
298
- // Spawn process for openssl
299
- const dopenssl = spawn('openssl', ['aes-128-cbc', '-d', '-pass', 'pass:12345'], { stdio: ['pipe', 'pipe', 'inherit'] });
300
- // Pipe the streams as needed
301
- inputStream.pipe(dopenssl.stdin);
302
- restoreStream = dopenssl.stdout;
303
- }
304
- }
305
-
306
- if (params.useApi) {
307
- app.restore(restoreStream, dbUrl(process.env.COUCH_URL, databaseName), params.opts, function(err, data) {
308
- if (err) {
309
- if (params.expectedRestoreError) {
310
- try {
311
- assert.strictEqual(err.name, params.expectedRestoreError.name, 'The restore should receive the expected error.');
312
- err = null;
313
- } catch (caught) {
314
- err = caught;
315
- }
316
- }
317
- } else {
318
- console.log(data);
319
- }
320
- callback(err);
321
- }).on('error', function(err) {
322
- console.error(`Caught non-fatal error: ${err}`);
323
- });
324
- } else {
325
- // Set up default args
326
- const args = ['./bin/couchrestore.bin.js', '--db', databaseName];
327
- if (params.opts) {
328
- if (params.opts.bufferSize) {
329
- args.push('--buffer-size');
330
- args.push(params.opts.bufferSize);
331
- }
332
- if (params.opts.parallelism) {
333
- args.push('--parallelism');
334
- args.push(params.opts.parallelism);
335
- }
336
- if (params.opts.requestTimeout) {
337
- args.push('--request-timeout');
338
- args.push(params.opts.requestTimeout);
339
- }
340
- if (params.opts.iamApiKey) {
341
- args.push('--iam-api-key');
342
- args.push(params.opts.iamApiKey);
343
- }
344
- }
345
-
346
- // Note use spawn not fork for stdio options not supported with fork in Node 4.x
347
- const restore = spawn('node', args, { stdio: ['pipe', 'inherit', 'inherit'] });
348
- // Pipe to write the readable inputStream into stdin
349
- restoreStream.pipe(restore.stdin);
350
- restore.stdin.on('error', function(err) {
351
- // Suppress errors that might arise from piping of input streams
352
- // from the test process to the child process (this appears to be handled
353
- // gracefully in the shell)
354
- console.error(`Test stream error code ${err.code}`);
355
- });
356
- restore.on('close', function(code) {
357
- try {
358
- if (params.expectedRestoreError) {
359
- assert.strictEqual(code, params.expectedRestoreError.code, `The backup exited with unexpected code ${code}.`);
360
- } else {
361
- assert.strictEqual(code, 0, `The restore should exit normally, got exit code ${code}`);
362
- }
363
- callback();
364
- } catch (err) {
365
- callback(err);
366
- }
367
- });
368
- restore.on('error', function(err) {
369
- callback(err);
370
- });
371
- }
372
- }
373
-
374
- // Serial backup and restore via a file on disk
375
- function testBackupAndRestoreViaFile(params, srcDb, backupFile, targetDb, callback) {
376
- testBackupToFile(params, srcDb, backupFile, function(err) {
377
- if (err) {
378
- callback(err);
379
- } else {
380
- testRestoreFromFile(params, backupFile, targetDb, function(err) {
381
- if (!err) {
382
- dbCompare(srcDb, targetDb, callback);
383
- } else {
384
- callback(err);
385
- }
386
- });
387
- }
388
- });
389
- }
390
-
391
- function testBackupToFile(params, srcDb, backupFile, callback, processCallback) {
392
- // Open the file for appending if this is a resume
393
- const output = fs.createWriteStream(backupFile, { flags: (params.opts && params.opts.resume) ? 'a' : 'w' });
394
- output.on('open', function() {
395
- const backupProcess = testBackup(params, srcDb, output, function(err) {
396
- if (err) {
397
- callback(err);
398
- } else {
399
- callback();
400
- }
401
- });
402
- if (processCallback) {
403
- processCallback(backupProcess);
404
- }
405
- });
406
- }
407
-
408
- function testRestoreFromFile(params, backupFile, targetDb, callback) {
409
- const input = fs.createReadStream(backupFile);
410
- input.on('open', function() {
411
- testRestore(params, input, targetDb, function(err) {
412
- if (err) {
413
- callback(err);
414
- } else {
415
- callback();
416
- }
417
- });
418
- });
419
- }
420
-
421
- function testDirectBackupAndRestore(params, srcDb, targetDb, callback) {
422
- // Allow a 64 MB highWaterMark for the passthrough during testing
423
- const passthrough = new stream.PassThrough({ highWaterMark: 67108864 });
424
- testBackupAndRestore(params, srcDb, passthrough, passthrough, targetDb, callback);
425
- }
426
-
427
- function testBackupAndRestore(params, srcDb, backupStream, restoreStream, targetDb, callback) {
428
- testBackup(params, srcDb, backupStream, function(err) {
429
- if (err) {
430
- callback(err);
431
- }
432
- });
433
- testRestore(params, restoreStream, targetDb, function(err) {
434
- if (err) {
435
- callback(err);
436
- } else {
437
- dbCompare(srcDb, targetDb, callback);
438
- }
439
- });
440
- }
441
-
442
- function assertResumedBackup(params, resumedBackup, restoreCallback) {
443
- // Validate that the resume backup didn't need to write all the docs
444
- if (params.useApi) {
445
- resumedBackup.once('finished', function(summary) {
446
- assertWrittenFewerThan(summary.total, params.exclusiveMaxExpected, restoreCallback);
447
- });
448
- } else {
449
- // For the CLI case we need to see the output because we don't have
450
- // the finished event.
451
- const listener = function(data) {
452
- const matches = data.toString().match(/.*Finished - Total document revisions written: (\d+).*/);
453
- if (matches !== null) {
454
- assertWrittenFewerThan(matches[1], params.exclusiveMaxExpected, restoreCallback);
455
- resumedBackup.stderr.removeListener('data', listener);
456
- }
457
- };
458
- resumedBackup.stderr.on('data', listener);
459
- }
460
- }
461
-
462
- function testBackupAbortResumeRestore(params, srcDb, backupFile, targetDb, callback) {
463
- const restore = function(err) {
464
- if (err) {
465
- callback(err);
466
- } else {
467
- testRestoreFromFile(params, backupFile, targetDb, function(err) {
468
- if (err) {
469
- callback(err);
470
- } else {
471
- dbCompare(srcDb, targetDb, callback);
472
- }
473
- });
474
- }
475
- };
476
-
477
- const resume = function(err) {
478
- if (err) {
479
- callback(err);
480
- }
481
- // Remove the abort parameter and add the resume parameter
482
- delete params.abort;
483
- params.opts.resume = true;
484
-
485
- // Resume backup and restore to validate it was successful.
486
- if (params.opts && params.opts.output) {
487
- const resumedBackup = testBackup(params, srcDb, null, function(err) {
488
- if (err) {
489
- callback(err);
490
- }
491
- });
492
- assertResumedBackup(params, resumedBackup, restore);
493
- } else {
494
- testBackupToFile(params, srcDb, backupFile, function(err) {
495
- if (err) {
496
- callback(err);
497
- }
498
- },
499
- function(backupProcess) {
500
- assertResumedBackup(params, backupProcess, restore);
501
- });
502
- }
503
- };
504
-
505
- if (params.opts && params.opts.output) {
506
- testBackup(params, srcDb, null, resume);
507
- } else {
508
- testBackupToFile(params, srcDb, backupFile, resume);
509
- }
510
- }
511
-
512
- function dbCompare(db1Name, db2Name, callback) {
513
- const client = request.client(process.env.COUCH_BACKEND_URL, {});
514
- compare.compare(db1Name, db2Name, client.service)
515
- .then(result => {
516
- try {
517
- assert.strictEqual(result, true, 'The database comparison should succeed, but failed');
518
- callback();
519
- } catch (err) {
520
- callback(err);
521
- }
522
- })
523
- .catch(err => callback(err));
524
- }
525
-
526
- function sortByIdThenRev(o1, o2) {
527
- if (o1._id < o2._id) return -1;
528
- if (o1._id > o2._id) return 1;
529
- if (o1._rev < o2._rev) return -1;
530
- if (o1._rev > o2._rev) return 1;
531
- return 0;
532
- }
533
-
534
- function readSortAndDeepEqual(actualContentPath, expectedContentPath, callback) {
535
- const backupContent = JSON.parse(fs.readFileSync(actualContentPath, 'utf8'));
536
- const expectedContent = JSON.parse(fs.readFileSync(expectedContentPath, 'utf8'));
537
- // Array order of the docs is important for equality, but not for backup
538
- backupContent.sort(sortByIdThenRev);
539
- expectedContent.sort(sortByIdThenRev);
540
- // Assert that the backup matches the expected
541
- try {
542
- assert.deepStrictEqual(backupContent, expectedContent);
543
- callback();
544
- } catch (err) {
545
- callback(err);
546
- }
547
- }
548
-
549
- function setTimeout(context, timeout) {
550
- // Increase timeout using TEST_TIMEOUT_MULTIPLIER
551
- const multiplier = (typeof process.env.TEST_TIMEOUT_MULTIPLIER !== 'undefined') ? parseInt(process.env.TEST_TIMEOUT_MULTIPLIER) : 1;
552
- timeout *= multiplier;
553
- // Set the mocha timeout
554
- context.timeout(timeout * 1000);
555
- }
556
-
557
- function assertGzipFile(path, callback) {
558
- try {
559
- // 1f 8b is the gzip magic number
560
- const expectedBytes = Buffer.from([0x1f, 0x8b]);
561
- const buffer = Buffer.alloc(2);
562
- const fd = fs.openSync(path, 'r');
563
- // Read the first two bytes
564
- fs.readSync(fd, buffer, 0, 2, 0);
565
- fs.closeSync(fd);
566
- // Assert the magic number corresponds to gz extension
567
- assert.deepStrictEqual(buffer, expectedBytes, 'The backup file should be gz compressed.');
568
- callback();
569
- } catch (err) {
570
- callback(err);
571
- }
572
- }
573
-
574
- function assertEncryptedFile(path, callback) {
575
- try {
576
- // Openssl encrypted files start with Salted
577
- const expectedBytes = Buffer.from('Salted');
578
- const buffer = Buffer.alloc(6);
579
- const fd = fs.openSync(path, 'r');
580
- // Read the first six bytes
581
- fs.readSync(fd, buffer, 0, 6, 0);
582
- fs.closeSync(fd);
583
- // Assert first 6 characters of the file are "Salted"
584
- assert.deepStrictEqual(buffer, expectedBytes, 'The backup file should be encrypted.');
585
- callback();
586
- } catch (err) {
587
- callback(err);
588
- }
589
- }
590
-
591
- function assertWrittenFewerThan(total, number, callback) {
592
- try {
593
- assert(total < number && total > 0, `Saw ${total} but expected between 1 and ${number - 1} documents for the resumed backup.`);
594
- callback();
595
- } catch (err) {
596
- callback(err);
597
- }
598
- }
599
-
600
- function augmentParamsWithApiKey(params) {
601
- if (process.env.COUCHBACKUP_TEST_IAM_API_KEY) {
602
- if (!params.opts) {
603
- params.opts = {};
604
- }
605
- params.opts.iamApiKey = process.env.COUCHBACKUP_TEST_IAM_API_KEY;
606
- params.opts.iamTokenUrl = process.env.CLOUDANT_IAM_TOKEN_URL;
607
- }
608
- }
609
-
610
- module.exports = {
611
- scenario,
612
- p: params,
613
- setTimeout,
614
- dbCompare,
615
- readSortAndDeepEqual,
616
- assertGzipFile,
617
- assertEncryptedFile,
618
- testBackup,
619
- testRestore,
620
- testDirectBackupAndRestore,
621
- testBackupToFile,
622
- testRestoreFromFile,
623
- testBackupAndRestoreViaFile,
624
- testBackupAbortResumeRestore
625
- };
1
+ <testsuites name="test">
2
+ <testsuite name="#unit Validate arguments" tests="33" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:13:26" time="0.119">
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.028">
6
+ </testcase>
7
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid (no host) URL" time="0">
8
+ </testcase>
9
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid (no protocol) URL" time="0.001">
10
+ </testcase>
11
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid (wrong protocol) URL" time="0.001">
12
+ </testcase>
13
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid (no path) URL" time="0.001">
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.001">
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">
26
+ </testcase>
27
+ <testcase classname="test.#unit Validate arguments" name="returns no error for valid log type" time="0.007">
28
+ </testcase>
29
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid mode type" time="0.001">
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.006">
34
+ </testcase>
35
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid output type" time="0">
36
+ </testcase>
37
+ <testcase classname="test.#unit Validate arguments" name="returns no error for valid output type" time="0.006">
38
+ </testcase>
39
+ <testcase classname="test.#unit Validate arguments" name="returns error for invalid parallelism type" time="0">
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.004">
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">
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">
56
+ </testcase>
57
+ <testcase classname="test.#unit Validate arguments" name="returns no error for valid resume type" time="0.004">
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.001">
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-05-03T16:13:26" time="4.511">
71
+ <testcase classname="test.Basic backup and restore using API" name="should backup animaldb to a file correctly" time="0.948">
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.843">
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.626">
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-05-03T16:13:30" time="11.469">
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.721">
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.395">
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.58">
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-05-03T16:13:42" time="5.474">
102
+ <testcase classname="test.Basic backup and restore using CLI" name="should backup animaldb to a file correctly" time="1.371">
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.256">
107
+ </testcase>
108
+ <testcase classname="test.Basic backup and restore using CLI" name="should execute a shallow mode backup successfully" time="1.066">
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-05-03T16:13:47" time="14.57">
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.688">
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.461">
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.622">
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-05-03T16:14:02" time="6.504">
128
+ <testcase classname="test.Compression tests using API" name="should backup animaldb to a compressed file" time="0.881">
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.686">
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.158">
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-05-03T16:14:08" time="8.546">
144
+ <testcase classname="test.Compression tests using CLI" name="should backup animaldb to a compressed file" time="1.366">
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.673">
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.73">
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-05-03T16:14:17" time="335.319">
158
+ <testcase classname="test.End to end backup and restore using API" name="should backup and restore animaldb" time="2.171">
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="332.395">
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-05-03T16:19:52" time="546.479">
170
+ <testcase classname="test.End to end backup and restore using CLI" name="should backup and restore animaldb" time="2.715">
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="543.003">
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-05-03T16:28:59" time="4.002">
180
+ <testcase classname="test.Encryption tests" name="should backup and restore animaldb via an encrypted file" time="3.745">
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-05-03T16:29:03" time="0.268">
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-05-03T16:29:03" time="2.284">
190
+ <testcase classname="test.Event tests" name="should get a finished event when using stdout" time="0.895">
191
+ </testcase>
192
+ <testcase classname="test.Event tests" name="should get a finished event when using file output" time="0.873">
193
+ </testcase>
194
+ </testsuite>
195
+ <testsuite name="Resume tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:29:05" time="5.21">
196
+ <testcase classname="test.Resume tests using API" name="should create a log file" time="0.87">
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.798">
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.771">
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-05-03T16:29:10" time="6.875">
210
+ <testcase classname="test.Resume tests using CLI" name="should create a log file" time="1.577">
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.278">
215
+ </testcase>
216
+ <testcase classname="test.Resume tests using CLI" name="should restore resumed animaldb with blank line to a database correctly" time="2.24">
217
+ </testcase>
218
+ </testsuite>
219
+ <testsuite name="Resume tests" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:29:17" time="34.234">
220
+ <testcase classname="test.Resume tests" name="should correctly backup and restore backup10m" time="16.723">
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.995">
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-05-03T16:29:52" time="0.005">
232
+ <testcase classname="test.#unit Configuration" name="respects the COUCH_URL env variable" time="0">
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">
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.001">
255
+ </testcase>
256
+ </testsuite>
257
+ <testsuite name="#unit Fatal errors using API for backup" tests="10" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:29:52" time="0.084">
258
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate when DB does not exist" time="0.008">
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.004">
263
+ </testcase>
264
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate on Forbidden no _reader" time="0.004">
265
+ </testcase>
266
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate on _bulk_get HTTPFatalError" time="0.016">
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.001">
271
+ </testcase>
272
+ <testcase classname="test.#unit Fatal errors using API for backup" name="should terminate on IncompleteChangesInLogFile" time="0.011">
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.012">
277
+ </testcase>
278
+ </testsuite>
279
+ <testsuite name="#unit Fatal errors using API for restore" tests="9" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:29:52" time="0.151">
280
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on Unauthorized db existence check" time="0.008">
281
+ </testcase>
282
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on Forbidden no _writer" time="0.013">
283
+ </testcase>
284
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on RestoreDatabaseNotFound" time="0.006">
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.006">
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.004">
289
+ </testcase>
290
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on _bulk_docs HTTPFatalError" time="0.009">
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.041">
293
+ </testcase>
294
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on _bulk_docs HTTPFatalError large stream" time="0.042">
295
+ </testcase>
296
+ <testcase classname="test.#unit Fatal errors using API for restore" name="should terminate on multiple _bulk_docs HTTPFatalError" time="0.013">
297
+ </testcase>
298
+ </testsuite>
299
+ <testsuite name="#unit Fatal errors using CLI for backup" tests="10" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:29:52" time="4.257">
300
+ <testcase classname="test.#unit Fatal errors using CLI for backup" name="should terminate when DB does not exist" time="0.445">
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.455">
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.405">
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.405">
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.48">
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.4">
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.375">
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.434">
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.426">
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.419">
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-05-03T16:29:56" time="3.968">
342
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on Unauthorized db existence check" time="0.391">
343
+ </testcase>
344
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on Forbidden no _writer" time="0.476">
345
+ </testcase>
346
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on RestoreDatabaseNotFound" time="0.439">
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.379">
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.424">
351
+ </testcase>
352
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on _bulk_docs HTTPFatalError" time="0.431">
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.512">
355
+ </testcase>
356
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on _bulk_docs HTTPFatalError large stream" time="0.472">
357
+ </testcase>
358
+ <testcase classname="test.#unit Fatal errors using CLI for restore" name="should terminate on multiple _bulk_docs HTTPFatalError" time="0.433">
359
+ </testcase>
360
+ </testsuite>
361
+ <testsuite name="#unit Fetching batches from a log file" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:30:00" time="0.003">
362
+ <testcase classname="test.#unit Fetching batches from a log file" name="should fetch multiple batches correctly" time="0.002">
363
+ </testcase>
364
+ </testsuite>
365
+ <testsuite name="#unit Fetching summary from the log file" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:30:00" time="0.002">
366
+ <testcase classname="test.#unit Fetching summary from the log file" name="should fetch a summary correctly" time="0.001">
367
+ </testcase>
368
+ </testsuite>
369
+ <testsuite name="#unit Default parameters Backup command-line" tests="23" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:30:00" time="0.045">
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.014">
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.001">
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.002">
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.001">
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.001">
399
+ </testcase>
400
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --request-timeout command-line parameter" time="0.001">
401
+ </testcase>
402
+ <testcase classname="test.#unit Default parameters Backup command-line" name="respects the backup --iam-api-key command-line parameter" time="0.001">
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-05-03T16:30:00" time="0.016">
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.001">
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.001">
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.001">
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.001">
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">
431
+ </testcase>
432
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the restore --url command-line parameter" time="0">
433
+ </testcase>
434
+ <testcase classname="test.#unit Default parameters Restore command-line" name="respects the restore --db command-line parameter" time="0">
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">
445
+ </testcase>
446
+ </testsuite>
447
+ <testsuite name="#unit Check request headers" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:30:00" time="0.005">
448
+ <testcase classname="test.#unit Check request headers" name="should have a couchbackup user-agent" time="0.005">
449
+ </testcase>
450
+ </testsuite>
451
+ <testsuite name="#unit Check request response error callback" tests="8" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:30:00" time="10.593">
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.016">
455
+ </testcase>
456
+ <testcase classname="test.#unit Check request response error callback" name="should callback with error after 3 POST 503 responses" time="2.017">
457
+ </testcase>
458
+ <testcase classname="test.#unit Check request response error callback" name="should callback with error after 3 429 responses" time="2.019">
459
+ </testcase>
460
+ <testcase classname="test.#unit Check request response error callback" name="should callback with fatal error for 404 response" time="0.005">
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.013">
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.007">
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-05-03T16:30:11" time="0.009">
470
+ <testcase classname="test.#unit Check request response error callback #unit Check credentials" name="should properly decode username and password" time="0.009">
471
+ </testcase>
472
+ </testsuite>
473
+ <testsuite name="#unit Perform backup using shallow backup" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:30:11" time="0.552">
474
+ <testcase classname="test.#unit Perform backup using shallow backup" name="should perform a shallow backup" time="0.016">
475
+ </testcase>
476
+ <testcase classname="test.#unit Perform backup using shallow backup" name="should perform a shallow backup with transient error" time="0.521">
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.012">
479
+ </testcase>
480
+ </testsuite>
481
+ <testsuite name="#unit Check spool changes" tests="4" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:30:11" time="15.914">
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.013">
485
+ </testcase>
486
+ <testcase classname="test.#unit Check spool changes" name="should keep collecting changes" time="2.479">
487
+ </testcase>
488
+ <testcase classname="test.#unit Check spool changes" name="should keep collecting sparse changes" time="9.408">
489
+ </testcase>
490
+ </testsuite>
491
+ <testsuite name="Longer spool changes checks" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:30:27" time="54.443">
492
+ <testcase classname="test.Longer spool changes checks" name="#slow should keep collecting changes (25M)" time="54.18">
493
+ </testcase>
494
+ </testsuite>
495
+ <testsuite name="#unit Check database restore writer" tests="6" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:31:22" 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.033">
501
+ </testcase>
502
+ <testcase classname="test.#unit Check database restore writer" name="should fail after 3 transient errors" time="2.013">
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>