public void Parse_OnlyDataCache_InvalidValue()
        {
            // arrange
            var xml = new XmlDocument();

            xml.LoadXml($"<database id='db123'><cacheSizes><data>4mb</data></cacheSizes></database>");

            // act
            var db = LogicalDatabaseDefinition.Parse(xml.DocumentElement, new SitecoreVersion(8, 2, 0));

            // assert
            Assert.Equal("db123", db.Name);
            Assert.Equal(6, db.Caches.Count);
            Assert.True(db.Caches["items"].Size == null);
            Assert.True(db.Caches["path"].Size == null);
            Assert.True(db.Caches["prefetch"].Size == null);
            Assert.True(db.Caches["standardValues"].Size == null);
            Assert.True(db.Caches["itempaths"].Size == null);

            var data = db.Caches["data"].Size;

            Assert.NotNull(data);
            Assert.Equal(-1, data.Value.Bytes);
            Assert.Equal("4mb", data.Text);
        }
        public void Parse_NoID()
        {
            // arrange
            var xml = new XmlDocument();

            xml.LoadXml($"<database/>");

            // act and assert
            new Action(() => LogicalDatabaseDefinition.Parse(xml.DocumentElement, new SitecoreVersion(8, 2, 0)))
            .ShouldThrow <ArgumentException>()
            .WithMessage("The id attribute is missing or whitespace.\r\nXml: <database />\r\nParameter name: definition");
        }
        public void Parse_OnlyID()
        {
            // arrange
            var xml = new XmlDocument();

            xml.LoadXml($"<database id='db123'/>");

            // act
            var db = LogicalDatabaseDefinition.Parse(xml.DocumentElement, new SitecoreVersion(8, 2, 0));

            // assert
            Assert.Equal("db123", db.Name);
            Assert.Equal(6, db.Caches.Count);
            Assert.True(db.Caches.All(x => x.Value.Size == null));
        }
Example #4
0
 public static IReadOnlyDictionary <string, LogicalDatabaseDefinition> GetDatabases(XmlDocument configuration)
 {
     return(configuration.SelectElements("/configuration/sitecore/databases/database")
            .Select(x => LogicalDatabaseDefinition.Parse(x, new SitecoreVersion(8, 2, 0)))
            .ToDictionary(x => x.Name, x => x));
 }
Example #5
0
    private void Process(ISitecoreInformationContext info, ITestOutputContext output, LogicalDatabaseDefinition database, LogicalDatabaseDefinition defaultDatabase, Map<Map<CacheSizeDetails>> defaultCachesPerDatabase, Map<Map<CacheSizeDetails>> belowDefaultCachesPerDatabase)
    {
      var databaseCaches = new Map<CacheSizeDetails>();
      var belowDefaultCaches = new Map<CacheSizeDetails>();
      var databaseName = database.Name;

      foreach (var cache in database.Caches.Values)
      {
        var cacheSize = cache.Size;
        var defaultSize = defaultDatabase.Caches[cache.Name].Size;
        if (defaultSize == null)
        {
          // custom cache, or filesystem database
          continue;
        }

        if (cacheSize == null)
        {
          var fallbackSettingCacheSize = CacheSize.Parse(info.GetSetting(cache.FallbackSettingName), info.SitecoreVersion);
          if (fallbackSettingCacheSize.Value.Bytes < defaultSize.Value.Bytes)
          {
            var cacheSizeDetails = new CacheSizeDetails
            {
              Value = fallbackSettingCacheSize,
              Comment = $"cache size is not specified, uses {cache.FallbackSettingName} setting value as fallback"
            };

            belowDefaultCaches.Add(cache.Name, cacheSizeDetails);
          }
        }
        else
        {
          if (cacheSize.Value == defaultSize.Value)
          {
            var cacheSizeDetails = new CacheSizeDetails
            {
              Value = cacheSize,
              Comment = "cache size is default"
            };

            databaseCaches.Add(cache.Name, cacheSizeDetails);
          }
          else if (cacheSize.Value < defaultSize.Value)
          {
            var cacheSizeDetails = new CacheSizeDetails
            {
              Value = cacheSize,
              Comment = $"cache size is below than default: {defaultSize.Value}"
            };

            belowDefaultCaches.Add(cache.Name, cacheSizeDetails);
          }
        }
      }

      if (databaseCaches.Any())
      {
        defaultCachesPerDatabase.Add(databaseName, databaseCaches);
      }

      if (belowDefaultCaches.Any())
      {
        belowDefaultCachesPerDatabase.Add(databaseName, belowDefaultCaches);
      }
    }