IGNITE-3497 .NET: Improve IgniteConfigurationSection.xsd: add missing properties, enums, docs.
# Conflicts: # modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9fc3b509 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9fc3b509 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9fc3b509 Branch: refs/heads/master Commit: 9fc3b5095b825b9ca00b45c18f8072f998dd2adf Parents: 2eee94c Author: Pavel Tupitsyn <[email protected]> Authored: Tue Aug 2 18:37:52 2016 +0300 Committer: Pavel Tupitsyn <[email protected]> Committed: Mon Oct 24 14:40:49 2016 +0300 ---------------------------------------------------------------------- .../Apache.Ignite.Core.Tests.csproj | 1 + .../IgniteConfigurationSerializerTest.cs | 70 +- .../IgniteConfigurationSection.xsd | 1141 +++++++++++++++--- 3 files changed, 1054 insertions(+), 158 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/9fc3b509/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj index 008229a..11a8a15 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj +++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj @@ -59,6 +59,7 @@ <Reference Include="System.Runtime.Serialization" /> <Reference Include="System.ServiceProcess" /> <Reference Include="System.XML" /> + <Reference Include="System.Xml.Linq" /> </ItemGroup> <ItemGroup> <Compile Include="Log\DefaultLoggerTest.cs" /> http://git-wip-us.apache.org/repos/asf/ignite/blob/9fc3b509/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs index bb703f5..2486351 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs @@ -28,6 +28,7 @@ namespace Apache.Ignite.Core.Tests using System.Text; using System.Threading; using System.Xml; + using System.Xml.Linq; using System.Xml.Schema; using Apache.Ignite.Core.Binary; using Apache.Ignite.Core.Cache.Affinity.Fair; @@ -217,6 +218,53 @@ namespace Apache.Ignite.Core.Tests } /// <summary> + /// Tests that all properties are present in the schema. + /// </summary> + [Test] + public void TestAllPropertiesArePresentInSchema() + { + // ReSharper disable once PossibleNullReferenceException + var schema = XDocument.Load("IgniteConfigurationSection.xsd") + .Root.Elements() + .Single(x => x.Attribute("name").Value == "igniteConfiguration"); + + var type = typeof(IgniteConfiguration); + + CheckPropertyIsPresentInSchema(type, schema); + } + + /// <summary> + /// Checks the property is present in schema. + /// </summary> + // ReSharper disable once UnusedParameter.Local + private static void CheckPropertyIsPresentInSchema(Type type, XElement schema) + { + Func<string, string> toLowerCamel = x => char.ToLowerInvariant(x[0]) + x.Substring(1); + + foreach (var prop in type.GetProperties()) + { + var propType = prop.PropertyType; + + var isCollection = propType.IsGenericType && + propType.GetGenericTypeDefinition() == typeof(ICollection<>); + + if (isCollection) + propType = propType.GetGenericArguments().First(); + + var propName = toLowerCamel(prop.Name); + + Assert.IsTrue(schema.Descendants().Select(x => x.Attribute("name")) + .Any(x => x != null && x.Value == propName), + "Property is missing in XML schema: " + propName); + + var isComplexProp = propType.Namespace != null && propType.Namespace.StartsWith("Apache.Ignite.Core"); + + if (isComplexProp) + CheckPropertyIsPresentInSchema(propType, schema); + } + } + + /// <summary> /// Tests the schema validation. /// </summary> [Test] @@ -395,8 +443,8 @@ namespace Apache.Ignite.Core.Tests Backups = 15, CacheMode = CacheMode.Replicated, CacheStoreFactory = new TestCacheStoreFactory(), - CopyOnRead = true, - EagerTtl = true, + CopyOnRead = false, + EagerTtl = false, EnableSwap = true, EvictSynchronized = true, EvictSynchronizedConcurrencyLevel = 13, @@ -431,7 +479,7 @@ namespace Apache.Ignite.Core.Tests ValueType = typeof (long) }, }, - ReadFromBackup = true, + ReadFromBackup = false, RebalanceBatchSize = 33, RebalanceDelay = TimeSpan.MaxValue, RebalanceMode = CacheRebalanceMode.Sync, @@ -442,7 +490,7 @@ namespace Apache.Ignite.Core.Tests StartSize = 1023, WriteBehindBatchSize = 45, WriteBehindEnabled = true, - WriteBehindFlushFrequency = TimeSpan.FromSeconds(5), + WriteBehindFlushFrequency = TimeSpan.FromSeconds(55), WriteBehindFlushSize = 66, WriteBehindFlushThreadCount = 2, WriteSynchronizationMode = CacheWriteSynchronizationMode.FullAsync, @@ -462,7 +510,7 @@ namespace Apache.Ignite.Core.Tests { ExcludeNeighbors = true, Partitions = 48 - } + }, } }, ClientMode = true, @@ -651,21 +699,13 @@ namespace Apache.Ignite.Core.Tests /// </summary> public class TestSerializer : IBinarySerializer { - /// <summary> - /// Write portalbe object. - /// </summary> - /// <param name="obj">Object.</param> - /// <param name="writer">Poratble writer.</param> + /** <inheritdoc /> */ public void WriteBinary(object obj, IBinaryWriter writer) { // No-op. } - /// <summary> - /// Read binary object. - /// </summary> - /// <param name="obj">Instantiated empty object.</param> - /// <param name="reader">Poratble reader.</param> + /** <inheritdoc /> */ public void ReadBinary(object obj, IBinaryReader reader) { // No-op.
