@cloudant/couchbackup 2.9.8-SNAPSHOT.94 → 2.9.9-SNAPSHOT.100

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 (379) 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-10.pb +2 -0
  5. package/.scannerwork/scanner-report/changesets-36.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-37.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-38.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-39.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-40.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-41.pb +1 -0
  11. package/.scannerwork/scanner-report/changesets-42.pb +1 -0
  12. package/.scannerwork/scanner-report/changesets-48.pb +1 -0
  13. package/.scannerwork/scanner-report/changesets-51.pb +1 -0
  14. package/.scannerwork/scanner-report/changesets-52.pb +1 -0
  15. package/.scannerwork/scanner-report/changesets-67.pb +1 -0
  16. package/.scannerwork/scanner-report/changesets-7.pb +1 -0
  17. package/.scannerwork/scanner-report/component-1.pb +2 -1
  18. package/.scannerwork/scanner-report/component-10.pb +2 -0
  19. package/.scannerwork/scanner-report/component-2.pb +1 -1
  20. package/.scannerwork/scanner-report/component-22.pb +1 -1
  21. package/.scannerwork/scanner-report/component-23.pb +1 -1
  22. package/.scannerwork/scanner-report/component-24.pb +1 -1
  23. package/.scannerwork/scanner-report/component-25.pb +1 -1
  24. package/.scannerwork/scanner-report/component-26.pb +1 -1
  25. package/.scannerwork/scanner-report/component-27.pb +1 -1
  26. package/.scannerwork/scanner-report/component-28.pb +1 -1
  27. package/.scannerwork/scanner-report/component-29.pb +1 -1
  28. package/.scannerwork/scanner-report/component-30.pb +1 -1
  29. package/.scannerwork/scanner-report/component-31.pb +1 -1
  30. package/.scannerwork/scanner-report/component-32.pb +1 -1
  31. package/.scannerwork/scanner-report/component-33.pb +1 -1
  32. package/.scannerwork/scanner-report/component-34.pb +1 -1
  33. package/.scannerwork/scanner-report/component-35.pb +1 -1
  34. package/.scannerwork/scanner-report/component-36.pb +1 -0
  35. package/.scannerwork/scanner-report/component-37.pb +1 -1
  36. package/.scannerwork/scanner-report/component-38.pb +1 -1
  37. package/.scannerwork/scanner-report/component-39.pb +1 -0
  38. package/.scannerwork/scanner-report/component-40.pb +1 -1
  39. package/.scannerwork/scanner-report/component-41.pb +1 -0
  40. package/.scannerwork/scanner-report/component-42.pb +1 -0
  41. package/.scannerwork/scanner-report/component-48.pb +1 -0
  42. package/.scannerwork/scanner-report/component-49.pb +1 -1
  43. package/.scannerwork/scanner-report/component-5.pb +1 -1
  44. package/.scannerwork/scanner-report/component-50.pb +1 -1
  45. package/.scannerwork/scanner-report/component-51.pb +1 -1
  46. package/.scannerwork/scanner-report/component-52.pb +1 -0
  47. package/.scannerwork/scanner-report/component-53.pb +1 -1
  48. package/.scannerwork/scanner-report/component-54.pb +1 -1
  49. package/.scannerwork/scanner-report/component-55.pb +1 -1
  50. package/.scannerwork/scanner-report/component-56.pb +1 -1
  51. package/.scannerwork/scanner-report/component-57.pb +1 -1
  52. package/.scannerwork/scanner-report/component-58.pb +1 -1
  53. package/.scannerwork/scanner-report/component-59.pb +1 -1
  54. package/.scannerwork/scanner-report/component-6.pb +1 -1
  55. package/.scannerwork/scanner-report/component-61.pb +1 -1
  56. package/.scannerwork/scanner-report/component-62.pb +1 -1
  57. package/.scannerwork/scanner-report/component-63.pb +1 -1
  58. package/.scannerwork/scanner-report/component-64.pb +1 -1
  59. package/.scannerwork/scanner-report/component-66.pb +1 -1
  60. package/.scannerwork/scanner-report/component-67.pb +1 -1
  61. package/.scannerwork/scanner-report/component-7.pb +1 -0
  62. package/.scannerwork/scanner-report/component-9.pb +1 -0
  63. package/.scannerwork/scanner-report/coverages-10.pb +0 -0
  64. package/.scannerwork/scanner-report/coverages-22.pb +0 -0
  65. package/.scannerwork/scanner-report/coverages-23.pb +0 -0
  66. package/.scannerwork/scanner-report/coverages-24.pb +0 -0
  67. package/.scannerwork/scanner-report/coverages-25.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-26.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-27.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-28.pb +0 -0
  71. package/.scannerwork/scanner-report/coverages-29.pb +0 -0
  72. package/.scannerwork/scanner-report/coverages-30.pb +0 -0
  73. package/.scannerwork/scanner-report/coverages-31.pb +0 -0
  74. package/.scannerwork/scanner-report/coverages-32.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-33.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-34.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-35.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-36.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-38.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-39.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-40.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-42.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-48.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-49.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-50.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-53.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-54.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-55.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-61.pb +0 -0
  95. package/.scannerwork/scanner-report/coverages-62.pb +0 -0
  96. package/.scannerwork/scanner-report/coverages-63.pb +0 -0
  97. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  98. package/.scannerwork/scanner-report/coverages-7.pb +0 -0
  99. package/.scannerwork/scanner-report/duplications-22.pb +3 -0
  100. package/.scannerwork/scanner-report/duplications-25.pb +0 -2
  101. package/.scannerwork/scanner-report/duplications-26.pb +2 -0
  102. package/.scannerwork/scanner-report/duplications-28.pb +3 -0
  103. package/.scannerwork/scanner-report/duplications-29.pb +2 -0
  104. package/.scannerwork/scanner-report/duplications-32.pb +0 -3
  105. package/.scannerwork/scanner-report/duplications-34.pb +0 -2
  106. package/.scannerwork/scanner-report/duplications-42.pb +2 -0
  107. package/.scannerwork/scanner-report/duplications-48.pb +2 -0
  108. package/.scannerwork/scanner-report/duplications-49.pb +1 -1
  109. package/.scannerwork/scanner-report/duplications-50.pb +0 -2
  110. package/.scannerwork/scanner-report/duplications-55.pb +2 -0
  111. package/.scannerwork/scanner-report/duplications-60.pb +1 -1
  112. package/.scannerwork/scanner-report/duplications-62.pb +0 -2
  113. package/.scannerwork/scanner-report/measures-10.pb +0 -0
  114. package/.scannerwork/scanner-report/measures-2.pb +0 -0
  115. package/.scannerwork/scanner-report/measures-22.pb +0 -0
  116. package/.scannerwork/scanner-report/measures-23.pb +0 -0
  117. package/.scannerwork/scanner-report/measures-24.pb +0 -0
  118. package/.scannerwork/scanner-report/measures-25.pb +0 -0
  119. package/.scannerwork/scanner-report/measures-26.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-27.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-28.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-29.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-30.pb +0 -0
  124. package/.scannerwork/scanner-report/measures-31.pb +0 -0
  125. package/.scannerwork/scanner-report/measures-32.pb +0 -0
  126. package/.scannerwork/scanner-report/measures-33.pb +0 -0
  127. package/.scannerwork/scanner-report/measures-34.pb +0 -0
  128. package/.scannerwork/scanner-report/measures-35.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-36.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-37.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-38.pb +0 -0
  132. package/.scannerwork/scanner-report/measures-39.pb +0 -0
  133. package/.scannerwork/scanner-report/measures-40.pb +0 -0
  134. package/.scannerwork/scanner-report/measures-42.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-48.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-49.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-5.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-50.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-56.pb +0 -0
  145. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  146. package/.scannerwork/scanner-report/measures-58.pb +0 -0
  147. package/.scannerwork/scanner-report/measures-59.pb +0 -0
  148. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  149. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  150. package/.scannerwork/scanner-report/measures-62.pb +0 -0
  151. package/.scannerwork/scanner-report/measures-63.pb +0 -0
  152. package/.scannerwork/scanner-report/measures-64.pb +0 -0
  153. package/.scannerwork/scanner-report/measures-66.pb +0 -0
  154. package/.scannerwork/scanner-report/measures-67.pb +0 -0
  155. package/.scannerwork/scanner-report/measures-7.pb +0 -0
  156. package/.scannerwork/scanner-report/measures-9.pb +0 -0
  157. package/.scannerwork/scanner-report/metadata.pb +0 -0
  158. package/.scannerwork/scanner-report/{source-19.txt → source-10.txt} +6 -13
  159. package/.scannerwork/scanner-report/source-2.txt +167 -147
  160. package/.scannerwork/scanner-report/source-22.txt +86 -123
  161. package/.scannerwork/scanner-report/source-23.txt +73 -15
  162. package/.scannerwork/scanner-report/source-24.txt +14 -15
  163. package/.scannerwork/scanner-report/source-25.txt +19 -128
  164. package/.scannerwork/scanner-report/source-26.txt +262 -37
  165. package/.scannerwork/scanner-report/source-27.txt +124 -17
  166. package/.scannerwork/scanner-report/source-28.txt +112 -81
  167. package/.scannerwork/scanner-report/source-29.txt +121 -118
  168. package/.scannerwork/scanner-report/source-30.txt +44 -49
  169. package/.scannerwork/scanner-report/source-31.txt +60 -585
  170. package/.scannerwork/scanner-report/source-32.txt +13 -98
  171. package/.scannerwork/scanner-report/source-33.txt +129 -11
  172. package/.scannerwork/scanner-report/source-34.txt +344 -203
  173. package/.scannerwork/scanner-report/source-35.txt +29 -96
  174. package/.scannerwork/scanner-report/source-36.txt +68 -0
  175. package/.scannerwork/scanner-report/source-37.txt +36 -509
  176. package/.scannerwork/scanner-report/source-38.txt +68 -167
  177. package/.scannerwork/scanner-report/source-39.txt +156 -0
  178. package/.scannerwork/scanner-report/source-40.txt +625 -509
  179. package/.scannerwork/scanner-report/source-42.txt +225 -0
  180. package/.scannerwork/scanner-report/source-48.txt +175 -0
  181. package/.scannerwork/scanner-report/source-49.txt +64 -49
  182. package/.scannerwork/scanner-report/source-5.txt +509 -131
  183. package/.scannerwork/scanner-report/source-50.txt +59 -172
  184. package/.scannerwork/scanner-report/source-51.txt +56 -509
  185. package/.scannerwork/scanner-report/source-52.txt +54 -0
  186. package/.scannerwork/scanner-report/source-53.txt +20 -138
  187. package/.scannerwork/scanner-report/source-54.txt +258 -23
  188. package/.scannerwork/scanner-report/source-55.txt +48 -151
  189. package/.scannerwork/scanner-report/source-56.txt +21 -109
  190. package/.scannerwork/scanner-report/source-57.txt +98 -21
  191. package/.scannerwork/scanner-report/source-58.txt +61 -35
  192. package/.scannerwork/scanner-report/source-59.txt +81 -88
  193. package/.scannerwork/scanner-report/source-6.txt +509 -293
  194. package/.scannerwork/scanner-report/source-61.txt +140 -56
  195. package/.scannerwork/scanner-report/source-62.txt +113 -59
  196. package/.scannerwork/scanner-report/source-63.txt +88 -81
  197. package/.scannerwork/scanner-report/source-64.txt +153 -93
  198. package/.scannerwork/scanner-report/source-66.txt +509 -281
  199. package/.scannerwork/scanner-report/source-67.txt +418 -509
  200. package/.scannerwork/scanner-report/source-7.txt +114 -0
  201. package/.scannerwork/scanner-report/source-9.txt +509 -0
  202. package/.scannerwork/scanner-report/symbols-10.pb +9 -0
  203. package/.scannerwork/scanner-report/symbols-22.pb +75 -110
  204. package/.scannerwork/scanner-report/symbols-23.pb +60 -10
  205. package/.scannerwork/scanner-report/symbols-24.pb +17 -14
  206. package/.scannerwork/scanner-report/symbols-25.pb +14 -102
  207. package/.scannerwork/scanner-report/symbols-26.pb +485 -35
  208. package/.scannerwork/scanner-report/symbols-27.pb +116 -17
  209. package/.scannerwork/scanner-report/symbols-28.pb +97 -69
  210. package/.scannerwork/scanner-report/symbols-29.pb +97 -111
  211. package/.scannerwork/scanner-report/symbols-30.pb +42 -44
  212. package/.scannerwork/scanner-report/symbols-31.pb +68 -1253
  213. package/.scannerwork/scanner-report/symbols-32.pb +9 -76
  214. package/.scannerwork/scanner-report/symbols-33.pb +85 -9
  215. package/.scannerwork/scanner-report/symbols-34.pb +441 -365
  216. package/.scannerwork/scanner-report/symbols-35.pb +26 -27
  217. package/.scannerwork/scanner-report/symbols-36.pb +36 -0
  218. package/.scannerwork/scanner-report/symbols-38.pb +45 -0
  219. package/.scannerwork/scanner-report/symbols-39.pb +112 -0
  220. package/.scannerwork/scanner-report/symbols-40.pb +1254 -0
  221. package/.scannerwork/scanner-report/symbols-42.pb +418 -0
  222. package/.scannerwork/scanner-report/symbols-48.pb +153 -0
  223. package/.scannerwork/scanner-report/symbols-49.pb +176 -149
  224. package/.scannerwork/scanner-report/symbols-50.pb +30 -180
  225. package/.scannerwork/scanner-report/symbols-52.pb +15 -0
  226. package/.scannerwork/scanner-report/symbols-53.pb +20 -126
  227. package/.scannerwork/scanner-report/symbols-54.pb +354 -20
  228. package/.scannerwork/scanner-report/symbols-55.pb +41 -143
  229. package/.scannerwork/scanner-report/symbols-56.pb +18 -33
  230. package/.scannerwork/scanner-report/symbols-57.pb +30 -18
  231. package/.scannerwork/scanner-report/symbols-58.pb +45 -14
  232. package/.scannerwork/scanner-report/symbols-59.pb +41 -58
  233. package/.scannerwork/scanner-report/symbols-61.pb +122 -42
  234. package/.scannerwork/scanner-report/symbols-62.pb +33 -42
  235. package/.scannerwork/scanner-report/symbols-63.pb +58 -41
  236. package/.scannerwork/scanner-report/symbols-64.pb +144 -30
  237. package/.scannerwork/scanner-report/symbols-7.pb +28 -0
  238. package/.scannerwork/scanner-report/syntax-highlightings-10.pb +48 -0
  239. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +938 -180
  240. package/.scannerwork/scanner-report/syntax-highlightings-22.pb +118 -183
  241. package/.scannerwork/scanner-report/syntax-highlightings-23.pb +74 -14
  242. package/.scannerwork/scanner-report/syntax-highlightings-24.pb +28 -19
  243. package/.scannerwork/scanner-report/syntax-highlightings-25.pb +21 -194
  244. package/.scannerwork/scanner-report/syntax-highlightings-26.pb +622 -58
  245. package/.scannerwork/scanner-report/syntax-highlightings-27.pb +98 -27
  246. package/.scannerwork/scanner-report/syntax-highlightings-28.pb +147 -70
  247. package/.scannerwork/scanner-report/syntax-highlightings-29.pb +189 -96
  248. package/.scannerwork/scanner-report/syntax-highlightings-30.pb +47 -75
  249. package/.scannerwork/scanner-report/syntax-highlightings-31.pb +64 -846
  250. package/.scannerwork/scanner-report/syntax-highlightings-32.pb +11 -119
  251. package/.scannerwork/scanner-report/syntax-highlightings-33.pb +158 -15
  252. package/.scannerwork/scanner-report/syntax-highlightings-34.pb +510 -211
  253. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +33 -103
  254. package/.scannerwork/scanner-report/syntax-highlightings-36.pb +95 -0
  255. package/.scannerwork/scanner-report/syntax-highlightings-37.pb +48 -3737
  256. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +99 -938
  257. package/.scannerwork/scanner-report/syntax-highlightings-39.pb +223 -0
  258. package/.scannerwork/scanner-report/syntax-highlightings-40.pb +536 -3396
  259. package/.scannerwork/scanner-report/syntax-highlightings-42.pb +331 -0
  260. package/.scannerwork/scanner-report/syntax-highlightings-48.pb +214 -0
  261. package/.scannerwork/scanner-report/syntax-highlightings-49.pb +138 -127
  262. package/.scannerwork/scanner-report/syntax-highlightings-5.pb +3736 -171
  263. package/.scannerwork/scanner-report/syntax-highlightings-50.pb +78 -200
  264. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +55 -3722
  265. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +54 -0
  266. package/.scannerwork/scanner-report/syntax-highlightings-53.pb +29 -178
  267. package/.scannerwork/scanner-report/syntax-highlightings-54.pb +250 -29
  268. package/.scannerwork/scanner-report/syntax-highlightings-55.pb +39 -204
  269. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +17 -96
  270. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +80 -17
  271. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +62 -21
  272. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +79 -96
  273. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +3487 -398
  274. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +168 -50
  275. package/.scannerwork/scanner-report/syntax-highlightings-62.pb +90 -39
  276. package/.scannerwork/scanner-report/syntax-highlightings-63.pb +96 -79
  277. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +208 -78
  278. package/.scannerwork/scanner-report/syntax-highlightings-66.pb +3661 -199
  279. package/.scannerwork/scanner-report/syntax-highlightings-67.pb +445 -3544
  280. package/.scannerwork/scanner-report/syntax-highlightings-7.pb +138 -0
  281. package/.scannerwork/scanner-report/syntax-highlightings-9.pb +3749 -0
  282. package/CHANGES.md +3 -0
  283. package/package.json +4 -4
  284. package/test-14-results.xml +153 -153
  285. package/test-16-results.xml +164 -164
  286. package/test-18-results.xml +147 -147
  287. package/test-19-results.xml +167 -167
  288. package/test-iam-18-results.xml +50 -50
  289. package/.scannerwork/scanner-report/changesets-18.pb +0 -1
  290. package/.scannerwork/scanner-report/changesets-19.pb +0 -1
  291. package/.scannerwork/scanner-report/changesets-2.pb +0 -1
  292. package/.scannerwork/scanner-report/changesets-20.pb +0 -1
  293. package/.scannerwork/scanner-report/changesets-21.pb +0 -1
  294. package/.scannerwork/scanner-report/changesets-3.pb +0 -1
  295. package/.scannerwork/scanner-report/changesets-4.pb +0 -1
  296. package/.scannerwork/scanner-report/changesets-5.pb +0 -1
  297. package/.scannerwork/scanner-report/changesets-6.pb +0 -0
  298. package/.scannerwork/scanner-report/changesets-66.pb +0 -1
  299. package/.scannerwork/scanner-report/changesets-68.pb +0 -1
  300. package/.scannerwork/scanner-report/changesets-69.pb +0 -1
  301. package/.scannerwork/scanner-report/changesets-70.pb +0 -1
  302. package/.scannerwork/scanner-report/component-18.pb +0 -1
  303. package/.scannerwork/scanner-report/component-19.pb +0 -1
  304. package/.scannerwork/scanner-report/component-20.pb +0 -1
  305. package/.scannerwork/scanner-report/component-21.pb +0 -1
  306. package/.scannerwork/scanner-report/component-3.pb +0 -1
  307. package/.scannerwork/scanner-report/component-4.pb +0 -1
  308. package/.scannerwork/scanner-report/component-68.pb +0 -1
  309. package/.scannerwork/scanner-report/component-69.pb +0 -1
  310. package/.scannerwork/scanner-report/component-70.pb +0 -1
  311. package/.scannerwork/scanner-report/coverages-18.pb +0 -0
  312. package/.scannerwork/scanner-report/coverages-2.pb +0 -0
  313. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  314. package/.scannerwork/scanner-report/coverages-21.pb +0 -0
  315. package/.scannerwork/scanner-report/coverages-4.pb +0 -0
  316. package/.scannerwork/scanner-report/coverages-5.pb +0 -0
  317. package/.scannerwork/scanner-report/coverages-6.pb +0 -0
  318. package/.scannerwork/scanner-report/coverages-66.pb +0 -0
  319. package/.scannerwork/scanner-report/coverages-68.pb +0 -0
  320. package/.scannerwork/scanner-report/duplications-5.pb +0 -3
  321. package/.scannerwork/scanner-report/duplications-6.pb +0 -2
  322. package/.scannerwork/scanner-report/measures-18.pb +0 -0
  323. package/.scannerwork/scanner-report/measures-19.pb +0 -0
  324. package/.scannerwork/scanner-report/measures-20.pb +0 -0
  325. package/.scannerwork/scanner-report/measures-21.pb +0 -0
  326. package/.scannerwork/scanner-report/measures-4.pb +0 -0
  327. package/.scannerwork/scanner-report/measures-68.pb +0 -0
  328. package/.scannerwork/scanner-report/measures-69.pb +0 -0
  329. package/.scannerwork/scanner-report/measures-70.pb +0 -0
  330. package/.scannerwork/scanner-report/source-18.txt +0 -63
  331. package/.scannerwork/scanner-report/source-20.txt +0 -92
  332. package/.scannerwork/scanner-report/source-21.txt +0 -47
  333. package/.scannerwork/scanner-report/source-4.txt +0 -366
  334. package/.scannerwork/scanner-report/source-68.txt +0 -77
  335. package/.scannerwork/scanner-report/source-69.txt +0 -56
  336. package/.scannerwork/scanner-report/source-70.txt +0 -418
  337. package/.scannerwork/scanner-report/symbols-18.pb +0 -43
  338. package/.scannerwork/scanner-report/symbols-2.pb +0 -85
  339. package/.scannerwork/scanner-report/symbols-20.pb +0 -60
  340. package/.scannerwork/scanner-report/symbols-21.pb +0 -27
  341. package/.scannerwork/scanner-report/symbols-4.pb +0 -494
  342. package/.scannerwork/scanner-report/symbols-5.pb +0 -97
  343. package/.scannerwork/scanner-report/symbols-6.pb +0 -486
  344. package/.scannerwork/scanner-report/symbols-66.pb +0 -354
  345. package/.scannerwork/scanner-report/symbols-68.pb +0 -30
  346. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +0 -82
  347. package/.scannerwork/scanner-report/syntax-highlightings-19.pb +0 -59
  348. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +0 -110
  349. package/.scannerwork/scanner-report/syntax-highlightings-21.pb +0 -68
  350. package/.scannerwork/scanner-report/syntax-highlightings-4.pb +0 -630
  351. package/.scannerwork/scanner-report/syntax-highlightings-68.pb +0 -103
  352. package/.scannerwork/scanner-report/syntax-highlightings-69.pb +0 -82
  353. package/.scannerwork/scanner-report/syntax-highlightings-70.pb +0 -648
  354. /package/.scannerwork/scanner-report/{coverages-19.pb → coverages-37.pb} +0 -0
  355. /package/.scannerwork/scanner-report/{coverages-3.pb → coverages-41.pb} +0 -0
  356. /package/.scannerwork/scanner-report/{coverages-69.pb → coverages-51.pb} +0 -0
  357. /package/.scannerwork/scanner-report/{coverages-70.pb → coverages-67.pb} +0 -0
  358. /package/.scannerwork/scanner-report/{duplications-18.pb → duplications-33.pb} +0 -0
  359. /package/.scannerwork/scanner-report/{duplications-19.pb → duplications-36.pb} +0 -0
  360. /package/.scannerwork/scanner-report/{duplications-2.pb → duplications-37.pb} +0 -0
  361. /package/.scannerwork/scanner-report/{duplications-20.pb → duplications-38.pb} +0 -0
  362. /package/.scannerwork/scanner-report/{duplications-21.pb → duplications-39.pb} +0 -0
  363. /package/.scannerwork/scanner-report/{duplications-4.pb → duplications-40.pb} +0 -0
  364. /package/.scannerwork/scanner-report/{duplications-3.pb → duplications-41.pb} +0 -0
  365. /package/.scannerwork/scanner-report/{duplications-66.pb → duplications-51.pb} +0 -0
  366. /package/.scannerwork/scanner-report/{duplications-68.pb → duplications-52.pb} +0 -0
  367. /package/.scannerwork/scanner-report/{duplications-69.pb → duplications-67.pb} +0 -0
  368. /package/.scannerwork/scanner-report/{duplications-70.pb → duplications-7.pb} +0 -0
  369. /package/.scannerwork/scanner-report/{issues-29.pb → issues-27.pb} +0 -0
  370. /package/.scannerwork/scanner-report/{issues-4.pb → issues-34.pb} +0 -0
  371. /package/.scannerwork/scanner-report/{issues-21.pb → issues-35.pb} +0 -0
  372. /package/.scannerwork/scanner-report/{issues-3.pb → issues-41.pb} +0 -0
  373. /package/.scannerwork/scanner-report/{measures-3.pb → measures-41.pb} +0 -0
  374. /package/.scannerwork/scanner-report/{source-3.txt → source-41.txt} +0 -0
  375. /package/.scannerwork/scanner-report/{symbols-19.pb → symbols-37.pb} +0 -0
  376. /package/.scannerwork/scanner-report/{symbols-3.pb → symbols-41.pb} +0 -0
  377. /package/.scannerwork/scanner-report/{symbols-69.pb → symbols-51.pb} +0 -0
  378. /package/.scannerwork/scanner-report/{symbols-70.pb → symbols-67.pb} +0 -0
  379. /package/.scannerwork/scanner-report/{syntax-highlightings-3.pb → syntax-highlightings-41.pb} +0 -0
