@cloudant/couchbackup 2.9.15 → 2.9.16-SNAPSHOT.180

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 (439) hide show
  1. package/.scannerwork/report-task.txt +2 -2
  2. package/.scannerwork/scanner-report/analysis-cache2.pb +0 -0
  3. package/.scannerwork/scanner-report/analysis-warnings.pb +2 -2
  4. package/.scannerwork/scanner-report/analysis.log +1 -1
  5. package/.scannerwork/scanner-report/changesets-10.pb +2 -0
  6. package/.scannerwork/scanner-report/changesets-11.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-13.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-15.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-2.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-3.pb +1 -0
  11. package/.scannerwork/scanner-report/changesets-4.pb +1 -0
  12. package/.scannerwork/scanner-report/changesets-40.pb +1 -0
  13. package/.scannerwork/scanner-report/changesets-41.pb +1 -0
  14. package/.scannerwork/scanner-report/changesets-42.pb +1 -0
  15. package/.scannerwork/scanner-report/changesets-43.pb +1 -0
  16. package/.scannerwork/scanner-report/changesets-44.pb +1 -0
  17. package/.scannerwork/scanner-report/changesets-45.pb +1 -0
  18. package/.scannerwork/scanner-report/changesets-46.pb +1 -0
  19. package/.scannerwork/scanner-report/changesets-47.pb +1 -0
  20. package/.scannerwork/scanner-report/changesets-48.pb +1 -0
  21. package/.scannerwork/scanner-report/changesets-49.pb +1 -0
  22. package/.scannerwork/scanner-report/changesets-5.pb +1 -0
  23. package/.scannerwork/scanner-report/changesets-50.pb +1 -0
  24. package/.scannerwork/scanner-report/changesets-51.pb +1 -0
  25. package/.scannerwork/scanner-report/changesets-52.pb +1 -0
  26. package/.scannerwork/scanner-report/changesets-6.pb +1 -0
  27. package/.scannerwork/scanner-report/changesets-7.pb +1 -0
  28. package/.scannerwork/scanner-report/changesets-8.pb +1 -0
  29. package/.scannerwork/scanner-report/changesets-9.pb +1 -0
  30. package/.scannerwork/scanner-report/component-1.pb +2 -2
  31. package/.scannerwork/scanner-report/component-10.pb +1 -1
  32. package/.scannerwork/scanner-report/component-11.pb +1 -0
  33. package/.scannerwork/scanner-report/component-12.pb +1 -1
  34. package/.scannerwork/scanner-report/component-13.pb +1 -0
  35. package/.scannerwork/scanner-report/component-14.pb +1 -1
  36. package/.scannerwork/scanner-report/component-15.pb +1 -0
  37. package/.scannerwork/scanner-report/component-2.pb +1 -0
  38. package/.scannerwork/scanner-report/component-20.pb +1 -1
  39. package/.scannerwork/scanner-report/component-22.pb +1 -1
  40. package/.scannerwork/scanner-report/component-24.pb +1 -1
  41. package/.scannerwork/scanner-report/component-25.pb +1 -1
  42. package/.scannerwork/scanner-report/component-27.pb +1 -1
  43. package/.scannerwork/scanner-report/component-28.pb +1 -1
  44. package/.scannerwork/scanner-report/component-3.pb +1 -1
  45. package/.scannerwork/scanner-report/component-4.pb +1 -0
  46. package/.scannerwork/scanner-report/component-40.pb +1 -0
  47. package/.scannerwork/scanner-report/component-41.pb +1 -0
  48. package/.scannerwork/scanner-report/component-42.pb +1 -0
  49. package/.scannerwork/scanner-report/component-43.pb +1 -0
  50. package/.scannerwork/scanner-report/component-44.pb +1 -0
  51. package/.scannerwork/scanner-report/component-45.pb +1 -0
  52. package/.scannerwork/scanner-report/component-46.pb +1 -0
  53. package/.scannerwork/scanner-report/component-47.pb +1 -0
  54. package/.scannerwork/scanner-report/component-48.pb +1 -0
  55. package/.scannerwork/scanner-report/component-49.pb +1 -0
  56. package/.scannerwork/scanner-report/component-5.pb +1 -0
  57. package/.scannerwork/scanner-report/component-50.pb +1 -0
  58. package/.scannerwork/scanner-report/component-51.pb +1 -0
  59. package/.scannerwork/scanner-report/component-52.pb +1 -0
  60. package/.scannerwork/scanner-report/component-53.pb +1 -1
  61. package/.scannerwork/scanner-report/component-54.pb +1 -1
  62. package/.scannerwork/scanner-report/component-55.pb +1 -1
  63. package/.scannerwork/scanner-report/component-56.pb +1 -1
  64. package/.scannerwork/scanner-report/component-57.pb +1 -1
  65. package/.scannerwork/scanner-report/component-58.pb +1 -1
  66. package/.scannerwork/scanner-report/component-59.pb +1 -1
  67. package/.scannerwork/scanner-report/component-6.pb +1 -1
  68. package/.scannerwork/scanner-report/component-60.pb +1 -1
  69. package/.scannerwork/scanner-report/component-61.pb +1 -1
  70. package/.scannerwork/scanner-report/component-62.pb +1 -1
  71. package/.scannerwork/scanner-report/component-64.pb +1 -1
  72. package/.scannerwork/scanner-report/component-66.pb +1 -1
  73. package/.scannerwork/scanner-report/component-7.pb +1 -0
  74. package/.scannerwork/scanner-report/component-8.pb +1 -0
  75. package/.scannerwork/scanner-report/component-9.pb +1 -0
  76. package/.scannerwork/scanner-report/coverages-10.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-11.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-12.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-13.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-14.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-15.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-2.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-22.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-28.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-3.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-4.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-40.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-53.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-54.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-55.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  95. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  96. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  97. package/.scannerwork/scanner-report/coverages-61.pb +0 -0
  98. package/.scannerwork/scanner-report/coverages-62.pb +0 -0
  99. package/.scannerwork/scanner-report/coverages-66.pb +0 -0
  100. package/.scannerwork/scanner-report/coverages-7.pb +0 -0
  101. package/.scannerwork/scanner-report/coverages-8.pb +0 -0
  102. package/.scannerwork/scanner-report/coverages-9.pb +0 -0
  103. package/.scannerwork/scanner-report/duplications-12.pb +0 -2
  104. package/.scannerwork/scanner-report/duplications-13.pb +2 -0
  105. package/.scannerwork/scanner-report/duplications-14.pb +0 -2
  106. package/.scannerwork/scanner-report/duplications-20.pb +2 -0
  107. package/.scannerwork/scanner-report/duplications-22.pb +2 -0
  108. package/.scannerwork/scanner-report/duplications-59.pb +2 -0
  109. package/.scannerwork/scanner-report/duplications-66.pb +0 -2
  110. package/.scannerwork/scanner-report/duplications-8.pb +2 -0
  111. package/.scannerwork/scanner-report/measures-10.pb +0 -0
  112. package/.scannerwork/scanner-report/measures-11.pb +0 -0
  113. package/.scannerwork/scanner-report/measures-12.pb +0 -0
  114. package/.scannerwork/scanner-report/measures-13.pb +0 -0
  115. package/.scannerwork/scanner-report/measures-14.pb +0 -0
  116. package/.scannerwork/scanner-report/measures-15.pb +0 -0
  117. package/.scannerwork/scanner-report/measures-2.pb +0 -0
  118. package/.scannerwork/scanner-report/measures-20.pb +0 -0
  119. package/.scannerwork/scanner-report/measures-22.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-24.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-25.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-27.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-28.pb +0 -0
  124. package/.scannerwork/scanner-report/measures-3.pb +0 -0
  125. package/.scannerwork/scanner-report/measures-4.pb +0 -0
  126. package/.scannerwork/scanner-report/measures-40.pb +16 -0
  127. package/.scannerwork/scanner-report/measures-46.pb +0 -0
  128. package/.scannerwork/scanner-report/measures-50.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-53.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-54.pb +0 -0
  132. package/.scannerwork/scanner-report/measures-55.pb +0 -0
  133. package/.scannerwork/scanner-report/measures-56.pb +0 -0
  134. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-58.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-59.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-62.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-64.pb +0 -0
  142. package/.scannerwork/scanner-report/measures-66.pb +0 -0
  143. package/.scannerwork/scanner-report/measures-7.pb +0 -0
  144. package/.scannerwork/scanner-report/measures-8.pb +0 -0
  145. package/.scannerwork/scanner-report/measures-9.pb +16 -0
  146. package/.scannerwork/scanner-report/metadata.pb +0 -0
  147. package/.scannerwork/scanner-report/source-10.txt +113 -424
  148. package/.scannerwork/scanner-report/source-11.txt +80 -0
  149. package/.scannerwork/scanner-report/source-12.txt +107 -168
  150. package/.scannerwork/scanner-report/source-13.txt +92 -0
  151. package/.scannerwork/scanner-report/source-14.txt +23 -157
  152. package/.scannerwork/scanner-report/source-15.txt +118 -0
  153. package/.scannerwork/scanner-report/source-2.txt +59 -0
  154. package/.scannerwork/scanner-report/source-20.txt +168 -40
  155. package/.scannerwork/scanner-report/source-22.txt +148 -266
  156. package/.scannerwork/scanner-report/source-24.txt +424 -32
  157. package/.scannerwork/scanner-report/source-25.txt +424 -183
  158. package/.scannerwork/scanner-report/source-27.txt +102 -100
  159. package/.scannerwork/scanner-report/source-28.txt +17 -429
  160. package/.scannerwork/scanner-report/source-3.txt +281 -424
  161. package/.scannerwork/scanner-report/source-4.txt +164 -0
  162. package/.scannerwork/scanner-report/source-40.txt +293 -0
  163. package/.scannerwork/scanner-report/{source-30.txt → source-46.txt} +10 -7
  164. package/.scannerwork/scanner-report/source-50.txt +100 -0
  165. package/.scannerwork/scanner-report/source-51.txt +183 -0
  166. package/.scannerwork/scanner-report/source-53.txt +132 -99
  167. package/.scannerwork/scanner-report/source-54.txt +25 -31
  168. package/.scannerwork/scanner-report/source-55.txt +47 -149
  169. package/.scannerwork/scanner-report/source-56.txt +13 -59
  170. package/.scannerwork/scanner-report/source-57.txt +79 -259
  171. package/.scannerwork/scanner-report/source-58.txt +53 -58
  172. package/.scannerwork/scanner-report/source-59.txt +164 -155
  173. package/.scannerwork/scanner-report/source-6.txt +31 -102
  174. package/.scannerwork/scanner-report/source-60.txt +412 -76
  175. package/.scannerwork/scanner-report/source-61.txt +116 -45
  176. package/.scannerwork/scanner-report/source-62.txt +388 -103
  177. package/.scannerwork/scanner-report/source-64.txt +424 -41
  178. package/.scannerwork/scanner-report/source-66.txt +29 -75
  179. package/.scannerwork/scanner-report/source-7.txt +46 -0
  180. package/.scannerwork/scanner-report/source-8.txt +75 -0
  181. package/.scannerwork/scanner-report/source-9.txt +178 -0
  182. package/.scannerwork/scanner-report/symbols-10.pb +46 -0
  183. package/.scannerwork/scanner-report/symbols-11.pb +46 -0
  184. package/.scannerwork/scanner-report/symbols-12.pb +33 -180
  185. package/.scannerwork/scanner-report/symbols-13.pb +44 -0
  186. package/.scannerwork/scanner-report/symbols-14.pb +17 -152
  187. package/.scannerwork/scanner-report/symbols-15.pb +30 -0
  188. package/.scannerwork/scanner-report/symbols-2.pb +19 -0
  189. package/.scannerwork/scanner-report/symbols-20.pb +180 -24
  190. package/.scannerwork/scanner-report/symbols-22.pb +151 -426
  191. package/.scannerwork/scanner-report/symbols-28.pb +13 -790
  192. package/.scannerwork/scanner-report/symbols-3.pb +354 -0
  193. package/.scannerwork/scanner-report/symbols-4.pb +126 -0
  194. package/.scannerwork/scanner-report/symbols-40.pb +428 -0
  195. package/.scannerwork/scanner-report/symbols-53.pb +93 -30
  196. package/.scannerwork/scanner-report/symbols-54.pb +23 -20
  197. package/.scannerwork/scanner-report/symbols-55.pb +24 -126
  198. package/.scannerwork/scanner-report/symbols-56.pb +8 -42
  199. package/.scannerwork/scanner-report/symbols-57.pb +58 -354
  200. package/.scannerwork/scanner-report/symbols-58.pb +39 -46
  201. package/.scannerwork/scanner-report/symbols-59.pb +226 -143
  202. package/.scannerwork/scanner-report/symbols-60.pb +789 -45
  203. package/.scannerwork/scanner-report/symbols-61.pb +86 -19
  204. package/.scannerwork/scanner-report/symbols-62.pb +604 -33
  205. package/.scannerwork/scanner-report/symbols-66.pb +7 -44
  206. package/.scannerwork/scanner-report/symbols-7.pb +20 -0
  207. package/.scannerwork/scanner-report/symbols-8.pb +42 -0
  208. package/.scannerwork/scanner-report/symbols-9.pb +144 -0
  209. package/.scannerwork/scanner-report/syntax-highlightings-10.pb +115 -3329
  210. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +95 -0
  211. package/.scannerwork/scanner-report/syntax-highlightings-12.pb +96 -192
  212. package/.scannerwork/scanner-report/syntax-highlightings-13.pb +93 -0
  213. package/.scannerwork/scanner-report/syntax-highlightings-14.pb +23 -185
  214. package/.scannerwork/scanner-report/syntax-highlightings-15.pb +113 -0
  215. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +59 -0
  216. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +194 -66
  217. package/.scannerwork/scanner-report/syntax-highlightings-22.pb +155 -661
  218. package/.scannerwork/scanner-report/syntax-highlightings-24.pb +3329 -43
  219. package/.scannerwork/scanner-report/syntax-highlightings-25.pb +3286 -226
  220. package/.scannerwork/scanner-report/syntax-highlightings-27.pb +690 -105
  221. package/.scannerwork/scanner-report/syntax-highlightings-28.pb +26 -591
  222. package/.scannerwork/scanner-report/syntax-highlightings-3.pb +199 -3256
  223. package/.scannerwork/scanner-report/syntax-highlightings-4.pb +213 -0
  224. package/.scannerwork/scanner-report/syntax-highlightings-40.pb +720 -0
  225. package/.scannerwork/scanner-report/syntax-highlightings-46.pb +54 -0
  226. package/.scannerwork/scanner-report/syntax-highlightings-50.pb +107 -0
  227. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +280 -0
  228. package/.scannerwork/scanner-report/syntax-highlightings-53.pb +208 -84
  229. package/.scannerwork/scanner-report/syntax-highlightings-54.pb +26 -34
  230. package/.scannerwork/scanner-report/syntax-highlightings-55.pb +62 -178
  231. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +17 -49
  232. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +110 -241
  233. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +64 -58
  234. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +310 -185
  235. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +29 -675
  236. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +591 -90
  237. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +95 -29
  238. package/.scannerwork/scanner-report/syntax-highlightings-62.pb +605 -93
  239. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +3329 -41
  240. package/.scannerwork/scanner-report/syntax-highlightings-66.pb +31 -62
  241. package/.scannerwork/scanner-report/syntax-highlightings-7.pb +64 -0
  242. package/.scannerwork/scanner-report/syntax-highlightings-8.pb +81 -0
  243. package/.scannerwork/scanner-report/syntax-highlightings-9.pb +243 -0
  244. package/package.json +2 -2
  245. package/test-18-results.xml +160 -160
  246. package/test-20-results.xml +154 -154
  247. package/test-21-results.xml +148 -148
  248. package/test-iam-20-results.xml +50 -50
  249. package/.scannerwork/scanner-report/changesets-16.pb +0 -1
  250. package/.scannerwork/scanner-report/changesets-17.pb +0 -1
  251. package/.scannerwork/scanner-report/changesets-18.pb +0 -1
  252. package/.scannerwork/scanner-report/changesets-19.pb +0 -1
  253. package/.scannerwork/scanner-report/changesets-21.pb +0 -1
  254. package/.scannerwork/scanner-report/changesets-23.pb +0 -1
  255. package/.scannerwork/scanner-report/changesets-24.pb +0 -1
  256. package/.scannerwork/scanner-report/changesets-25.pb +0 -1
  257. package/.scannerwork/scanner-report/changesets-26.pb +0 -1
  258. package/.scannerwork/scanner-report/changesets-27.pb +0 -1
  259. package/.scannerwork/scanner-report/changesets-29.pb +0 -1
  260. package/.scannerwork/scanner-report/changesets-30.pb +0 -1
  261. package/.scannerwork/scanner-report/changesets-31.pb +0 -1
  262. package/.scannerwork/scanner-report/changesets-32.pb +0 -1
  263. package/.scannerwork/scanner-report/changesets-33.pb +0 -1
  264. package/.scannerwork/scanner-report/changesets-34.pb +0 -1
  265. package/.scannerwork/scanner-report/changesets-35.pb +0 -1
  266. package/.scannerwork/scanner-report/changesets-36.pb +0 -1
  267. package/.scannerwork/scanner-report/changesets-37.pb +0 -1
  268. package/.scannerwork/scanner-report/changesets-38.pb +0 -1
  269. package/.scannerwork/scanner-report/changesets-39.pb +0 -1
  270. package/.scannerwork/scanner-report/changesets-63.pb +0 -1
  271. package/.scannerwork/scanner-report/changesets-64.pb +0 -1
  272. package/.scannerwork/scanner-report/changesets-65.pb +0 -1
  273. package/.scannerwork/scanner-report/changesets-67.pb +0 -1
  274. package/.scannerwork/scanner-report/component-16.pb +0 -1
  275. package/.scannerwork/scanner-report/component-17.pb +0 -1
  276. package/.scannerwork/scanner-report/component-18.pb +0 -1
  277. package/.scannerwork/scanner-report/component-19.pb +0 -1
  278. package/.scannerwork/scanner-report/component-21.pb +0 -1
  279. package/.scannerwork/scanner-report/component-23.pb +0 -1
  280. package/.scannerwork/scanner-report/component-26.pb +0 -1
  281. package/.scannerwork/scanner-report/component-29.pb +0 -1
  282. package/.scannerwork/scanner-report/component-30.pb +0 -1
  283. package/.scannerwork/scanner-report/component-31.pb +0 -1
  284. package/.scannerwork/scanner-report/component-32.pb +0 -1
  285. package/.scannerwork/scanner-report/component-33.pb +0 -1
  286. package/.scannerwork/scanner-report/component-34.pb +0 -1
  287. package/.scannerwork/scanner-report/component-35.pb +0 -1
  288. package/.scannerwork/scanner-report/component-36.pb +0 -1
  289. package/.scannerwork/scanner-report/component-37.pb +0 -1
  290. package/.scannerwork/scanner-report/component-38.pb +0 -1
  291. package/.scannerwork/scanner-report/component-39.pb +0 -1
  292. package/.scannerwork/scanner-report/component-63.pb +0 -1
  293. package/.scannerwork/scanner-report/component-65.pb +0 -1
  294. package/.scannerwork/scanner-report/component-67.pb +0 -1
  295. package/.scannerwork/scanner-report/component-70.pb +0 -1
  296. package/.scannerwork/scanner-report/coverages-16.pb +0 -0
  297. package/.scannerwork/scanner-report/coverages-17.pb +0 -0
  298. package/.scannerwork/scanner-report/coverages-23.pb +0 -0
  299. package/.scannerwork/scanner-report/coverages-30.pb +0 -0
  300. package/.scannerwork/scanner-report/coverages-31.pb +0 -0
  301. package/.scannerwork/scanner-report/coverages-35.pb +0 -0
  302. package/.scannerwork/scanner-report/coverages-36.pb +0 -0
  303. package/.scannerwork/scanner-report/coverages-38.pb +0 -0
  304. package/.scannerwork/scanner-report/coverages-39.pb +0 -0
  305. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  306. package/.scannerwork/scanner-report/coverages-67.pb +0 -0
  307. package/.scannerwork/scanner-report/duplications-39.pb +0 -2
  308. package/.scannerwork/scanner-report/duplications-56.pb +0 -2
  309. package/.scannerwork/scanner-report/measures-16.pb +0 -0
  310. package/.scannerwork/scanner-report/measures-17.pb +0 -0
  311. package/.scannerwork/scanner-report/measures-23.pb +0 -0
  312. package/.scannerwork/scanner-report/measures-30.pb +0 -0
  313. package/.scannerwork/scanner-report/measures-31.pb +0 -0
  314. package/.scannerwork/scanner-report/measures-35.pb +0 -0
  315. package/.scannerwork/scanner-report/measures-36.pb +0 -15
  316. package/.scannerwork/scanner-report/measures-38.pb +0 -0
  317. package/.scannerwork/scanner-report/measures-39.pb +0 -0
  318. package/.scannerwork/scanner-report/measures-63.pb +0 -0
  319. package/.scannerwork/scanner-report/measures-67.pb +0 -0
  320. package/.scannerwork/scanner-report/measures-70.pb +0 -0
  321. package/.scannerwork/scanner-report/source-16.txt +0 -46
  322. package/.scannerwork/scanner-report/source-17.txt +0 -130
  323. package/.scannerwork/scanner-report/source-23.txt +0 -101
  324. package/.scannerwork/scanner-report/source-31.txt +0 -37
  325. package/.scannerwork/scanner-report/source-35.txt +0 -75
  326. package/.scannerwork/scanner-report/source-36.txt +0 -151
  327. package/.scannerwork/scanner-report/source-38.txt +0 -40
  328. package/.scannerwork/scanner-report/source-39.txt +0 -187
  329. package/.scannerwork/scanner-report/source-63.txt +0 -31
  330. package/.scannerwork/scanner-report/source-67.txt +0 -414
  331. package/.scannerwork/scanner-report/source-70.txt +0 -424
  332. package/.scannerwork/scanner-report/symbols-16.pb +0 -7
  333. package/.scannerwork/scanner-report/symbols-17.pb +0 -86
  334. package/.scannerwork/scanner-report/symbols-23.pb +0 -58
  335. package/.scannerwork/scanner-report/symbols-30.pb +0 -8
  336. package/.scannerwork/scanner-report/symbols-31.pb +0 -13
  337. package/.scannerwork/scanner-report/symbols-35.pb +0 -39
  338. package/.scannerwork/scanner-report/symbols-36.pb +0 -93
  339. package/.scannerwork/scanner-report/symbols-38.pb +0 -23
  340. package/.scannerwork/scanner-report/symbols-39.pb +0 -227
  341. package/.scannerwork/scanner-report/symbols-64.pb +0 -18
  342. package/.scannerwork/scanner-report/symbols-67.pb +0 -604
  343. package/.scannerwork/scanner-report/syntax-highlightings-16.pb +0 -62
  344. package/.scannerwork/scanner-report/syntax-highlightings-17.pb +0 -125
  345. package/.scannerwork/scanner-report/syntax-highlightings-23.pb +0 -154
  346. package/.scannerwork/scanner-report/syntax-highlightings-30.pb +0 -49
  347. package/.scannerwork/scanner-report/syntax-highlightings-31.pb +0 -62
  348. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +0 -101
  349. package/.scannerwork/scanner-report/syntax-highlightings-36.pb +0 -237
  350. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +0 -56
  351. package/.scannerwork/scanner-report/syntax-highlightings-39.pb +0 -368
  352. package/.scannerwork/scanner-report/syntax-highlightings-63.pb +0 -45
  353. package/.scannerwork/scanner-report/syntax-highlightings-67.pb +0 -641
  354. package/.scannerwork/scanner-report/syntax-highlightings-70.pb +0 -3339
  355. /package/.scannerwork/scanner-report/{coverages-18.pb → coverages-41.pb} +0 -0
  356. /package/.scannerwork/scanner-report/{coverages-37.pb → coverages-42.pb} +0 -0
  357. /package/.scannerwork/scanner-report/{coverages-34.pb → coverages-43.pb} +0 -0
  358. /package/.scannerwork/scanner-report/{coverages-19.pb → coverages-44.pb} +0 -0
  359. /package/.scannerwork/scanner-report/{coverages-33.pb → coverages-45.pb} +0 -0
  360. /package/.scannerwork/scanner-report/{coverages-24.pb → coverages-46.pb} +0 -0
  361. /package/.scannerwork/scanner-report/{coverages-21.pb → coverages-47.pb} +0 -0
  362. /package/.scannerwork/scanner-report/{coverages-29.pb → coverages-48.pb} +0 -0
  363. /package/.scannerwork/scanner-report/{coverages-26.pb → coverages-49.pb} +0 -0
  364. /package/.scannerwork/scanner-report/{coverages-65.pb → coverages-5.pb} +0 -0
  365. /package/.scannerwork/scanner-report/{coverages-27.pb → coverages-50.pb} +0 -0
  366. /package/.scannerwork/scanner-report/{coverages-25.pb → coverages-51.pb} +0 -0
  367. /package/.scannerwork/scanner-report/{coverages-32.pb → coverages-52.pb} +0 -0
  368. /package/.scannerwork/scanner-report/{coverages-63.pb → coverages-6.pb} +0 -0
  369. /package/.scannerwork/scanner-report/{duplications-16.pb → duplications-10.pb} +0 -0
  370. /package/.scannerwork/scanner-report/{duplications-17.pb → duplications-11.pb} +0 -0
  371. /package/.scannerwork/scanner-report/{duplications-18.pb → duplications-15.pb} +0 -0
  372. /package/.scannerwork/scanner-report/{duplications-19.pb → duplications-2.pb} +0 -0
  373. /package/.scannerwork/scanner-report/{duplications-21.pb → duplications-3.pb} +0 -0
  374. /package/.scannerwork/scanner-report/{duplications-23.pb → duplications-4.pb} +0 -0
  375. /package/.scannerwork/scanner-report/{duplications-24.pb → duplications-40.pb} +0 -0
  376. /package/.scannerwork/scanner-report/{duplications-27.pb → duplications-41.pb} +0 -0
  377. /package/.scannerwork/scanner-report/{duplications-29.pb → duplications-42.pb} +0 -0
  378. /package/.scannerwork/scanner-report/{duplications-31.pb → duplications-43.pb} +0 -0
  379. /package/.scannerwork/scanner-report/{duplications-32.pb → duplications-44.pb} +0 -0
  380. /package/.scannerwork/scanner-report/{duplications-33.pb → duplications-45.pb} +0 -0
  381. /package/.scannerwork/scanner-report/{duplications-34.pb → duplications-46.pb} +0 -0
  382. /package/.scannerwork/scanner-report/{duplications-35.pb → duplications-47.pb} +0 -0
  383. /package/.scannerwork/scanner-report/{duplications-36.pb → duplications-48.pb} +0 -0
  384. /package/.scannerwork/scanner-report/{duplications-26.pb → duplications-49.pb} +0 -0
  385. /package/.scannerwork/scanner-report/{duplications-37.pb → duplications-5.pb} +0 -0
  386. /package/.scannerwork/scanner-report/{duplications-38.pb → duplications-50.pb} +0 -0
  387. /package/.scannerwork/scanner-report/{duplications-25.pb → duplications-51.pb} +0 -0
  388. /package/.scannerwork/scanner-report/{duplications-63.pb → duplications-52.pb} +0 -0
  389. /package/.scannerwork/scanner-report/{duplications-64.pb → duplications-6.pb} +0 -0
  390. /package/.scannerwork/scanner-report/{duplications-65.pb → duplications-7.pb} +0 -0
  391. /package/.scannerwork/scanner-report/{duplications-67.pb → duplications-9.pb} +0 -0
  392. /package/.scannerwork/scanner-report/{issues-29.pb → issues-48.pb} +0 -0
  393. /package/.scannerwork/scanner-report/{issues-26.pb → issues-49.pb} +0 -0
  394. /package/.scannerwork/scanner-report/{issues-32.pb → issues-52.pb} +0 -0
  395. /package/.scannerwork/scanner-report/{issues-17.pb → issues-61.pb} +0 -0
  396. /package/.scannerwork/scanner-report/{measures-18.pb → measures-41.pb} +0 -0
  397. /package/.scannerwork/scanner-report/{measures-37.pb → measures-42.pb} +0 -0
  398. /package/.scannerwork/scanner-report/{measures-34.pb → measures-43.pb} +0 -0
  399. /package/.scannerwork/scanner-report/{measures-19.pb → measures-44.pb} +0 -0
  400. /package/.scannerwork/scanner-report/{measures-33.pb → measures-45.pb} +0 -0
  401. /package/.scannerwork/scanner-report/{measures-21.pb → measures-47.pb} +0 -0
  402. /package/.scannerwork/scanner-report/{measures-29.pb → measures-48.pb} +0 -0
  403. /package/.scannerwork/scanner-report/{measures-26.pb → measures-49.pb} +0 -0
  404. /package/.scannerwork/scanner-report/{measures-65.pb → measures-5.pb} +0 -0
  405. /package/.scannerwork/scanner-report/{measures-32.pb → measures-52.pb} +0 -0
  406. /package/.scannerwork/scanner-report/{source-18.txt → source-41.txt} +0 -0
  407. /package/.scannerwork/scanner-report/{source-37.txt → source-42.txt} +0 -0
  408. /package/.scannerwork/scanner-report/{source-34.txt → source-43.txt} +0 -0
  409. /package/.scannerwork/scanner-report/{source-19.txt → source-44.txt} +0 -0
  410. /package/.scannerwork/scanner-report/{source-33.txt → source-45.txt} +0 -0
  411. /package/.scannerwork/scanner-report/{source-21.txt → source-47.txt} +0 -0
  412. /package/.scannerwork/scanner-report/{source-29.txt → source-48.txt} +0 -0
  413. /package/.scannerwork/scanner-report/{source-26.txt → source-49.txt} +0 -0
  414. /package/.scannerwork/scanner-report/{source-65.txt → source-5.txt} +0 -0
  415. /package/.scannerwork/scanner-report/{source-32.txt → source-52.txt} +0 -0
  416. /package/.scannerwork/scanner-report/{symbols-18.pb → symbols-41.pb} +0 -0
  417. /package/.scannerwork/scanner-report/{symbols-37.pb → symbols-42.pb} +0 -0
  418. /package/.scannerwork/scanner-report/{symbols-34.pb → symbols-43.pb} +0 -0
  419. /package/.scannerwork/scanner-report/{symbols-19.pb → symbols-44.pb} +0 -0
  420. /package/.scannerwork/scanner-report/{symbols-33.pb → symbols-45.pb} +0 -0
  421. /package/.scannerwork/scanner-report/{symbols-24.pb → symbols-46.pb} +0 -0
  422. /package/.scannerwork/scanner-report/{symbols-21.pb → symbols-47.pb} +0 -0
  423. /package/.scannerwork/scanner-report/{symbols-29.pb → symbols-48.pb} +0 -0
  424. /package/.scannerwork/scanner-report/{symbols-26.pb → symbols-49.pb} +0 -0
  425. /package/.scannerwork/scanner-report/{symbols-65.pb → symbols-5.pb} +0 -0
  426. /package/.scannerwork/scanner-report/{symbols-27.pb → symbols-50.pb} +0 -0
  427. /package/.scannerwork/scanner-report/{symbols-25.pb → symbols-51.pb} +0 -0
  428. /package/.scannerwork/scanner-report/{symbols-32.pb → symbols-52.pb} +0 -0
  429. /package/.scannerwork/scanner-report/{symbols-63.pb → symbols-6.pb} +0 -0
  430. /package/.scannerwork/scanner-report/{syntax-highlightings-18.pb → syntax-highlightings-41.pb} +0 -0
  431. /package/.scannerwork/scanner-report/{syntax-highlightings-37.pb → syntax-highlightings-42.pb} +0 -0
  432. /package/.scannerwork/scanner-report/{syntax-highlightings-34.pb → syntax-highlightings-43.pb} +0 -0
  433. /package/.scannerwork/scanner-report/{syntax-highlightings-19.pb → syntax-highlightings-44.pb} +0 -0
  434. /package/.scannerwork/scanner-report/{syntax-highlightings-33.pb → syntax-highlightings-45.pb} +0 -0
  435. /package/.scannerwork/scanner-report/{syntax-highlightings-21.pb → syntax-highlightings-47.pb} +0 -0
  436. /package/.scannerwork/scanner-report/{syntax-highlightings-29.pb → syntax-highlightings-48.pb} +0 -0
  437. /package/.scannerwork/scanner-report/{syntax-highlightings-26.pb → syntax-highlightings-49.pb} +0 -0
  438. /package/.scannerwork/scanner-report/{syntax-highlightings-65.pb → syntax-highlightings-5.pb} +0 -0
  439. /package/.scannerwork/scanner-report/{syntax-highlightings-32.pb → syntax-highlightings-52.pb} +0 -0
