Esempio n. 1
0
        public bool cacheTests(
            DbSystem dbSystem)
        {
            uint  uiCacheAdjustPercent    = 66;
            ulong ulCacheAdjustMin        = 20000000;
            ulong ulCacheAdjustMax        = 1000000000;
            ulong ulCacheAdjustMinToLeave = 0;

#if !mono
            CS_XFLM_CACHE_INFO cacheInfo;
#endif

            beginTest("Set dynamic cache limit test");
            try
            {
                dbSystem.setDynamicMemoryLimit(uiCacheAdjustPercent,
                                               ulCacheAdjustMin, ulCacheAdjustMax,
                                               ulCacheAdjustMinToLeave);
            }
            catch (XFlaimException ex)
            {
                endTest(false, ex, "calling setDynamicMemoryLimit");
                return(false);
            }
            endTest(false, true);

#if !mono
            beginTest("Get cache info for dynamic cache limit test");
            try
            {
                cacheInfo = dbSystem.getCacheInfo();
            }
            catch (XFlaimException ex)
            {
                endTest(false, ex, "calling getCacheInfo");
                return(false);
            }
            endTest(false, true);

            beginTest("See if cache limits were set");
            if (cacheInfo.bDynamicCacheAdjust == 0 ||
                cacheInfo.uiCacheAdjustPercent != uiCacheAdjustPercent ||
                cacheInfo.ulCacheAdjustMin != ulCacheAdjustMin ||
                cacheInfo.ulCacheAdjustMax != ulCacheAdjustMax ||
                cacheInfo.ulCacheAdjustMinToLeave != ulCacheAdjustMinToLeave)
            {
                endTest(false, false);
                System.Console.WriteLine("Dynamic cache adjust parameter mismatch");
                System.Console.WriteLine("Dynamic Adjust Flag..... Set: true Get: {0}",
                                         cacheInfo.bDynamicCacheAdjust != 0 ? "true" : "false");
                System.Console.WriteLine("Adjust Percent.......... Set: {0} Get: {1}",
                                         uiCacheAdjustPercent, cacheInfo.uiCacheAdjustPercent);
                System.Console.WriteLine("Adjust Min.............. Set: {0} Get: {1}",
                                         ulCacheAdjustMin, cacheInfo.ulCacheAdjustMin);
                System.Console.WriteLine("Adjust Max.............. Set: {0} Get: {1}",
                                         ulCacheAdjustMax, cacheInfo.ulCacheAdjustMax);
                System.Console.WriteLine("Adjust Min To Leave..... Set: {0} Get: {1}",
                                         ulCacheAdjustMinToLeave, cacheInfo.ulCacheAdjustMinToLeave);
                return(false);
            }
            endTest(false, true);
#endif

            // SET AND TEST A HARD LIMIT

            beginTest("Set hard cache limit test");
            try
            {
                dbSystem.setHardMemoryLimit(0, false, 0, ulCacheAdjustMax,
                                            0, false);
            }
            catch (XFlaimException ex)
            {
                endTest(false, ex, "calling setHardMemoryLimit");
                return(false);
            }
            endTest(false, true);

#if !mono
            beginTest("Get cache info for hard cache limit test");
            try
            {
                cacheInfo = dbSystem.getCacheInfo();
            }
            catch (XFlaimException ex)
            {
                endTest(false, ex, "calling getCacheInfo");
                return(false);
            }
            endTest(false, true);

            beginTest("See if cache limits were set");
            if (cacheInfo.bDynamicCacheAdjust != 0 ||
                cacheInfo.ulCacheAdjustMax != ulCacheAdjustMax ||
                cacheInfo.ulMaxBytes != ulCacheAdjustMax)
            {
                endTest(false, false);
                System.Console.WriteLine("Hard cache adjust parameter mismatch");
                System.Console.WriteLine("Dynamic Adjust Flag..... Set: false Get: {0}",
                                         cacheInfo.bDynamicCacheAdjust != 0 ? "true" : "false");
                System.Console.WriteLine("Max..................... Set: {0} Get: {1}",
                                         ulCacheAdjustMax, cacheInfo.ulCacheAdjustMax);
                System.Console.WriteLine("Max Bytes............... Set: {0} Get: {1}",
                                         ulCacheAdjustMax, cacheInfo.ulMaxBytes);
                return(false);
            }
            endTest(false, true);

            printCacheUsage(cacheInfo.blockCache, "BLOCK CACHE USAGE");
            printCacheUsage(cacheInfo.nodeCache, "NODE CACHE USAGE");
#endif

            return(true);
        }