/ToMigrate/Raven.Tests.Issues/1379/RavenDB_1379_Client.cs

https://github.com/fitzchak/ravendb · C# · 702 lines · 570 code · 132 blank · 0 comment · 12 complexity · 90abc9f33adf0a206f9e3d0ebc4d34cc MD5 · raw file

  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Raven.Client;
  4. using Raven.Json.Linq;
  5. using Raven.Tests.Common;
  6. using Xunit;
  7. using Xunit.Extensions;
  8. namespace Raven.Tests.Issues
  9. {
  10. public class RavenDB_1379_Client : RavenTest
  11. {
  12. [Theory]
  13. [PropertyData("Storages")]
  14. public void PagingWithoutFilters(string requestedStorage)
  15. {
  16. using (var documentStore = NewDocumentStore(requestedStorage: requestedStorage))
  17. {
  18. documentStore.SystemDatabase.Documents.Put("FooBar1", null, new RavenJObject(), new RavenJObject(), null);
  19. documentStore.SystemDatabase.Documents.Put("BarFoo2", null, new RavenJObject(), new RavenJObject(), null);
  20. documentStore.SystemDatabase.Documents.Put("FooBar3", null, new RavenJObject(), new RavenJObject(), null);
  21. documentStore.SystemDatabase.Documents.Put("FooBar11", null, new RavenJObject(), new RavenJObject(), null);
  22. documentStore.SystemDatabase.Documents.Put("FooBar12", null, new RavenJObject(), new RavenJObject(), null);
  23. documentStore.SystemDatabase.Documents.Put("FooBar21", null, new RavenJObject(), new RavenJObject(), null);
  24. documentStore.SystemDatabase.Documents.Put("FooBar5", null, new RavenJObject(), new RavenJObject(), null);
  25. documentStore.SystemDatabase.Documents.Put("BarFoo7", null, new RavenJObject(), new RavenJObject(), null);
  26. documentStore.SystemDatabase.Documents.Put("FooBar111", null, new RavenJObject(), new RavenJObject(), null);
  27. documentStore.SystemDatabase.Documents.Put("BarFoo6", null, new RavenJObject(), new RavenJObject(), null);
  28. documentStore.SystemDatabase.Documents.Put("FooBar6", null, new RavenJObject(), new RavenJObject(), null);
  29. documentStore.SystemDatabase.Documents.Put("FooBar8", null, new RavenJObject(), new RavenJObject(), null);
  30. var fetchedDocuments = documentStore
  31. .DatabaseCommands
  32. .StartsWith("FooBar", string.Empty, 0, 4, exclude: string.Empty)
  33. .ToList();
  34. var foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  35. .ToList();
  36. Assert.Equal(4, foundDocKeys.Count);
  37. Assert.Contains("FooBar1", foundDocKeys);
  38. Assert.Contains("FooBar11", foundDocKeys);
  39. Assert.Contains("FooBar111", foundDocKeys);
  40. Assert.Contains("FooBar12", foundDocKeys);
  41. fetchedDocuments = documentStore
  42. .DatabaseCommands
  43. .StartsWith("FooBar", string.Empty, 4, 4, exclude: string.Empty)
  44. .ToList();
  45. foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  46. .ToList();
  47. Assert.Equal(4, foundDocKeys.Count);
  48. Assert.Contains("FooBar21", foundDocKeys);
  49. Assert.Contains("FooBar3", foundDocKeys);
  50. Assert.Contains("FooBar5", foundDocKeys);
  51. Assert.Contains("FooBar6", foundDocKeys);
  52. fetchedDocuments = documentStore
  53. .DatabaseCommands
  54. .StartsWith("FooBar", string.Empty, 8, 4, exclude: string.Empty)
  55. .ToList();
  56. foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  57. .ToList();
  58. Assert.Equal(1, foundDocKeys.Count);
  59. Assert.Contains("FooBar8", foundDocKeys);
  60. }
  61. }
  62. [Theory]
  63. [PropertyData("Storages")]
  64. public void PagingWithoutFiltersWithPagingInformation(string requestedStorage)
  65. {
  66. using (var documentStore = NewDocumentStore(requestedStorage: requestedStorage))
  67. {
  68. documentStore.SystemDatabase.Documents.Put("FooBar1", null, new RavenJObject(), new RavenJObject(), null);
  69. documentStore.SystemDatabase.Documents.Put("BarFoo2", null, new RavenJObject(), new RavenJObject(), null);
  70. documentStore.SystemDatabase.Documents.Put("FooBar3", null, new RavenJObject(), new RavenJObject(), null);
  71. documentStore.SystemDatabase.Documents.Put("FooBar11", null, new RavenJObject(), new RavenJObject(), null);
  72. documentStore.SystemDatabase.Documents.Put("FooBar12", null, new RavenJObject(), new RavenJObject(), null);
  73. documentStore.SystemDatabase.Documents.Put("FooBar21", null, new RavenJObject(), new RavenJObject(), null);
  74. documentStore.SystemDatabase.Documents.Put("FooBar5", null, new RavenJObject(), new RavenJObject(), null);
  75. documentStore.SystemDatabase.Documents.Put("BarFoo7", null, new RavenJObject(), new RavenJObject(), null);
  76. documentStore.SystemDatabase.Documents.Put("FooBar111", null, new RavenJObject(), new RavenJObject(), null);
  77. documentStore.SystemDatabase.Documents.Put("BarFoo6", null, new RavenJObject(), new RavenJObject(), null);
  78. documentStore.SystemDatabase.Documents.Put("FooBar6", null, new RavenJObject(), new RavenJObject(), null);
  79. documentStore.SystemDatabase.Documents.Put("FooBar8", null, new RavenJObject(), new RavenJObject(), null);
  80. var pagingInformation = new RavenPagingInformation();
  81. var fetchedDocuments = documentStore
  82. .DatabaseCommands
  83. .StartsWith("FooBar", string.Empty, 0, 4, pagingInformation: pagingInformation, exclude: string.Empty)
  84. .ToList();
  85. Assert.Equal(4, pagingInformation.PageSize);
  86. Assert.Equal(0, pagingInformation.Start);
  87. Assert.Equal(4, pagingInformation.NextPageStart);
  88. var foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  89. .ToList();
  90. Assert.Equal(4, foundDocKeys.Count);
  91. Assert.Contains("FooBar1", foundDocKeys);
  92. Assert.Contains("FooBar11", foundDocKeys);
  93. Assert.Contains("FooBar111", foundDocKeys);
  94. Assert.Contains("FooBar12", foundDocKeys);
  95. fetchedDocuments = documentStore
  96. .DatabaseCommands
  97. .StartsWith("FooBar", string.Empty, 4, 4, pagingInformation: pagingInformation, exclude: string.Empty)
  98. .ToList();
  99. Assert.Equal(4, pagingInformation.PageSize);
  100. Assert.Equal(4, pagingInformation.Start);
  101. Assert.Equal(8, pagingInformation.NextPageStart);
  102. foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  103. .ToList();
  104. Assert.Equal(4, foundDocKeys.Count);
  105. Assert.Contains("FooBar21", foundDocKeys);
  106. Assert.Contains("FooBar3", foundDocKeys);
  107. Assert.Contains("FooBar5", foundDocKeys);
  108. Assert.Contains("FooBar6", foundDocKeys);
  109. fetchedDocuments = documentStore
  110. .DatabaseCommands
  111. .StartsWith("FooBar", string.Empty, 8, 4, pagingInformation: pagingInformation, exclude: string.Empty)
  112. .ToList();
  113. Assert.Equal(4, pagingInformation.PageSize);
  114. Assert.Equal(8, pagingInformation.Start);
  115. Assert.Equal(8, pagingInformation.NextPageStart);
  116. foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  117. .ToList();
  118. Assert.Equal(1, foundDocKeys.Count);
  119. Assert.Contains("FooBar8", foundDocKeys);
  120. }
  121. }
  122. [Theory]
  123. [PropertyData("Storages")]
  124. public void PagingWithoutFiltersAsync(string requestedStorage)
  125. {
  126. using (var documentStore = NewDocumentStore(requestedStorage: requestedStorage))
  127. {
  128. documentStore.SystemDatabase.Documents.Put("FooBar1", null, new RavenJObject(), new RavenJObject(), null);
  129. documentStore.SystemDatabase.Documents.Put("BarFoo2", null, new RavenJObject(), new RavenJObject(), null);
  130. documentStore.SystemDatabase.Documents.Put("FooBar3", null, new RavenJObject(), new RavenJObject(), null);
  131. documentStore.SystemDatabase.Documents.Put("FooBar11", null, new RavenJObject(), new RavenJObject(), null);
  132. documentStore.SystemDatabase.Documents.Put("FooBar12", null, new RavenJObject(), new RavenJObject(), null);
  133. documentStore.SystemDatabase.Documents.Put("FooBar21", null, new RavenJObject(), new RavenJObject(), null);
  134. documentStore.SystemDatabase.Documents.Put("FooBar5", null, new RavenJObject(), new RavenJObject(), null);
  135. documentStore.SystemDatabase.Documents.Put("BarFoo7", null, new RavenJObject(), new RavenJObject(), null);
  136. documentStore.SystemDatabase.Documents.Put("FooBar111", null, new RavenJObject(), new RavenJObject(), null);
  137. documentStore.SystemDatabase.Documents.Put("BarFoo6", null, new RavenJObject(), new RavenJObject(), null);
  138. documentStore.SystemDatabase.Documents.Put("FooBar6", null, new RavenJObject(), new RavenJObject(), null);
  139. documentStore.SystemDatabase.Documents.Put("FooBar8", null, new RavenJObject(), new RavenJObject(), null);
  140. var fetchedDocuments = documentStore
  141. .AsyncDatabaseCommands
  142. .StartsWithAsync("FooBar", string.Empty, 0, 4, exclude: string.Empty)
  143. .Result
  144. .ToList();
  145. var foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  146. .ToList();
  147. Assert.Equal(4, foundDocKeys.Count);
  148. Assert.Contains("FooBar1", foundDocKeys);
  149. Assert.Contains("FooBar11", foundDocKeys);
  150. Assert.Contains("FooBar111", foundDocKeys);
  151. Assert.Contains("FooBar12", foundDocKeys);
  152. fetchedDocuments = documentStore
  153. .AsyncDatabaseCommands
  154. .StartsWithAsync("FooBar", string.Empty, 4, 4, exclude: string.Empty)
  155. .Result
  156. .ToList();
  157. foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  158. .ToList();
  159. Assert.Equal(4, foundDocKeys.Count);
  160. Assert.Contains("FooBar21", foundDocKeys);
  161. Assert.Contains("FooBar3", foundDocKeys);
  162. Assert.Contains("FooBar5", foundDocKeys);
  163. Assert.Contains("FooBar6", foundDocKeys);
  164. fetchedDocuments = documentStore
  165. .AsyncDatabaseCommands
  166. .StartsWithAsync("FooBar", string.Empty, 8, 4, exclude: string.Empty)
  167. .Result
  168. .ToList();
  169. foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  170. .ToList();
  171. Assert.Equal(1, foundDocKeys.Count);
  172. Assert.Contains("FooBar8", foundDocKeys);
  173. }
  174. }
  175. [Theory]
  176. [PropertyData("Storages")]
  177. public void PagingWithoutFiltersWithPagingInformationAsync(string requestedStorage)
  178. {
  179. using (var documentStore = NewDocumentStore(requestedStorage: requestedStorage))
  180. {
  181. documentStore.SystemDatabase.Documents.Put("FooBar1", null, new RavenJObject(), new RavenJObject(), null);
  182. documentStore.SystemDatabase.Documents.Put("BarFoo2", null, new RavenJObject(), new RavenJObject(), null);
  183. documentStore.SystemDatabase.Documents.Put("FooBar3", null, new RavenJObject(), new RavenJObject(), null);
  184. documentStore.SystemDatabase.Documents.Put("FooBar11", null, new RavenJObject(), new RavenJObject(), null);
  185. documentStore.SystemDatabase.Documents.Put("FooBar12", null, new RavenJObject(), new RavenJObject(), null);
  186. documentStore.SystemDatabase.Documents.Put("FooBar21", null, new RavenJObject(), new RavenJObject(), null);
  187. documentStore.SystemDatabase.Documents.Put("FooBar5", null, new RavenJObject(), new RavenJObject(), null);
  188. documentStore.SystemDatabase.Documents.Put("BarFoo7", null, new RavenJObject(), new RavenJObject(), null);
  189. documentStore.SystemDatabase.Documents.Put("FooBar111", null, new RavenJObject(), new RavenJObject(), null);
  190. documentStore.SystemDatabase.Documents.Put("BarFoo6", null, new RavenJObject(), new RavenJObject(), null);
  191. documentStore.SystemDatabase.Documents.Put("FooBar6", null, new RavenJObject(), new RavenJObject(), null);
  192. documentStore.SystemDatabase.Documents.Put("FooBar8", null, new RavenJObject(), new RavenJObject(), null);
  193. var pagingInformation = new RavenPagingInformation();
  194. var fetchedDocuments = documentStore
  195. .AsyncDatabaseCommands
  196. .StartsWithAsync("FooBar", string.Empty, 0, 4, pagingInformation: pagingInformation, exclude: string.Empty)
  197. .Result
  198. .ToList();
  199. Assert.Equal(4, pagingInformation.PageSize);
  200. Assert.Equal(0, pagingInformation.Start);
  201. Assert.Equal(4, pagingInformation.NextPageStart);
  202. var foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  203. .ToList();
  204. Assert.Equal(4, foundDocKeys.Count);
  205. Assert.Contains("FooBar1", foundDocKeys);
  206. Assert.Contains("FooBar11", foundDocKeys);
  207. Assert.Contains("FooBar111", foundDocKeys);
  208. Assert.Contains("FooBar12", foundDocKeys);
  209. fetchedDocuments = documentStore
  210. .AsyncDatabaseCommands
  211. .StartsWithAsync("FooBar", string.Empty, 4, 4, pagingInformation: pagingInformation, exclude: string.Empty)
  212. .Result
  213. .ToList();
  214. Assert.Equal(4, pagingInformation.PageSize);
  215. Assert.Equal(4, pagingInformation.Start);
  216. Assert.Equal(8, pagingInformation.NextPageStart);
  217. foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  218. .ToList();
  219. Assert.Equal(4, foundDocKeys.Count);
  220. Assert.Contains("FooBar21", foundDocKeys);
  221. Assert.Contains("FooBar3", foundDocKeys);
  222. Assert.Contains("FooBar5", foundDocKeys);
  223. Assert.Contains("FooBar6", foundDocKeys);
  224. fetchedDocuments = documentStore
  225. .AsyncDatabaseCommands
  226. .StartsWithAsync("FooBar", string.Empty, 8, 4, pagingInformation: pagingInformation, exclude: string.Empty)
  227. .Result
  228. .ToList();
  229. Assert.Equal(4, pagingInformation.PageSize);
  230. Assert.Equal(8, pagingInformation.Start);
  231. Assert.Equal(8, pagingInformation.NextPageStart);
  232. foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  233. .ToList();
  234. Assert.Equal(1, foundDocKeys.Count);
  235. Assert.Contains("FooBar8", foundDocKeys);
  236. }
  237. }
  238. [Theory]
  239. [PropertyData("Storages")]
  240. public void PagingWithExcludesWithPagingInformation(string requestedStorage)
  241. {
  242. using (var documentStore = NewDocumentStore(requestedStorage: requestedStorage))
  243. {
  244. documentStore.SystemDatabase.Documents.Put("FooBar1", null, new RavenJObject(), new RavenJObject(), null);
  245. documentStore.SystemDatabase.Documents.Put("BarFoo2", null, new RavenJObject(), new RavenJObject(), null);
  246. documentStore.SystemDatabase.Documents.Put("FooBar3", null, new RavenJObject(), new RavenJObject(), null);
  247. documentStore.SystemDatabase.Documents.Put("FooBar11", null, new RavenJObject(), new RavenJObject(), null);
  248. documentStore.SystemDatabase.Documents.Put("FooBar12", null, new RavenJObject(), new RavenJObject(), null);
  249. documentStore.SystemDatabase.Documents.Put("FooBar21", null, new RavenJObject(), new RavenJObject(), null);
  250. documentStore.SystemDatabase.Documents.Put("FooBar5", null, new RavenJObject(), new RavenJObject(), null);
  251. documentStore.SystemDatabase.Documents.Put("BarFoo7", null, new RavenJObject(), new RavenJObject(), null);
  252. documentStore.SystemDatabase.Documents.Put("FooBar111", null, new RavenJObject(), new RavenJObject(), null);
  253. documentStore.SystemDatabase.Documents.Put("BarFoo6", null, new RavenJObject(), new RavenJObject(), null);
  254. documentStore.SystemDatabase.Documents.Put("FooBar6", null, new RavenJObject(), new RavenJObject(), null);
  255. documentStore.SystemDatabase.Documents.Put("FooBar8", null, new RavenJObject(), new RavenJObject(), null);
  256. var pagingInformation = new RavenPagingInformation();
  257. var fetchedDocuments = documentStore
  258. .DatabaseCommands
  259. .StartsWith("FooBar", string.Empty, 0, 2, pagingInformation: pagingInformation, exclude: "1*")
  260. .ToList();
  261. Assert.Equal(0, pagingInformation.Start);
  262. Assert.Equal(2, pagingInformation.PageSize);
  263. Assert.Equal(6, pagingInformation.NextPageStart);
  264. var foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  265. .ToList();
  266. Assert.Equal(2, foundDocKeys.Count);
  267. Assert.Contains("FooBar21", foundDocKeys);
  268. Assert.Contains("FooBar3", foundDocKeys);
  269. fetchedDocuments = documentStore
  270. .DatabaseCommands
  271. .StartsWith("FooBar", string.Empty, 2, 2, pagingInformation: pagingInformation, exclude: "1*")
  272. .ToList();
  273. Assert.Equal(2, pagingInformation.Start);
  274. Assert.Equal(2, pagingInformation.PageSize);
  275. Assert.Equal(8, pagingInformation.NextPageStart);
  276. foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  277. .ToList();
  278. Assert.Equal(2, foundDocKeys.Count);
  279. Assert.Contains("FooBar5", foundDocKeys);
  280. Assert.Contains("FooBar6", foundDocKeys);
  281. fetchedDocuments = documentStore
  282. .DatabaseCommands
  283. .StartsWith("FooBar", string.Empty, 4, 2, pagingInformation: pagingInformation, exclude: "1*")
  284. .ToList();
  285. Assert.Equal(4, pagingInformation.Start);
  286. Assert.Equal(2, pagingInformation.PageSize);
  287. Assert.Equal(8, pagingInformation.NextPageStart);
  288. foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  289. .ToList();
  290. Assert.Equal(1, foundDocKeys.Count);
  291. Assert.Contains("FooBar8", foundDocKeys);
  292. }
  293. }
  294. [Theory]
  295. [PropertyData("Storages")]
  296. public void PagingWithMatchesWithPagingInformation(string requestedStorage)
  297. {
  298. using (var documentStore = NewDocumentStore(requestedStorage: requestedStorage))
  299. {
  300. documentStore.SystemDatabase.Documents.Put("FooBar1", null, new RavenJObject(), new RavenJObject(), null);
  301. documentStore.SystemDatabase.Documents.Put("BarFoo2", null, new RavenJObject(), new RavenJObject(), null);
  302. documentStore.SystemDatabase.Documents.Put("FooBar3", null, new RavenJObject(), new RavenJObject(), null);
  303. documentStore.SystemDatabase.Documents.Put("FooBar11", null, new RavenJObject(), new RavenJObject(), null);
  304. documentStore.SystemDatabase.Documents.Put("FooBar12", null, new RavenJObject(), new RavenJObject(), null);
  305. documentStore.SystemDatabase.Documents.Put("FooBar21", null, new RavenJObject(), new RavenJObject(), null);
  306. documentStore.SystemDatabase.Documents.Put("FooBar5", null, new RavenJObject(), new RavenJObject(), null);
  307. documentStore.SystemDatabase.Documents.Put("BarFoo7", null, new RavenJObject(), new RavenJObject(), null);
  308. documentStore.SystemDatabase.Documents.Put("FooBar111", null, new RavenJObject(), new RavenJObject(), null);
  309. documentStore.SystemDatabase.Documents.Put("BarFoo6", null, new RavenJObject(), new RavenJObject(), null);
  310. documentStore.SystemDatabase.Documents.Put("FooBar6", null, new RavenJObject(), new RavenJObject(), null);
  311. documentStore.SystemDatabase.Documents.Put("FooBar8", null, new RavenJObject(), new RavenJObject(), null);
  312. var pagingInformation = new RavenPagingInformation();
  313. var fetchedDocuments = documentStore
  314. .DatabaseCommands
  315. .StartsWith("FooBar", "1*", 0, 2, pagingInformation: pagingInformation)
  316. .ToList();
  317. Assert.Equal(0, pagingInformation.Start);
  318. Assert.Equal(2, pagingInformation.PageSize);
  319. Assert.Equal(2, pagingInformation.NextPageStart);
  320. var foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  321. .ToList();
  322. Assert.Equal(2, foundDocKeys.Count);
  323. Assert.Contains("FooBar1", foundDocKeys);
  324. Assert.Contains("FooBar11", foundDocKeys);
  325. fetchedDocuments = documentStore
  326. .DatabaseCommands
  327. .StartsWith("FooBar", "1*", 2, 1, pagingInformation: pagingInformation)
  328. .ToList();
  329. Assert.Equal(2, pagingInformation.Start);
  330. Assert.Equal(1, pagingInformation.PageSize);
  331. Assert.Equal(3, pagingInformation.NextPageStart);
  332. foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  333. .ToList();
  334. Assert.Equal(1, foundDocKeys.Count);
  335. Assert.Contains("FooBar111", foundDocKeys);
  336. fetchedDocuments = documentStore
  337. .DatabaseCommands
  338. .StartsWith("FooBar", "1*", 3, 10, pagingInformation: pagingInformation)
  339. .ToList();
  340. Assert.Equal(3, pagingInformation.Start);
  341. Assert.Equal(10, pagingInformation.PageSize);
  342. Assert.Equal(3, pagingInformation.NextPageStart);
  343. foundDocKeys = fetchedDocuments.Select(doc => doc.Key)
  344. .ToList();
  345. Assert.Equal(1, foundDocKeys.Count);
  346. Assert.Contains("FooBar12", foundDocKeys);
  347. }
  348. }
  349. [Theory]
  350. [PropertyData("Storages")]
  351. public void StreamingWithoutPagingInformation(string requestedStorage)
  352. {
  353. using (var documentStore = NewDocumentStore(requestedStorage: requestedStorage))
  354. {
  355. documentStore.SystemDatabase.Documents.Put("FooBar1", null, new RavenJObject(), new RavenJObject(), null);
  356. documentStore.SystemDatabase.Documents.Put("BarFoo2", null, new RavenJObject(), new RavenJObject(), null);
  357. documentStore.SystemDatabase.Documents.Put("FooBar3", null, new RavenJObject(), new RavenJObject(), null);
  358. documentStore.SystemDatabase.Documents.Put("FooBar11", null, new RavenJObject(), new RavenJObject(), null);
  359. documentStore.SystemDatabase.Documents.Put("FooBar12", null, new RavenJObject(), new RavenJObject(), null);
  360. documentStore.SystemDatabase.Documents.Put("FooBar21", null, new RavenJObject(), new RavenJObject(), null);
  361. documentStore.SystemDatabase.Documents.Put("FooBar5", null, new RavenJObject(), new RavenJObject(), null);
  362. documentStore.SystemDatabase.Documents.Put("BarFoo7", null, new RavenJObject(), new RavenJObject(), null);
  363. documentStore.SystemDatabase.Documents.Put("FooBar111", null, new RavenJObject(), new RavenJObject(), null);
  364. documentStore.SystemDatabase.Documents.Put("BarFoo6", null, new RavenJObject(), new RavenJObject(), null);
  365. documentStore.SystemDatabase.Documents.Put("FooBar6", null, new RavenJObject(), new RavenJObject(), null);
  366. documentStore.SystemDatabase.Documents.Put("FooBar8", null, new RavenJObject(), new RavenJObject(), null);
  367. var fetchedDocuments = documentStore
  368. .DatabaseCommands
  369. .StreamDocs(startsWith: "FooBar", matches: string.Empty, start: 0, pageSize: 4, exclude: string.Empty);
  370. var foundDocKeys = new List<string>();
  371. while (fetchedDocuments.MoveNext())
  372. foundDocKeys.Add(fetchedDocuments.Current["@metadata"].Value<string>("@id"));
  373. Assert.Equal(4, foundDocKeys.Count);
  374. Assert.Contains("FooBar1", foundDocKeys);
  375. Assert.Contains("FooBar11", foundDocKeys);
  376. Assert.Contains("FooBar111", foundDocKeys);
  377. Assert.Contains("FooBar12", foundDocKeys);
  378. fetchedDocuments = documentStore
  379. .DatabaseCommands
  380. .StreamDocs(startsWith: "FooBar", matches: string.Empty, start: 4, pageSize: 4, exclude: string.Empty);
  381. foundDocKeys = new List<string>();
  382. while (fetchedDocuments.MoveNext())
  383. foundDocKeys.Add(fetchedDocuments.Current["@metadata"].Value<string>("@id"));
  384. Assert.Equal(4, foundDocKeys.Count);
  385. Assert.Contains("FooBar21", foundDocKeys);
  386. Assert.Contains("FooBar3", foundDocKeys);
  387. Assert.Contains("FooBar5", foundDocKeys);
  388. Assert.Contains("FooBar6", foundDocKeys);
  389. fetchedDocuments = documentStore
  390. .DatabaseCommands
  391. .StreamDocs(startsWith: "FooBar", matches: string.Empty, start: 8, pageSize: 4, exclude: string.Empty);
  392. foundDocKeys = new List<string>();
  393. while (fetchedDocuments.MoveNext())
  394. foundDocKeys.Add(fetchedDocuments.Current["@metadata"].Value<string>("@id"));
  395. Assert.Equal(1, foundDocKeys.Count);
  396. Assert.Contains("FooBar8", foundDocKeys);
  397. }
  398. }
  399. [Theory]
  400. [PropertyData("Storages")]
  401. public void StreamingWithPagingInformation(string requestedStorage)
  402. {
  403. using (var documentStore = NewDocumentStore(requestedStorage: requestedStorage))
  404. {
  405. documentStore.SystemDatabase.Documents.Put("FooBar1", null, new RavenJObject(), new RavenJObject(), null);
  406. documentStore.SystemDatabase.Documents.Put("BarFoo2", null, new RavenJObject(), new RavenJObject(), null);
  407. documentStore.SystemDatabase.Documents.Put("FooBar3", null, new RavenJObject(), new RavenJObject(), null);
  408. documentStore.SystemDatabase.Documents.Put("FooBar11", null, new RavenJObject(), new RavenJObject(), null);
  409. documentStore.SystemDatabase.Documents.Put("FooBar12", null, new RavenJObject(), new RavenJObject(), null);
  410. documentStore.SystemDatabase.Documents.Put("FooBar21", null, new RavenJObject(), new RavenJObject(), null);
  411. documentStore.SystemDatabase.Documents.Put("FooBar5", null, new RavenJObject(), new RavenJObject(), null);
  412. documentStore.SystemDatabase.Documents.Put("BarFoo7", null, new RavenJObject(), new RavenJObject(), null);
  413. documentStore.SystemDatabase.Documents.Put("FooBar111", null, new RavenJObject(), new RavenJObject(), null);
  414. documentStore.SystemDatabase.Documents.Put("BarFoo6", null, new RavenJObject(), new RavenJObject(), null);
  415. documentStore.SystemDatabase.Documents.Put("FooBar6", null, new RavenJObject(), new RavenJObject(), null);
  416. documentStore.SystemDatabase.Documents.Put("FooBar8", null, new RavenJObject(), new RavenJObject(), null);
  417. var pagingInformation = new RavenPagingInformation();
  418. var fetchedDocuments = documentStore
  419. .DatabaseCommands
  420. .StreamDocs(startsWith: "FooBar", matches: string.Empty, start: 0, pageSize: 4, exclude: string.Empty, pagingInformation: pagingInformation);
  421. var foundDocKeys = new List<string>();
  422. while (fetchedDocuments.MoveNext())
  423. foundDocKeys.Add(fetchedDocuments.Current["@metadata"].Value<string>("@id"));
  424. Assert.Equal(4, pagingInformation.PageSize);
  425. Assert.Equal(0, pagingInformation.Start);
  426. Assert.Equal(4, pagingInformation.NextPageStart);
  427. Assert.Equal(4, foundDocKeys.Count);
  428. Assert.Contains("FooBar1", foundDocKeys);
  429. Assert.Contains("FooBar11", foundDocKeys);
  430. Assert.Contains("FooBar111", foundDocKeys);
  431. Assert.Contains("FooBar12", foundDocKeys);
  432. fetchedDocuments = documentStore
  433. .DatabaseCommands
  434. .StreamDocs(startsWith: "FooBar", matches: string.Empty, start: 4, pageSize: 4, exclude: string.Empty, pagingInformation: pagingInformation);
  435. foundDocKeys = new List<string>();
  436. while (fetchedDocuments.MoveNext())
  437. foundDocKeys.Add(fetchedDocuments.Current["@metadata"].Value<string>("@id"));
  438. Assert.Equal(4, pagingInformation.PageSize);
  439. Assert.Equal(4, pagingInformation.Start);
  440. Assert.Equal(8, pagingInformation.NextPageStart);
  441. Assert.Equal(4, foundDocKeys.Count);
  442. Assert.Contains("FooBar21", foundDocKeys);
  443. Assert.Contains("FooBar3", foundDocKeys);
  444. Assert.Contains("FooBar5", foundDocKeys);
  445. Assert.Contains("FooBar6", foundDocKeys);
  446. fetchedDocuments = documentStore
  447. .DatabaseCommands
  448. .StreamDocs(startsWith: "FooBar", matches: string.Empty, start: 8, pageSize: 4, exclude: string.Empty, pagingInformation: pagingInformation);
  449. foundDocKeys = new List<string>();
  450. while (fetchedDocuments.MoveNext())
  451. foundDocKeys.Add(fetchedDocuments.Current["@metadata"].Value<string>("@id"));
  452. Assert.Equal(4, pagingInformation.PageSize);
  453. Assert.Equal(8, pagingInformation.Start);
  454. Assert.Equal(8, pagingInformation.NextPageStart);
  455. Assert.Equal(1, foundDocKeys.Count);
  456. Assert.Contains("FooBar8", foundDocKeys);
  457. }
  458. }
  459. [Theory]
  460. [PropertyData("Storages")]
  461. public void StreamingWithoutPagingInformationAsync(string requestedStorage)
  462. {
  463. using (var documentStore = NewDocumentStore(requestedStorage: requestedStorage))
  464. {
  465. documentStore.SystemDatabase.Documents.Put("FooBar1", null, new RavenJObject(), new RavenJObject(), null);
  466. documentStore.SystemDatabase.Documents.Put("BarFoo2", null, new RavenJObject(), new RavenJObject(), null);
  467. documentStore.SystemDatabase.Documents.Put("FooBar3", null, new RavenJObject(), new RavenJObject(), null);
  468. documentStore.SystemDatabase.Documents.Put("FooBar11", null, new RavenJObject(), new RavenJObject(), null);
  469. documentStore.SystemDatabase.Documents.Put("FooBar12", null, new RavenJObject(), new RavenJObject(), null);
  470. documentStore.SystemDatabase.Documents.Put("FooBar21", null, new RavenJObject(), new RavenJObject(), null);
  471. documentStore.SystemDatabase.Documents.Put("FooBar5", null, new RavenJObject(), new RavenJObject(), null);
  472. documentStore.SystemDatabase.Documents.Put("BarFoo7", null, new RavenJObject(), new RavenJObject(), null);
  473. documentStore.SystemDatabase.Documents.Put("FooBar111", null, new RavenJObject(), new RavenJObject(), null);
  474. documentStore.SystemDatabase.Documents.Put("BarFoo6", null, new RavenJObject(), new RavenJObject(), null);
  475. documentStore.SystemDatabase.Documents.Put("FooBar6", null, new RavenJObject(), new RavenJObject(), null);
  476. documentStore.SystemDatabase.Documents.Put("FooBar8", null, new RavenJObject(), new RavenJObject(), null);
  477. var fetchedDocuments = documentStore
  478. .AsyncDatabaseCommands
  479. .StreamDocsAsync(startsWith: "FooBar", matches: string.Empty, start: 0, pageSize: 4, exclude: string.Empty).Result;
  480. var foundDocKeys = new List<string>();
  481. while (fetchedDocuments.MoveNextAsync().Result)
  482. foundDocKeys.Add(fetchedDocuments.Current["@metadata"].Value<string>("@id"));
  483. Assert.Equal(4, foundDocKeys.Count);
  484. Assert.Contains("FooBar1", foundDocKeys);
  485. Assert.Contains("FooBar11", foundDocKeys);
  486. Assert.Contains("FooBar111", foundDocKeys);
  487. Assert.Contains("FooBar12", foundDocKeys);
  488. fetchedDocuments = documentStore
  489. .AsyncDatabaseCommands
  490. .StreamDocsAsync(startsWith: "FooBar", matches: string.Empty, start: 4, pageSize: 4, exclude: string.Empty).Result;
  491. foundDocKeys = new List<string>();
  492. while (fetchedDocuments.MoveNextAsync().Result)
  493. foundDocKeys.Add(fetchedDocuments.Current["@metadata"].Value<string>("@id"));
  494. Assert.Equal(4, foundDocKeys.Count);
  495. Assert.Contains("FooBar21", foundDocKeys);
  496. Assert.Contains("FooBar3", foundDocKeys);
  497. Assert.Contains("FooBar5", foundDocKeys);
  498. Assert.Contains("FooBar6", foundDocKeys);
  499. fetchedDocuments = documentStore
  500. .AsyncDatabaseCommands
  501. .StreamDocsAsync(startsWith: "FooBar", matches: string.Empty, start: 8, pageSize: 4, exclude: string.Empty).Result;
  502. foundDocKeys = new List<string>();
  503. while (fetchedDocuments.MoveNextAsync().Result)
  504. foundDocKeys.Add(fetchedDocuments.Current["@metadata"].Value<string>("@id"));
  505. Assert.Equal(1, foundDocKeys.Count);
  506. Assert.Contains("FooBar8", foundDocKeys);
  507. }
  508. }
  509. [Theory]
  510. [PropertyData("Storages")]
  511. public void StreamingWithPagingInformationAsync(string requestedStorage)
  512. {
  513. using (var documentStore = NewDocumentStore(requestedStorage: requestedStorage))
  514. {
  515. documentStore.SystemDatabase.Documents.Put("FooBar1", null, new RavenJObject(), new RavenJObject(), null);
  516. documentStore.SystemDatabase.Documents.Put("BarFoo2", null, new RavenJObject(), new RavenJObject(), null);
  517. documentStore.SystemDatabase.Documents.Put("FooBar3", null, new RavenJObject(), new RavenJObject(), null);
  518. documentStore.SystemDatabase.Documents.Put("FooBar11", null, new RavenJObject(), new RavenJObject(), null);
  519. documentStore.SystemDatabase.Documents.Put("FooBar12", null, new RavenJObject(), new RavenJObject(), null);
  520. documentStore.SystemDatabase.Documents.Put("FooBar21", null, new RavenJObject(), new RavenJObject(), null);
  521. documentStore.SystemDatabase.Documents.Put("FooBar5", null, new RavenJObject(), new RavenJObject(), null);
  522. documentStore.SystemDatabase.Documents.Put("BarFoo7", null, new RavenJObject(), new RavenJObject(), null);
  523. documentStore.SystemDatabase.Documents.Put("FooBar111", null, new RavenJObject(), new RavenJObject(), null);
  524. documentStore.SystemDatabase.Documents.Put("BarFoo6", null, new RavenJObject(), new RavenJObject(), null);
  525. documentStore.SystemDatabase.Documents.Put("FooBar6", null, new RavenJObject(), new RavenJObject(), null);
  526. documentStore.SystemDatabase.Documents.Put("FooBar8", null, new RavenJObject(), new RavenJObject(), null);
  527. var pagingInformation = new RavenPagingInformation();
  528. var fetchedDocuments = documentStore
  529. .AsyncDatabaseCommands
  530. .StreamDocsAsync(startsWith: "FooBar", matches: string.Empty, start: 0, pageSize: 4, exclude: string.Empty, pagingInformation: pagingInformation).Result;
  531. var foundDocKeys = new List<string>();
  532. while (fetchedDocuments.MoveNextAsync().Result)
  533. foundDocKeys.Add(fetchedDocuments.Current["@metadata"].Value<string>("@id"));
  534. Assert.Equal(4, pagingInformation.PageSize);
  535. Assert.Equal(0, pagingInformation.Start);
  536. Assert.Equal(4, pagingInformation.NextPageStart);
  537. Assert.Equal(4, foundDocKeys.Count);
  538. Assert.Contains("FooBar1", foundDocKeys);
  539. Assert.Contains("FooBar11", foundDocKeys);
  540. Assert.Contains("FooBar111", foundDocKeys);
  541. Assert.Contains("FooBar12", foundDocKeys);
  542. fetchedDocuments = documentStore
  543. .AsyncDatabaseCommands
  544. .StreamDocsAsync(startsWith: "FooBar", matches: string.Empty, start: 4, pageSize: 4, exclude: string.Empty, pagingInformation: pagingInformation).Result;
  545. foundDocKeys = new List<string>();
  546. while (fetchedDocuments.MoveNextAsync().Result)
  547. foundDocKeys.Add(fetchedDocuments.Current["@metadata"].Value<string>("@id"));
  548. Assert.Equal(4, pagingInformation.PageSize);
  549. Assert.Equal(4, pagingInformation.Start);
  550. Assert.Equal(8, pagingInformation.NextPageStart);
  551. Assert.Equal(4, foundDocKeys.Count);
  552. Assert.Contains("FooBar21", foundDocKeys);
  553. Assert.Contains("FooBar3", foundDocKeys);
  554. Assert.Contains("FooBar5", foundDocKeys);
  555. Assert.Contains("FooBar6", foundDocKeys);
  556. fetchedDocuments = documentStore
  557. .AsyncDatabaseCommands
  558. .StreamDocsAsync(startsWith: "FooBar", matches: string.Empty, start: 8, pageSize: 4, exclude: string.Empty, pagingInformation: pagingInformation).Result;
  559. foundDocKeys = new List<string>();
  560. while (fetchedDocuments.MoveNextAsync().Result)
  561. foundDocKeys.Add(fetchedDocuments.Current["@metadata"].Value<string>("@id"));
  562. Assert.Equal(4, pagingInformation.PageSize);
  563. Assert.Equal(8, pagingInformation.Start);
  564. Assert.Equal(8, pagingInformation.NextPageStart);
  565. Assert.Equal(1, foundDocKeys.Count);
  566. Assert.Contains("FooBar8", foundDocKeys);
  567. }
  568. }
  569. }
  570. }