public void BlobsGetCreatedMonoThread()
		{
			const string containerName1 = "container-1";
			const string containerName2 = "container-2";
			const string containerName3 = "container-3";
			const string blobPrefix = "mockBlobPrefix";
			const string secondBlobPrefix = "sndBlobPrefix";

			var storage = new MemoryBlobStorageProvider();

			storage.CreateContainer(containerName1);
			storage.CreateContainer(containerName2);
			storage.CreateContainer(containerName3);

			storage.PutBlob(containerName1, blobPrefix + "/" + "blob1", new DateTime(2009,08,27));
			storage.PutBlob(containerName1, blobPrefix + "/" + "blob2", new DateTime(2009, 08, 28));
			storage.PutBlob(containerName1, blobPrefix + "/" + "blob3", new DateTime(2009, 08, 29));
			storage.PutBlob(containerName2, blobPrefix + "/" + "blob2", new DateTime(1984, 07, 06));
			storage.PutBlob(containerName1, secondBlobPrefix + "/" + "blob1", new DateTime(2009, 08, 30));

			var blobNames = storage.List(containerName1, blobPrefix);
			Assert.AreEqual(blobNames.Count(),3,"first container with first prefix does not hold 3 blobs");

			blobNames = storage.List(containerName2, blobPrefix);
			Assert.AreEqual(blobNames.Count(), 1, "second container with first prefix does not hold 1 blobs");

			blobNames = storage.List(containerName3, blobPrefix);
			Assert.AreEqual(blobNames.Count(), 0, "third container with first prefix does not hold 0 blob");

			blobNames = storage.List(containerName1, secondBlobPrefix);
			Assert.AreEqual(blobNames.Count(), 1, "first container with second prefix does not hold 1 blobs");

		}
		public void BlobsGetCreatedMultiThread()
		{
			const string containerNamePrefix = "container-";
			
			const string blobPrefix = "mockBlobPrefix";

			var storage = new MemoryBlobStorageProvider();
			storage.CreateContainer(containerNamePrefix+1);
			storage.CreateContainer(containerNamePrefix+2);

			var threads = Enumerable.Range(0, 32)
									.Select(i=> 
										new Thread(AddValueToContainer))
									.ToArray();
			
			var threadParameters = Enumerable.Range(0, 32).Select(i => 
				i<=15
				? new ThreadParameters("threadId" + i, "container-1", storage)
				: new ThreadParameters("threadId" + i, "container-2", storage)).ToArray();

			Enumerable.Range(0,32).ForEach(i=> threads[i].Start(threadParameters[i]));
			
			Thread.Sleep(2000);

			var blobNames = storage.List("container-1", blobPrefix);
			Assert.AreEqual(1600, blobNames.Count(), 
				"first container with corresponding prefix does not hold 3 blobs");

			blobNames = storage.List("container-2", blobPrefix);
			Assert.AreEqual(1600, blobNames.Count(), 
				"second container with corresponding prefix does not hold 1 blobs");

		}
        public void Can_list_all_keys()
        {
            var blobs = new MemoryBlobStorageProvider();
            var set = new CustomMyDocumentSet(blobs);

            Assert.IsFalse(set.ListAllKeys().Any());

            set.InsertOrReplace(1, new MyDocument { ArbitraryString = "X1" });
            set.InsertOrReplace(2, new MyDocument { ArbitraryString = "X2" });
            set.InsertOrReplace(3, new MyDocument { ArbitraryString = "X3" });
            Assert.AreEqual(3, set.ListAllKeys().Count());
            Assert.AreEqual(1, set.ListAllKeys().First());
            Assert.AreEqual(3, set.ListAllKeys().Last());
        }
        protected override IDocumentSet <MyDocument, int> BuildDocumentSet()
        {
            // clear cache (since it is, after all, caching)
            var cache = MemoryCache.Default;
            var keys  = cache.Select(p => p.Key).ToList();

            foreach (var key in keys)
            {
                cache.Remove(key);
            }

            var blobs = new MemoryBlobStorageProvider();

            return(new CachedMyDocumentSet(blobs));
        }
        public void Can_delet_all_documents()
        {
            var blobs = new MemoryBlobStorageProvider();
            var set = new CustomMyDocumentSet(blobs);

            Assert.IsFalse(set.ListAllKeys().Any());

            set.InsertOrReplace(1, new MyDocument { ArbitraryString = "X1" });
            set.InsertOrReplace(2, new MyDocument { ArbitraryString = "X2" });
            set.InsertOrReplace(3, new MyDocument { ArbitraryString = "X3" });
            Assert.AreEqual(3, set.ListAllKeys().Count());

            set.DeleteIfExist(2);
            Assert.AreEqual(2, set.ListAllKeys().Count());

            set.DeleteAll();
            Assert.AreEqual(0, set.ListAllKeys().Count());
        }
        public void Can_get_all_documents()
        {
            var blobs = new MemoryBlobStorageProvider();
            var set   = new CustomMyDocumentSet(blobs);

            Assert.IsFalse(set.GetAll().Any());

            set.InsertOrReplace(1, new MyDocument {
                ArbitraryString = "X1"
            });
            set.InsertOrReplace(2, new MyDocument {
                ArbitraryString = "X2"
            });
            set.InsertOrReplace(3, new MyDocument {
                ArbitraryString = "X3"
            });
            Assert.AreEqual(3, set.GetAll().Count());
            Assert.AreEqual("X1", set.GetAll().First().ArbitraryString);
            Assert.AreEqual("X3", set.GetAll().Last().ArbitraryString);
        }
        public void Can_delet_all_documents()
        {
            var blobs = new MemoryBlobStorageProvider();
            var set   = new CustomMyDocumentSet(blobs);

            Assert.IsFalse(set.ListAllKeys().Any());

            set.InsertOrReplace(1, new MyDocument {
                ArbitraryString = "X1"
            });
            set.InsertOrReplace(2, new MyDocument {
                ArbitraryString = "X2"
            });
            set.InsertOrReplace(3, new MyDocument {
                ArbitraryString = "X3"
            });
            Assert.AreEqual(3, set.ListAllKeys().Count());

            set.DeleteIfExist(2);
            Assert.AreEqual(2, set.ListAllKeys().Count());

            set.DeleteAll();
            Assert.AreEqual(0, set.ListAllKeys().Count());
        }
 protected override IDocumentSet<MyDocument, int> BuildDocumentSet()
 {
     var blobs = new MemoryBlobStorageProvider();
     return new DocumentSet<MyDocument, int>(blobs, i => new BlobLocation("container", i.ToString()));
 }
			public ThreadParameters(string threadId, string containerName, MemoryBlobStorageProvider blobStorage)
			{
				BlobStorage = blobStorage;
				ThreadId = threadId;
				ContainerName = containerName;
			}
        protected override IDocumentSet <MyDocument, int> BuildDocumentSet()
        {
            var blobs = new MemoryBlobStorageProvider();

            return(new CustomMyDocumentSet(blobs));
        }
 protected override IDocumentSet<MyDocument, int> BuildDocumentSet()
 {
     var blobs = new MemoryBlobStorageProvider();
     return new CustomMyDocumentSet(blobs);
 }
        protected override IDocumentSet <MyDocument, int> BuildDocumentSet()
        {
            var blobs = new MemoryBlobStorageProvider();

            return(new DocumentSet <MyDocument, int>(blobs, i => new BlobLocation("container", i.ToString())));
        }