@@ -0,0 +1,183 @@
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 describe it beforeEach */
16
+ 'use strict';
17
+
18
+ const assert = require('assert');
19
+ const backup = require('../includes/shallowbackup.js');
20
+ const request = require('../includes/request.js');
21
+ const fs = require('fs');
22
+ const nock = require('nock');
23
+
24
+ // Function to create a DB object and call the shallow backup function
25
+ // This is normally done by app.js
26
+ function shallowBackup(dbUrl, opts) {
27
+ const db = request.client(dbUrl, opts);
28
+ // Disable compression to make body assertions easier
29
+ db.service.setEnableGzipCompression(false);
30
+ return backup(db, opts);
31
+ }
32
+
33
+ // Note all these tests include a body parameter of include_docs and a query
34
+ // string of include_docs because of a quirk of nano that when using the fetch
35
+ // method always adds the include_docs query string.
36
+ describe('#unit Perform backup using shallow backup', function() {
37
+ const dbUrl = 'http://localhost:5984/animaldb';
38
+ // Query string keys are stringified by Nano
39
+ const badgerKey = 'badger\0';
40
+ const kookaburraKey = 'kookaburra\0';
41
+ const snipeKey = 'snipe\0';
42
+
43
+ beforeEach('Reset nocks', function() {
44
+ nock.cleanAll();
45
+ });
46
+
47
+ it('should perform a shallow backup', async function() {
48
+ const couch = nock(dbUrl)
49
+ // batch 1
50
+ .post('/_all_docs', { limit: 3, include_docs: true })
51
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
52
+ // batch 2
53
+ .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
54
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
55
+ // batch 3
56
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
57
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_3.json', 'utf8')))
58
+ // batch 4
59
+ .post('/_all_docs', { limit: 3, start_key: snipeKey, include_docs: true })
60
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_4.json', 'utf8')));
61
+
62
+ return new Promise((resolve, reject) => {
63
+ shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
64
+ .on('error', function(err) {
65
+ reject(err);
66
+ })
67
+ .on('received', function(data) {
68
+ try {
69
+ if (data.batch === 3) {
70
+ assert.strictEqual(data.length, 2); // smaller last batch
71
+ } else {
72
+ assert.strictEqual(data.length, 3);
73
+ }
74
+ } catch (err) {
75
+ reject(err);
76
+ }
77
+ })
78
+ .on('finished', function(data) {
79
+ try {
80
+ assert.strictEqual(data.total, 11);
81
+ assert.ok(couch.isDone());
82
+ resolve();
83
+ } catch (err) {
84
+ reject(err);
85
+ }
86
+ });
87
+ });
88
+ });
89
+
90
+ it('should perform a shallow backup with transient error', async function() {
91
+ const couch = nock(dbUrl)
92
+ // batch 1
93
+ .post('/_all_docs', { limit: 3, include_docs: true })
94
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
95
+ // batch 2
96
+ .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
97
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
98
+ // batch 3 - transient error
99
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
100
+ .reply(500, { error: 'Internal Server Error' })
101
+ // batch 3 - retry
102
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
103
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_3.json', 'utf8')))
104
+ // batch 4
105
+ .post('/_all_docs', { limit: 3, start_key: snipeKey, include_docs: true })
106
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_4.json', 'utf8')));
107
+
108
+ return new Promise((resolve, reject) => {
109
+ shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
110
+ .on('error', function(err) {
111
+ try {
112
+ assert.strictEqual(err.name, 'HTTPError');
113
+ } catch (err) {
114
+ reject(err);
115
+ }
116
+ })
117
+ .on('received', function(data) {
118
+ try {
119
+ if (data.batch === 3) {
120
+ assert.strictEqual(data.length, 2); // smaller last batch
121
+ } else {
122
+ assert.strictEqual(data.length, 3);
123
+ }
124
+ } catch (err) {
125
+ reject(err);
126
+ }
127
+ })
128
+ .on('finished', function(data) {
129
+ try {
130
+ assert.strictEqual(data.total, 11);
131
+ assert.ok(couch.isDone());
132
+ resolve();
133
+ } catch (err) {
134
+ reject(err);
135
+ }
136
+ });
137
+ });
138
+ });
139
+
140
+ it('should fail to perform a shallow backup on fatal error', async function() {
141
+ const couch = nock(dbUrl)
142
+ // batch 1
143
+ .post('/_all_docs', { limit: 3, include_docs: true })
144
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
145
+ // batch 2
146
+ .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
147
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
148
+ // batch 3 - fatal error
149
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
150
+ .reply(401, { error: 'Unauthorized' });
151
+
152
+ let errCount = 0;
153
+
154
+ return new Promise((resolve, reject) => {
155
+ shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
156
+ .on('error', function(err) {
157
+ try {
158
+ errCount++;
159
+ assert.strictEqual(err.name, 'Unauthorized');
160
+ } catch (err) {
161
+ reject(err);
162
+ }
163
+ })
164
+ .on('received', function(data) {
165
+ try {
166
+ assert.strictEqual(data.length, 3);
167
+ } catch (err) {
168
+ reject(err);
169
+ }
170
+ })
171
+ .on('finished', function(data) {
172
+ try {
173
+ assert.strictEqual(data.total, 6);
174
+ assert.ok(couch.isDone());
175
+ assert.strictEqual(errCount, 1);
176
+ resolve();
177
+ } catch (err) {
178
+ reject(err);
179
+ }
180
+ });
181
+ });
182
+ });
183
+ });
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2021 IBM Corp. All rights reserved.
1
+ // Copyright © 2023 IBM Corp. All rights reserved.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -11,108 +11,141 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- 'use strict';
15
-
16
- const path = require('path');
17
- const tmp = require('tmp');
18
-
19
- /**
20
- Return API default settings.
21
- */
22
- function apiDefaults() {
23
- return {
24
- parallelism: 5,
25
- bufferSize: 500,
26
- requestTimeout: 120000,
27
- log: tmp.tmpNameSync(),
28
- resume: false,
29
- mode: 'full'
30
- };
31
- }
32
-
33
- /**
34
- Return CLI default settings.
35
- */
36
- function cliDefaults() {
37
- const defaults = apiDefaults();
38
-
39
- // add additional legacy settings
40
- defaults.db = 'test';
41
- defaults.url = 'http://localhost:5984';
42
-
43
- // add CLI only option
44
- defaults.quiet = false;
45
-
46
- return defaults;
47
- }
48
-
49
- /**
50
- Override settings **in-place** with environment variables.
51
- */
52
- function applyEnvironmentVariables(opts) {
53
- // if we have a custom CouchDB url
54
- if (typeof process.env.COUCH_URL !== 'undefined') {
55
- opts.url = process.env.COUCH_URL;
56
- }
57
-
58
- // if we have a specified databases
59
- if (typeof process.env.COUCH_DATABASE !== 'undefined') {
60
- opts.db = process.env.COUCH_DATABASE;
61
- }
62
-
63
- // if we have a specified buffer size
64
- if (typeof process.env.COUCH_BUFFER_SIZE !== 'undefined') {
65
- opts.bufferSize = parseInt(process.env.COUCH_BUFFER_SIZE);
66
- }
67
-
68
- // if we have a specified parallelism
69
- if (typeof process.env.COUCH_PARALLELISM !== 'undefined') {
70
- opts.parallelism = parseInt(process.env.COUCH_PARALLELISM);
71
- }
72
-
73
- // if we have a specified request timeout
74
- if (typeof process.env.COUCH_REQUEST_TIMEOUT !== 'undefined') {
75
- opts.requestTimeout = parseInt(process.env.COUCH_REQUEST_TIMEOUT);
76
- }
77
-
78
- // if we have a specified log file
79
- if (typeof process.env.COUCH_LOG !== 'undefined') {
80
- opts.log = path.normalize(process.env.COUCH_LOG);
81
- }
82
-
83
- // if we are instructed to resume
84
- if (typeof process.env.COUCH_RESUME !== 'undefined' && process.env.COUCH_RESUME === 'true') {
85
- opts.resume = true;
86
- }
87
-
88
- // if we are given an output filename
89
- if (typeof process.env.COUCH_OUTPUT !== 'undefined') {
90
- opts.output = path.normalize(process.env.COUCH_OUTPUT);
91
- }
92
-
93
- // if we only want a shallow copy
94
- if (typeof process.env.COUCH_MODE !== 'undefined' && process.env.COUCH_MODE === 'shallow') {
95
- opts.mode = 'shallow';
96
- }
97
-
98
- // if we are instructed to be quiet
99
- if (typeof process.env.COUCH_QUIET !== 'undefined' && process.env.COUCH_QUIET === 'true') {
100
- opts.quiet = true;
101
- }
102
14
 
103
- // if we have a specified API key
104
- if (typeof process.env.CLOUDANT_IAM_API_KEY !== 'undefined') {
105
- opts.iamApiKey = process.env.CLOUDANT_IAM_API_KEY;
106
- }
15
+ /* global */
16
+ 'use strict';
107
17
 
108
- // if we have a specified IAM token endpoint
109
- if (typeof process.env.CLOUDANT_IAM_TOKEN_URL !== 'undefined') {
110
- opts.iamTokenUrl = process.env.CLOUDANT_IAM_TOKEN_URL;
18
+ const { fork, spawn } = require('node:child_process');
19
+ const { once } = require('node:events');
20
+ const { Duplex } = require('node:stream');
21
+ const debug = require('debug');
22
+ const logProcess = debug('couchbackup:test:process');
23
+
24
+ class TestProcess {
25
+ constructor(cmd, args, mode) {
26
+ this.cmd = cmd;
27
+ // Child process stdio [stdin, stdout, stderr, ...extra channels]
28
+ const childProcessOptions = { stdio: [] };
29
+ switch (mode) {
30
+ case 'readable':
31
+ // Readable only, no writing to stdin so ignore it
32
+ childProcessOptions.stdio = ['ignore', 'pipe', 'inherit'];
33
+ break;
34
+ case 'writable':
35
+ // Writable only, no reading from stdout so ignore it
36
+ childProcessOptions.stdio = ['pipe', 'ignore', 'inherit'];
37
+ break;
38
+ default:
39
+ // Default Duplex mode pipe both stdin and stdout
40
+ childProcessOptions.stdio = ['pipe', 'pipe', 'inherit'];
41
+ break;
42
+ }
43
+ if (cmd.endsWith('.js')) {
44
+ // Add Node fork ipc channel
45
+ childProcessOptions.stdio.push('ipc');
46
+ logProcess(`Forking Node process for ${cmd} with stdio:[${childProcessOptions.stdio}]`);
47
+ this.childProcess = fork(cmd, args, childProcessOptions);
48
+ } else {
49
+ logProcess(`Spawning process for ${cmd} with stdio:[${childProcessOptions.stdio}]`);
50
+ this.childProcess = spawn(cmd, args, childProcessOptions);
51
+ }
52
+
53
+ this.childProcessPromise = once(this.childProcess, 'close').then(() => {
54
+ const code = this.childProcess.exitCode;
55
+ const signal = this.childProcess.signalCode;
56
+ logProcess(`Test process ${cmd} closed with code ${code} and signal ${signal}`);
57
+ if (code === 0) {
58
+ logProcess(`Resolving process promise for ${cmd}`);
59
+ return Promise.resolve(code);
60
+ } else {
61
+ const e = new Error(`Test child process ${cmd} exited with code ${code} and ${signal}. This may be normal for error case testing.`);
62
+ e.code = code;
63
+ e.signal = signal;
64
+ logProcess(`Will reject process promise for ${cmd} with ${e}`);
65
+ return Promise.reject(e);
66
+ }
67
+ });
68
+
69
+ switch (mode) {
70
+ case 'readable':
71
+ this.duplexFrom = this.childProcess.stdout;
72
+ break;
73
+ case 'writable':
74
+ this.duplexFrom = this.childProcess.stdin;
75
+ break;
76
+ default:
77
+ // Default is duplex
78
+ this.duplexFrom = { writable: this.childProcess.stdin, readable: this.childProcess.stdout };
79
+ }
80
+
81
+ this.stream = Duplex.from(this.duplexFrom);
111
82
  }
112
83
  }
113
84
 
114
85
  module.exports = {
115
- apiDefaults: apiDefaults,
116
- cliDefaults: cliDefaults,
117
- applyEnvironmentVariables: applyEnvironmentVariables
86
+ TestProcess,
87
+ cliBackup: function(databaseName, params = {}) {
88
+ const args = ['--db', databaseName];
89
+ if (params.opts) {
90
+ if (params.opts.mode) {
91
+ args.push('--mode');
92
+ args.push(params.opts.mode);
93
+ }
94
+ if (params.opts.output) {
95
+ args.push('--output');
96
+ args.push(params.opts.output);
97
+ }
98
+ if (params.opts.log) {
99
+ args.push('--log');
100
+ args.push(params.opts.log);
101
+ }
102
+ if (params.opts.resume) {
103
+ args.push('--resume');
104
+ args.push(params.opts.resume);
105
+ }
106
+ if (params.opts.bufferSize) {
107
+ args.push('--buffer-size');
108
+ args.push(params.opts.bufferSize);
109
+ }
110
+ if (params.opts.iamApiKey) {
111
+ args.push('--iam-api-key');
112
+ args.push(params.opts.iamApiKey);
113
+ }
114
+ }
115
+ return new TestProcess('./bin/couchbackup.bin.js', args, 'readable');
116
+ },
117
+ cliRestore: function(databaseName, params) {
118
+ const args = ['--db', databaseName];
119
+ if (params.opts) {
120
+ if (params.opts.bufferSize) {
121
+ args.push('--buffer-size');
122
+ args.push(params.opts.bufferSize);
123
+ }
124
+ if (params.opts.parallelism) {
125
+ args.push('--parallelism');
126
+ args.push(params.opts.parallelism);
127
+ }
128
+ if (params.opts.requestTimeout) {
129
+ args.push('--request-timeout');
130
+ args.push(params.opts.requestTimeout);
131
+ }
132
+ if (params.opts.iamApiKey) {
133
+ args.push('--iam-api-key');
134
+ args.push(params.opts.iamApiKey);
135
+ }
136
+ }
137
+ return new TestProcess('./bin/couchrestore.bin.js', args, 'writable');
138
+ },
139
+ cliGzip: function() {
140
+ return new TestProcess('gzip', []);
141
+ },
142
+ cliGunzip: function() {
143
+ return new TestProcess('gunzip', []);
144
+ },
145
+ cliEncrypt: function() {
146
+ return new TestProcess('openssl', ['aes-128-cbc', '-pass', 'pass:12345']);
147
+ },
148
+ cliDecrypt: function() {
149
+ return new TestProcess('openssl', ['aes-128-cbc', '-d', '-pass', 'pass:12345']);
150
+ }
118
151
  };
@@ -1,4 +1,4 @@
1
- // Copyright © 2017 IBM Corp. All rights reserved.
1
+ // Copyright © 2017, 2023 IBM Corp. All rights reserved.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -11,36 +11,30 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- 'use strict';
15
-
16
- // stolen from http://strongloop.com/strongblog/practical-examples-of-the-new-node-js-streams-api/
17
- const stream = require('stream');
18
-
19
- module.exports = function() {
20
- const liner = new stream.Transform({ objectMode: true });
21
14
 
22
- liner._transform = function(chunk, encoding, done) {
23
- let data = chunk.toString();
24
- if (this._lastLineData) {
25
- data = this._lastLineData + data;
26
- }
27
-
28
- const lines = data.split('\n');
29
- this._lastLineData = lines.splice(lines.length - 1, 1)[0];
30
-
31
- for (const i in lines) {
32
- this.push(lines[i]);
33
- }
34
- done();
35
- };
15
+ /* global describe it */
16
+ 'use strict';
36
17
 
37
- liner._flush = function(done) {
38
- if (this._lastLineData) {
39
- this.push(this._lastLineData);
40
- }
41
- this._lastLineData = null;
42
- done();
43
- };
18
+ const assert = require('assert');
19
+ const logfilesummary = require('../includes/logfilesummary.js');
44
20
 
45
- return liner;
46
- };
21
+ describe('#unit Fetching summary from the log file', function() {
22
+ it('should fetch a summary correctly', function() {
23
+ return new Promise((resolve, reject) => {
24
+ logfilesummary('./test/fixtures/test.log', function(err, data) {
25
+ try {
26
+ assert.ok(!err);
27
+ assert.ok(data);
28
+ assert.strictEqual(data.changesComplete, true);
29
+ assert.strictEqual(typeof data.batches, 'object');
30
+ assert.strictEqual(Object.keys(data.batches).length, 2);
31
+ assert.deepStrictEqual(data.batches['1'], true);
32
+ assert.deepStrictEqual(data.batches['4'], true);
33
+ resolve();
34
+ } catch (err) {
35
+ reject(err);
36
+ }
37
+ });
38
+ });
39
+ });
40
+ });