public virtual void TestMultipleWarmsInDifferentOrder()
        {
            BlockStoragePolicySuite bsps = BlockStoragePolicySuite.CreateDefaultSuite();
            StoragePolicySummary    sts  = new StoragePolicySummary(bsps.GetAllPolicies());
            BlockStoragePolicy      warm = bsps.GetPolicy("WARM");

            //DISK:1,ARCHIVE:1
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Archive }, warm);
            sts.Add(new StorageType[] { StorageType.Archive, StorageType.Disk }, warm);
            //DISK:2,ARCHIVE:1
            sts.Add(new StorageType[] { StorageType.Archive, StorageType.Disk, StorageType.Disk }, warm);
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Archive, StorageType.Disk }, warm);
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Disk, StorageType.Archive }, warm);
            //DISK:1,ARCHIVE:2
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Archive, StorageType.Archive }, warm);
            sts.Add(new StorageType[] { StorageType.Archive, StorageType.Disk, StorageType.Archive }, warm);
            sts.Add(new StorageType[] { StorageType.Archive, StorageType.Archive, StorageType
                                        .Disk }, warm);
            //DISK:2,ARCHIVE:2
            sts.Add(new StorageType[] { StorageType.Archive, StorageType.Archive, StorageType
                                        .Disk, StorageType.Disk }, warm);
            IDictionary <string, long> actualOutput = ConvertToStringMap(sts);

            NUnit.Framework.Assert.AreEqual(4, actualOutput.Count);
            IDictionary <string, long> expectedOutput = new Dictionary <string, long>();

            expectedOutput["WARM|DISK:1,ARCHIVE:1(WARM)"] = 2l;
            expectedOutput["WARM|DISK:2,ARCHIVE:1"]       = 3l;
            expectedOutput["WARM|DISK:1,ARCHIVE:2(WARM)"] = 3l;
            expectedOutput["WARM|DISK:2,ARCHIVE:2"]       = 1l;
            NUnit.Framework.Assert.AreEqual(expectedOutput, actualOutput);
        }
        public virtual void TestMultipleHotsWithDifferentCounts()
        {
            BlockStoragePolicySuite bsps = BlockStoragePolicySuite.CreateDefaultSuite();
            StoragePolicySummary    sts  = new StoragePolicySummary(bsps.GetAllPolicies());
            BlockStoragePolicy      hot  = bsps.GetPolicy("HOT");

            sts.Add(new StorageType[] { StorageType.Disk }, hot);
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Disk }, hot);
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Disk }, hot);
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Disk, StorageType.Disk }
                    , hot);
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Disk, StorageType.Disk }
                    , hot);
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Disk, StorageType.Disk,
                                        StorageType.Disk }, hot);
            IDictionary <string, long> actualOutput = ConvertToStringMap(sts);

            NUnit.Framework.Assert.AreEqual(4, actualOutput.Count);
            IDictionary <string, long> expectedOutput = new Dictionary <string, long>();

            expectedOutput["HOT|DISK:1(HOT)"] = 1l;
            expectedOutput["HOT|DISK:2(HOT)"] = 2l;
            expectedOutput["HOT|DISK:3(HOT)"] = 2l;
            expectedOutput["HOT|DISK:4(HOT)"] = 1l;
            NUnit.Framework.Assert.AreEqual(expectedOutput, actualOutput);
        }
        private IDictionary <string, long> ConvertToStringMap(StoragePolicySummary sts)
        {
            LinkedHashMap <string, long> actualOutput = new LinkedHashMap <string, long>();

            foreach (KeyValuePair <StoragePolicySummary.StorageTypeAllocation, long> entry in
                     StoragePolicySummary.SortByComparator(sts.storageComboCounts))
            {
                actualOutput[entry.Key.ToString()] = entry.Value;
            }
            return(actualOutput);
        }
        public virtual void TestDifferentSpecifiedPolicies()
        {
            BlockStoragePolicySuite bsps = BlockStoragePolicySuite.CreateDefaultSuite();
            StoragePolicySummary    sts  = new StoragePolicySummary(bsps.GetAllPolicies());
            BlockStoragePolicy      hot  = bsps.GetPolicy("HOT");
            BlockStoragePolicy      warm = bsps.GetPolicy("WARM");
            BlockStoragePolicy      cold = bsps.GetPolicy("COLD");

            //DISK:3
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Disk, StorageType.Disk }
                    , hot);
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Disk, StorageType.Disk }
                    , hot);
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Disk, StorageType.Disk }
                    , warm);
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Disk, StorageType.Disk }
                    , cold);
            //DISK:1,ARCHIVE:2
            sts.Add(new StorageType[] { StorageType.Disk, StorageType.Archive, StorageType.Archive }, hot);
            sts.Add(new StorageType[] { StorageType.Archive, StorageType.Disk, StorageType.Archive }, warm);
            sts.Add(new StorageType[] { StorageType.Archive, StorageType.Archive, StorageType
                                        .Disk }, cold);
            sts.Add(new StorageType[] { StorageType.Archive, StorageType.Archive, StorageType
                                        .Disk }, cold);
            //ARCHIVE:3
            sts.Add(new StorageType[] { StorageType.Archive, StorageType.Archive, StorageType
                                        .Archive }, hot);
            sts.Add(new StorageType[] { StorageType.Archive, StorageType.Archive, StorageType
                                        .Archive }, hot);
            sts.Add(new StorageType[] { StorageType.Archive, StorageType.Archive, StorageType
                                        .Archive }, warm);
            sts.Add(new StorageType[] { StorageType.Archive, StorageType.Archive, StorageType
                                        .Archive }, cold);
            IDictionary <string, long> actualOutput = ConvertToStringMap(sts);

            NUnit.Framework.Assert.AreEqual(9, actualOutput.Count);
            IDictionary <string, long> expectedOutput = new Dictionary <string, long>();

            expectedOutput["HOT|DISK:3(HOT)"]             = 2l;
            expectedOutput["COLD|DISK:1,ARCHIVE:2(WARM)"] = 2l;
            expectedOutput["HOT|ARCHIVE:3(COLD)"]         = 2l;
            expectedOutput["WARM|DISK:3(HOT)"]            = 1l;
            expectedOutput["COLD|DISK:3(HOT)"]            = 1l;
            expectedOutput["WARM|ARCHIVE:3(COLD)"]        = 1l;
            expectedOutput["WARM|DISK:1,ARCHIVE:2(WARM)"] = 1l;
            expectedOutput["COLD|ARCHIVE:3(COLD)"]        = 1l;
            expectedOutput["HOT|DISK:1,ARCHIVE:2(WARM)"]  = 1l;
            NUnit.Framework.Assert.AreEqual(expectedOutput, actualOutput);
        }