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

https://github.com/fitzchak/ravendb · C# · 655 lines · 535 code · 120 blank · 0 comment · 12 complexity · 872d3bdebe88ca1e31040527989492a8 MD5 · raw file

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