public static void UploadDataToSite(int numBlobs, long sizeBlobs, string site, string containerName)
        {
            YCSBNumberofObjects = numBlobs;
            blobSizeInB         = sizeBlobs;

            Dictionary <string, CloudStorageAccount> accounts = Account.GetStorageAccounts(false);

            if (!accounts.ContainsKey(site))
            {
                return;
            }

            CloudStorageAccount account = accounts[site];

            blobClient = account.CreateCloudBlobClient();
            container  = blobClient.GetContainerReference(containerName);
            container.CreateIfNotExists();

            try
            {
                foreach (ICloudBlob blob in container.ListBlobs())
                {
                    blob.DeleteIfExists();
                }
            }
            catch
            {
            }

            ThreadPool.SetMaxThreads(50, 50);

            byte[] BlobDataBuffer = new byte[blobSizeInB];
            Random random         = new Random();

            random.NextBytes(BlobDataBuffer);
            List <string> keys = YCSBWorkload.GetAllKeys(numBlobs);


            for (int i = 0; i < keys.Count; i++)
            {
                Put(keys[i], BlobDataBuffer);
            }

            while (Interlocked.CompareExchange(ref concurrentWorkers, -1, 0) != -1)
            {
                Thread.Sleep(1000);
            }
        }
        public static void UploadData(int numBlobs, long sizeBlobs, bool secure, string primary, string secondary, string configSite, bool wipe)
        {
            // TODO: generalize to any number of replicas

            YCSBNumberofObjects         = numBlobs;
            blobSizeInB                 = sizeBlobs;
            useHttps                    = secure;
            primarySite                 = primary;
            secondarySite               = secondary;
            configurationSite           = configSite;
            wipeEverythingBeforeLoading = wipe;

            Dictionary <string, CloudStorageAccount> accounts = Account.GetStorageAccounts(false);

            if (wipeEverythingBeforeLoading)
            {
                foreach (CloudStorageAccount account in accounts.Values)
                {
                    foreach (CloudBlobContainer cont in account.CreateCloudBlobClient().ListContainers())
                    {
                        try
                        {
                            foreach (ICloudBlob blob in cont.ListBlobs())
                            {
                                Console.WriteLine("removing " + blob.Name + " ...");
                                try
                                {
                                    blob.BreakLease(new TimeSpan(0));
                                }
                                catch
                                {
                                }
                                blob.DeleteIfExists();
                            }
                        }
                        catch
                        {
                        }
                        try
                        {
                            cont.BreakLease(new TimeSpan(0));
                        }
                        catch
                        {
                        }
                        cont.DeleteIfExists();
                    }

                    //Delete configuration blob for this name
                    account.CreateCloudBlobClient().GetContainerReference(ConstPool.CONFIGURATION_CONTAINER_PREFIX + containerName).DeleteIfExists();
                    //account.CreateCloudBlobClient().GetContainerReference(containerName).DeleteIfExists();

                    CloudTable table = account.CreateCloudTableClient().GetTableReference(ConstPool.SLA_CONFIGURATION_TABLE_NAME);
                    table.DeleteIfExists();
                    table = account.CreateCloudTableClient().GetTableReference(ConstPool.SESSION_STATE_CONFIGURATION_TABLE_NAME);
                    table.DeleteIfExists();
                }

                //We need to wait at least 30 seconds after removing a container.
                //In other words, it can take up to 30 seconds to remove a container in Azure!
                Console.WriteLine("removed everything, wait 40 seconds ...");
                Thread.Sleep(40000);
            }

            ThreadPool.SetMaxThreads(50, 50);

            byte[] BlobDataBuffer = new byte[blobSizeInB];
            Random random         = new Random();

            random.NextBytes(BlobDataBuffer);
            List <string> keys = YCSBWorkload.GetAllKeys(YCSBNumberofObjects);

            blobClient = accounts[primary].CreateCloudBlobClient();
            container  = blobClient.GetContainerReference(containerName);
            container.CreateIfNotExists();

            for (int i = 0; i < keys.Count; i++)
            {
                Put(keys[i], BlobDataBuffer);
            }

            blobClient = accounts[secondary].CreateCloudBlobClient();
            container  = blobClient.GetContainerReference(containerName);
            container.CreateIfNotExists();

            for (int i = 0; i < keys.Count; i++)
            {
                Put(keys[i], BlobDataBuffer);
            }

            while (Interlocked.CompareExchange(ref concurrentWorkers, -1, 0) != -1)
            {
                Console.WriteLine("Waiting for a thread because thread are " + concurrentWorkers + " threads.");
                Thread.Sleep(1000);
            }
        }