@@ -1,4 +1,4 @@
1
- // Copyright © 2017 IBM Corp. All rights reserved.
1
+ // Copyright © 2017, 2021 IBM Corp. All rights reserved.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -12,24 +12,131 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
- /* global describe it */
15
+ /* global describe it before after */
16
16
  'use strict';
17
17
 
18
18
  const assert = require('assert');
19
- const logfilegetbatches = require('../includes/logfilegetbatches.js');
20
-
21
- describe('#unit Fetching batches from a log file', function() {
22
- it('should fetch multiple batches correctly', function(done) {
23
- logfilegetbatches('./test/fixtures/test.log', [1, 4], function(err, data) {
24
- assert.ok(!err);
25
- assert.ok(data);
26
- assert.strictEqual(typeof data, 'object');
27
- assert.strictEqual(Object.keys(data).length, 2);
28
- assert.deepStrictEqual(data['1'].docs, [{ id: '6' }, { id: '7' }, { id: '8' }, { id: '9' }, { id: '10' }]);
29
- assert.strictEqual(data['1'].batch, 1);
30
- assert.deepStrictEqual(data['4'].docs, [{ id: '21' }, { id: '22' }]);
31
- assert.strictEqual(data['4'].batch, 4);
32
- done();
33
- });
19
+ const applyEnvVars = require('../includes/config.js').applyEnvironmentVariables;
20
+
21
+ describe('#unit Configuration', function() {
22
+ let processEnvCopy;
23
+
24
+ before('Save env', function() {
25
+ // Copy env so we can reset it after the tests
26
+ processEnvCopy = JSON.parse(JSON.stringify(process.env));
27
+ });
28
+
29
+ after('Reset env', function() {
30
+ process.env = processEnvCopy;
31
+ });
32
+
33
+ it('respects the COUCH_URL env variable', function(done) {
34
+ process.env.COUCH_URL = 'http://user:pass@myurl.com';
35
+ const config = {};
36
+ applyEnvVars(config);
37
+ assert.strictEqual(typeof config.url, 'string');
38
+ assert.strictEqual(config.url, process.env.COUCH_URL);
39
+ done();
40
+ });
41
+
42
+ it('respects the COUCH_DATABASE env variable', function(done) {
43
+ process.env.COUCH_DATABASE = 'mydb';
44
+ const config = {};
45
+ applyEnvVars(config);
46
+ assert.strictEqual(typeof config.db, 'string');
47
+ assert.strictEqual(config.db, process.env.COUCH_DATABASE);
48
+ done();
49
+ });
50
+
51
+ it('respects the COUCH_BUFFER_SIZE env variable', function(done) {
52
+ process.env.COUCH_BUFFER_SIZE = '1000';
53
+ const config = {};
54
+ applyEnvVars(config);
55
+ assert.strictEqual(typeof config.bufferSize, 'number');
56
+ assert.strictEqual(config.bufferSize, 1000);
57
+ done();
58
+ });
59
+
60
+ it('respects the COUCH_PARALLELISM env variable', function(done) {
61
+ process.env.COUCH_PARALLELISM = '20';
62
+ const config = {};
63
+ applyEnvVars(config);
64
+ assert.strictEqual(typeof config.parallelism, 'number');
65
+ assert.strictEqual(config.parallelism, 20);
66
+ done();
67
+ });
68
+
69
+ it('respects the COUCH_REQUEST_TIMEOUT env variable', function(done) {
70
+ process.env.COUCH_REQUEST_TIMEOUT = '10000';
71
+ const config = {};
72
+ applyEnvVars(config);
73
+ assert.strictEqual(typeof config.requestTimeout, 'number');
74
+ assert.strictEqual(config.requestTimeout, 10000);
75
+ done();
76
+ });
77
+
78
+ it('respects the CLOUDANT_IAM_API_KEY env variable', function(done) {
79
+ const key = 'ABC123-ZYX987_cba789-xyz321';
80
+ process.env.CLOUDANT_IAM_API_KEY = key;
81
+ const config = {};
82
+ applyEnvVars(config);
83
+ assert.strictEqual(typeof config.iamApiKey, 'string');
84
+ assert.strictEqual(config.iamApiKey, key);
85
+ done();
86
+ });
87
+
88
+ it('respects the CLOUDANT_IAM_TOKEN_URL env variable', function(done) {
89
+ const u = 'https://testhost.example:1234/identity/token';
90
+ process.env.CLOUDANT_IAM_TOKEN_URL = u;
91
+ const config = {};
92
+ applyEnvVars(config);
93
+ assert.strictEqual(typeof config.iamTokenUrl, 'string');
94
+ assert.strictEqual(config.iamTokenUrl, u);
95
+ done();
96
+ });
97
+
98
+ it('respects the COUCH_LOG env variable', function(done) {
99
+ process.env.COUCH_LOG = 'my.log';
100
+ const config = {};
101
+ applyEnvVars(config);
102
+ assert.strictEqual(typeof config.log, 'string');
103
+ assert.strictEqual(config.log, process.env.COUCH_LOG);
104
+ done();
105
+ });
106
+
107
+ it('respects the COUCH_RESUME env variable', function(done) {
108
+ process.env.COUCH_RESUME = 'true';
109
+ const config = {};
110
+ applyEnvVars(config);
111
+ assert.strictEqual(typeof config.resume, 'boolean');
112
+ assert.strictEqual(config.resume, true);
113
+ done();
114
+ });
115
+
116
+ it('respects the COUCH_OUTPUT env variable', function(done) {
117
+ process.env.COUCH_OUTPUT = 'myfile.txt';
118
+ const config = {};
119
+ applyEnvVars(config);
120
+ assert.strictEqual(typeof config.output, 'string');
121
+ assert.strictEqual(config.output, process.env.COUCH_OUTPUT);
122
+ done();
123
+ });
124
+
125
+ it('respects the COUCH_MODE env variable', function(done) {
126
+ process.env.COUCH_MODE = 'shallow';
127
+ const config = {};
128
+ applyEnvVars(config);
129
+ assert.strictEqual(typeof config.mode, 'string');
130
+ assert.strictEqual(config.mode, 'shallow');
131
+ done();
132
+ });
133
+
134
+ it('respects the COUCH_QUIET env variable', function(done) {
135
+ process.env.COUCH_QUIET = 'true';
136
+ const config = {};
137
+ applyEnvVars(config);
138
+ assert.strictEqual(typeof config.quiet, 'boolean');
139
+ assert.strictEqual(config.quiet, true);
140
+ done();
34
141
  });
35
142
  });
@@ -1,4 +1,4 @@
1
- // Copyright © 2023 IBM Corp. All rights reserved.
1
+ // Copyright © 2017 IBM Corp. All rights reserved.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -12,89 +12,120 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
+ /* global describe it */
15
16
  'use strict';
16
17
 
17
- const chunk = require('lodash/chunk');
18
- const difference = require('lodash/difference');
19
- const forOwn = require('lodash/forOwn');
20
- const isEmpty = require('lodash/isEmpty');
21
- const union = require('lodash/union');
22
-
23
- const compare = async(database1, database2, client) => {
24
- // check docs same in both dbs
25
- const allDocs1 = await getAllDocs(client, database1);
26
- const allDocs2 = await getAllDocs(client, database2);
27
-
28
- const onlyInDb1 = (difference(allDocs1, allDocs2));
29
- const onlyInDb2 = (difference(allDocs2, allDocs1));
30
-
31
- let databasesSame = isEmpty(onlyInDb1) && isEmpty(onlyInDb2);
32
-
33
- if (!databasesSame) {
34
- console.log(onlyInDb1.length + ' documents only in db 1.');
35
- console.log('Document IDs only in db 1: ' + onlyInDb1);
36
- console.log(onlyInDb2.length + ' documents only in db 2.');
37
- console.log('Document IDs only in db 2: ' + onlyInDb2);
38
- }
39
-
40
- // check revs same in docs common to both dbs
41
- const partitionSize = 500;
42
- const batches = chunk(union(allDocs1, allDocs2), partitionSize);
43
-
44
- const missingRevsInDb2 = await getMissingRevs(client, database1, database2, batches);
45
- const missingRevsInDb1 = await getMissingRevs(client, database2, database1, batches);
46
-
47
- databasesSame = databasesSame && isEmpty(missingRevsInDb1) && isEmpty(missingRevsInDb2);
48
-
49
- if (!databasesSame) {
50
- console.log('Missing revs in db 1:' + JSON.stringify(missingRevsInDb1));
51
- console.log('Missing revs in db 2:' + JSON.stringify(missingRevsInDb2));
52
- }
53
-
54
- return databasesSame;
55
- };
56
-
57
- const getMissingRevs = async(client, databaseName1, databaseName2, batcheses) => {
58
- const fakeRevisionId = '9999-a';
59
-
60
- const missing = {};
61
-
62
- // look in db1 - use a fake revision ID to fetch all leaf revisions
63
-
64
- for (const batches of batcheses) {
65
- const documentRevisions = {};
66
- batches.forEach(id => (documentRevisions[id] = [fakeRevisionId]));
18
+ const fs = require('fs');
19
+ const u = require('./citestutils.js');
20
+
21
+ [{ useApi: true }, { useApi: false }].forEach(function(params) {
22
+ describe(u.scenario('Basic backup and restore', params), function() {
23
+ it('should backup animaldb to a file correctly', function(done) {
24
+ // Allow up to 40 s to backup and compare (it should be much faster)!
25
+ u.setTimeout(this, 40);
26
+ const actualBackup = `./${this.fileName}`;
27
+ // Create a file and backup to it
28
+ const output = fs.createWriteStream(actualBackup);
29
+ output.on('open', function() {
30
+ u.testBackup(params, 'animaldb', output, function(err) {
31
+ if (err) {
32
+ done(err);
33
+ } else {
34
+ u.readSortAndDeepEqual(actualBackup, './test/fixtures/animaldb_expected.json', done);
35
+ }
36
+ });
37
+ });
38
+ });
67
39
 
68
- const result1 = await client.postRevsDiff({ db: databaseName1, documentRevisions });
69
- const revsDiffRequestDb2 = {};
70
- forOwn(result1.result, (v, k) => (revsDiffRequestDb2[k] = v.possible_ancestors));
71
- // look in db2
72
- const result2 = await client.postRevsDiff({ db: databaseName2, documentRevisions: revsDiffRequestDb2 });
73
- forOwn(result2.result, (v, k) => {
74
- if ('missing' in v) {
75
- missing[k] = v.missing;
76
- }
40
+ it('should restore animaldb to a database correctly', function(done) {
41
+ // Allow up to 60 s to restore and compare (again it should be faster)!
42
+ u.setTimeout(this, 60);
43
+ const input = fs.createReadStream('./test/fixtures/animaldb_expected.json');
44
+ const dbName = this.dbName;
45
+ input.on('open', function() {
46
+ u.testRestore(params, input, dbName, function(err) {
47
+ if (err) {
48
+ done(err);
49
+ } else {
50
+ u.dbCompare('animaldb', dbName, done);
51
+ }
52
+ });
53
+ });
77
54
  });
78
- }
79
- return missing;
80
- };
81
55
 
82
- const getAllDocs = async(client, database) => {
83
- let allDocIds = [];
84
- const limit = 2000;
85
- let startKey = '\u0000';
86
- do {
87
- const pageOfDocIds = (await client.postAllDocs({ db: database, startKey, limit })).result.rows.map(r => r.id);
88
- allDocIds = allDocIds.concat(pageOfDocIds);
89
- if (pageOfDocIds.length < limit) {
90
- startKey = null;
91
- } else {
92
- startKey = pageOfDocIds[limit - 1] + '\u0000';
93
- }
94
- } while (startKey != null);
95
- return allDocIds;
96
- };
56
+ it('should execute a shallow mode backup successfully', function(done) {
57
+ // Allow 30 s
58
+ u.setTimeout(this, 30);
59
+ const actualBackup = `./${this.fileName}`;
60
+ const output = fs.createWriteStream(actualBackup);
61
+ // Add the shallow mode option
62
+ const p = u.p(params, { opts: { mode: 'shallow' } });
63
+ output.on('open', function() {
64
+ u.testBackup(p, 'animaldb', output, function(err) {
65
+ if (err) {
66
+ done(err);
67
+ } else {
68
+ u.readSortAndDeepEqual(actualBackup, './test/fixtures/animaldb_expected_shallow.json', done);
69
+ }
70
+ });
71
+ });
72
+ });
97
73
 
98
- module.exports = {
99
- compare
100
- };
74
+ describe(u.scenario('Buffer size tests', params), function() {
75
+ it('should backup/restore animaldb with the same buffer size', function(done) {
76
+ // Allow up to 60 s for backup and restore of animaldb
77
+ u.setTimeout(this, 60);
78
+ const actualBackup = `./${this.fileName}`;
79
+ const logFile = `./${this.fileName}` + '.log';
80
+ const p = u.p(params, { opts: { log: logFile, bufferSize: 1 } });
81
+ u.testBackupAndRestoreViaFile(p, 'animaldb', actualBackup, this.dbName, done);
82
+ });
83
+ it('should backup/restore animaldb with backup buffer > restore buffer', function(done) {
84
+ // Allow up to 60 s for backup and restore of animaldb
85
+ u.setTimeout(this, 60);
86
+ const actualBackup = `./${this.fileName}`;
87
+ const logFile = `./${this.fileName}` + '.log';
88
+ const dbName = this.dbName;
89
+ const p = u.p(params, { opts: { log: logFile, bufferSize: 2 } }); // backup
90
+ const q = u.p(params, { opts: { bufferSize: 1 } }); // restore
91
+ u.testBackupToFile(p, 'animaldb', actualBackup, function(err) {
92
+ if (err) {
93
+ done(err);
94
+ } else {
95
+ // restore
96
+ u.testRestoreFromFile(q, actualBackup, dbName, function(err) {
97
+ if (!err) {
98
+ u.dbCompare('animaldb', dbName, done);
99
+ } else {
100
+ done(err);
101
+ }
102
+ });
103
+ }
104
+ });
105
+ });
106
+ it('should backup/restore animaldb with backup buffer < restore buffer', function(done) {
107
+ // Allow up to 60 s for backup and restore of animaldb
108
+ u.setTimeout(this, 60);
109
+ const actualBackup = `./${this.fileName}`;
110
+ const logFile = `./${this.fileName}` + '.log';
111
+ const dbName = this.dbName;
112
+ const p = u.p(params, { opts: { log: logFile, bufferSize: 1 } }); // backup
113
+ const q = u.p(params, { opts: { bufferSize: 2 } }); // restore
114
+ u.testBackupToFile(p, 'animaldb', actualBackup, function(err) {
115
+ if (err) {
116
+ done(err);
117
+ } else {
118
+ // restore
119
+ u.testRestoreFromFile(q, actualBackup, dbName, function(err) {
120
+ if (!err) {
121
+ u.dbCompare('animaldb', dbName, done);
122
+ } else {
123
+ done(err);
124
+ }
125
+ });
126
+ }
127
+ });
128
+ });
129
+ });
130
+ });
131
+ });
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2021 IBM Corp. All rights reserved.
1
+ // Copyright © 2017, 2022 IBM Corp. All rights reserved.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -12,131 +12,134 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
- /* global describe it before after */
15
+ /* global describe it beforeEach */
16
16
  'use strict';
17
17
 
18
18
  const assert = require('assert');
19
- const applyEnvVars = require('../includes/config.js').applyEnvironmentVariables;
20
-
21
- describe('#unit Configuration', function() {
22
- let processEnvCopy;
23
-
24
- before('Save env', function() {
25
- // Copy env so we can reset it after the tests
26
- processEnvCopy = JSON.parse(JSON.stringify(process.env));
27
- });
28
-
29
- after('Reset env', function() {
30
- process.env = processEnvCopy;
31
- });
32
-
33
- it('respects the COUCH_URL env variable', function(done) {
34
- process.env.COUCH_URL = 'http://user:pass@myurl.com';
35
- const config = {};
36
- applyEnvVars(config);
37
- assert.strictEqual(typeof config.url, 'string');
38
- assert.strictEqual(config.url, process.env.COUCH_URL);
39
- done();
40
- });
41
-
42
- it('respects the COUCH_DATABASE env variable', function(done) {
43
- process.env.COUCH_DATABASE = 'mydb';
44
- const config = {};
45
- applyEnvVars(config);
46
- assert.strictEqual(typeof config.db, 'string');
47
- assert.strictEqual(config.db, process.env.COUCH_DATABASE);
48
- done();
49
- });
50
-
51
- it('respects the COUCH_BUFFER_SIZE env variable', function(done) {
52
- process.env.COUCH_BUFFER_SIZE = '1000';
53
- const config = {};
54
- applyEnvVars(config);
55
- assert.strictEqual(typeof config.bufferSize, 'number');
56
- assert.strictEqual(config.bufferSize, 1000);
57
- done();
58
- });
59
-
60
- it('respects the COUCH_PARALLELISM env variable', function(done) {
61
- process.env.COUCH_PARALLELISM = '20';
62
- const config = {};
63
- applyEnvVars(config);
64
- assert.strictEqual(typeof config.parallelism, 'number');
65
- assert.strictEqual(config.parallelism, 20);
66
- done();
67
- });
68
-
69
- it('respects the COUCH_REQUEST_TIMEOUT env variable', function(done) {
70
- process.env.COUCH_REQUEST_TIMEOUT = '10000';
71
- const config = {};
72
- applyEnvVars(config);
73
- assert.strictEqual(typeof config.requestTimeout, 'number');
74
- assert.strictEqual(config.requestTimeout, 10000);
75
- done();
76
- });
77
-
78
- it('respects the CLOUDANT_IAM_API_KEY env variable', function(done) {
79
- const key = 'ABC123-ZYX987_cba789-xyz321';
80
- process.env.CLOUDANT_IAM_API_KEY = key;
81
- const config = {};
82
- applyEnvVars(config);
83
- assert.strictEqual(typeof config.iamApiKey, 'string');
84
- assert.strictEqual(config.iamApiKey, key);
85
- done();
86
- });
87
-
88
- it('respects the CLOUDANT_IAM_TOKEN_URL env variable', function(done) {
89
- const u = 'https://testhost.example:1234/identity/token';
90
- process.env.CLOUDANT_IAM_TOKEN_URL = u;
91
- const config = {};
92
- applyEnvVars(config);
93
- assert.strictEqual(typeof config.iamTokenUrl, 'string');
94
- assert.strictEqual(config.iamTokenUrl, u);
95
- done();
96
- });
97
-
98
- it('respects the COUCH_LOG env variable', function(done) {
99
- process.env.COUCH_LOG = 'my.log';
100
- const config = {};
101
- applyEnvVars(config);
102
- assert.strictEqual(typeof config.log, 'string');
103
- assert.strictEqual(config.log, process.env.COUCH_LOG);
104
- done();
105
- });
106
-
107
- it('respects the COUCH_RESUME env variable', function(done) {
108
- process.env.COUCH_RESUME = 'true';
109
- const config = {};
110
- applyEnvVars(config);
111
- assert.strictEqual(typeof config.resume, 'boolean');
112
- assert.strictEqual(config.resume, true);
113
- done();
19
+ const backup = require('../includes/shallowbackup.js');
20
+ const request = require('../includes/request.js');
21
+ const fs = require('fs');
22
+ const nock = require('nock');
23
+
24
+ // Function to create a DB object and call the shallow backup function
25
+ // This is normally done by app.js
26
+ function shallowBackup(dbUrl, opts) {
27
+ const db = request.client(dbUrl, opts);
28
+ // Disable compression to make body assertions easier
29
+ db.service.setEnableGzipCompression(false);
30
+ return backup(db, opts);
31
+ }
32
+
33
+ // Note all these tests include a body parameter of include_docs and a query
34
+ // string of include_docs because of a quirk of nano that when using the fetch
35
+ // method always adds the include_docs query string.
36
+ describe('#unit Perform backup using shallow backup', function() {
37
+ const dbUrl = 'http://localhost:5984/animaldb';
38
+ // Query string keys are stringified by Nano
39
+ const badgerKey = 'badger\0';
40
+ const kookaburraKey = 'kookaburra\0';
41
+ const snipeKey = 'snipe\0';
42
+
43
+ beforeEach('Reset nocks', function() {
44
+ nock.cleanAll();
114
45
  });
115
46
 
116
- it('respects the COUCH_OUTPUT env variable', function(done) {
117
- process.env.COUCH_OUTPUT = 'myfile.txt';
118
- const config = {};
119
- applyEnvVars(config);
120
- assert.strictEqual(typeof config.output, 'string');
121
- assert.strictEqual(config.output, process.env.COUCH_OUTPUT);
122
- done();
47
+ it('should perform a shallow backup', function(done) {
48
+ const couch = nock(dbUrl)
49
+ // batch 1
50
+ .post('/_all_docs', { limit: 3, include_docs: true })
51
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
52
+ // batch 2
53
+ .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
54
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
55
+ // batch 3
56
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
57
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_3.json', 'utf8')))
58
+ // batch 4
59
+ .post('/_all_docs', { limit: 3, start_key: snipeKey, include_docs: true })
60
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_4.json', 'utf8')));
61
+
62
+ shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
63
+ .on('error', function(err) {
64
+ assert.fail(err);
65
+ })
66
+ .on('received', function(data) {
67
+ if (data.batch === 3) {
68
+ assert.strictEqual(data.length, 2); // smaller last batch
69
+ } else {
70
+ assert.strictEqual(data.length, 3);
71
+ }
72
+ })
73
+ .on('finished', function(data) {
74
+ assert.strictEqual(data.total, 11);
75
+ assert.ok(couch.isDone());
76
+ done();
77
+ });
123
78
  });
124
79
 
125
- it('respects the COUCH_MODE env variable', function(done) {
126
- process.env.COUCH_MODE = 'shallow';
127
- const config = {};
128
- applyEnvVars(config);
129
- assert.strictEqual(typeof config.mode, 'string');
130
- assert.strictEqual(config.mode, 'shallow');
131
- done();
80
+ it('should perform a shallow backup with transient error', function(done) {
81
+ const couch = nock(dbUrl)
82
+ // batch 1
83
+ .post('/_all_docs', { limit: 3, include_docs: true })
84
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
85
+ // batch 2
86
+ .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
87
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
88
+ // batch 3 - transient error
89
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
90
+ .reply(500, { error: 'Internal Server Error' })
91
+ // batch 3 - retry
92
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
93
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_3.json', 'utf8')))
94
+ // batch 4
95
+ .post('/_all_docs', { limit: 3, start_key: snipeKey, include_docs: true })
96
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_4.json', 'utf8')));
97
+
98
+ shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
99
+ .on('error', function(err) {
100
+ assert.strictEqual(err.name, 'HTTPError');
101
+ })
102
+ .on('received', function(data) {
103
+ if (data.batch === 3) {
104
+ assert.strictEqual(data.length, 2); // smaller last batch
105
+ } else {
106
+ assert.strictEqual(data.length, 3);
107
+ }
108
+ })
109
+ .on('finished', function(data) {
110
+ assert.strictEqual(data.total, 11);
111
+ assert.ok(couch.isDone());
112
+ done();
113
+ });
132
114
  });
133
115
 
134
- it('respects the COUCH_QUIET env variable', function(done) {
135
- process.env.COUCH_QUIET = 'true';
136
- const config = {};
137
- applyEnvVars(config);
138
- assert.strictEqual(typeof config.quiet, 'boolean');
139
- assert.strictEqual(config.quiet, true);
140
- done();
116
+ it('should fail to perform a shallow backup on fatal error', function(done) {
117
+ const couch = nock(dbUrl)
118
+ // batch 1
119
+ .post('/_all_docs', { limit: 3, include_docs: true })
120
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
121
+ // batch 2
122
+ .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
123
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
124
+ // batch 3 - fatal error
125
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
126
+ .reply(401, { error: 'Unauthorized' });
127
+
128
+ let errCount = 0;
129
+
130
+ shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
131
+ .on('error', function(err) {
132
+ errCount++;
133
+ assert.strictEqual(err.name, 'Unauthorized');
134
+ })
135
+ .on('received', function(data) {
136
+ assert.strictEqual(data.length, 3);
137
+ })
138
+ .on('finished', function(data) {
139
+ assert.strictEqual(data.total, 6);
140
+ assert.ok(couch.isDone());
141
+ assert.strictEqual(errCount, 1);
142
+ done();
143
+ });
141
144
  });
142
145
  });