Repository: reef Updated Branches: refs/heads/master ad896d195 -> da0936ea4
[REEF-1079] Fix TestNamedParameterWithAliasRoundTrip test failures This change: * removes caching of default class hierarchy from TangImpl and related code. This fixes TestNamedParameterWithAliasRoundTrip failures, which were caused by multiple tests sharing the same class hierarchy object. * fixes TestDeserializedConfigMerge test which relied on caching behavior. JIRA: [REEF-1079](https://issues.apache.org/jira/browse/REEF-1079) Pull request: This closes #779 Project: http://git-wip-us.apache.org/repos/asf/reef/repo Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/da0936ea Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/da0936ea Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/da0936ea Branch: refs/heads/master Commit: da0936ea4a20775e9287619c05a270a5b115a7e8 Parents: ad896d1 Author: Mariia Mykhailova <[email protected]> Authored: Thu Jan 14 16:18:36 2016 -0800 Committer: Markus Weimer <[email protected]> Committed: Thu Jan 21 16:10:46 2016 -0800 ---------------------------------------------------------------------- .../ClassHierarchy/TestAnonymousType.cs | 6 ------ .../ClassHierarchy/TestClassHierarchy.cs | 1 - .../ClassHierarchy/TestGeneric.cs | 5 ----- .../Configuration/TestConfiguration.cs | 11 ++++++---- .../Injection/TestMultipleConstructors.cs | 6 ------ .../Implementations/Tang/TangImpl.cs | 22 +------------------- 6 files changed, 8 insertions(+), 43 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/reef/blob/da0936ea/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestAnonymousType.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestAnonymousType.cs b/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestAnonymousType.cs index 1cdb0f3..15ab768 100644 --- a/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestAnonymousType.cs +++ b/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestAnonymousType.cs @@ -31,12 +31,6 @@ namespace Org.Apache.REEF.Tang.Tests.ClassHierarchy { const string ClassHierarchyBinFileName = "example.bin"; - [ClassInitialize] - public static void ClassSetup(TestContext context) - { - TangImpl.Reset(); - } - [TestMethod] public void TestAnonymousTypeWithDictionary() { http://git-wip-us.apache.org/repos/asf/reef/blob/da0936ea/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestClassHierarchy.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestClassHierarchy.cs b/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestClassHierarchy.cs index b76a1fd..42a7b50 100644 --- a/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestClassHierarchy.cs +++ b/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestClassHierarchy.cs @@ -38,7 +38,6 @@ namespace Org.Apache.REEF.Tang.Tests.ClassHierarchy { if (ns == null) { - TangImpl.Reset(); ns = TangFactory.GetTang().GetClassHierarchy(new string[] { FileNames.Examples, FileNames.Common, FileNames.Tasks }); } } http://git-wip-us.apache.org/repos/asf/reef/blob/da0936ea/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestGeneric.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestGeneric.cs b/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestGeneric.cs index 518bcc5..8930356 100644 --- a/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestGeneric.cs +++ b/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestGeneric.cs @@ -25,11 +25,6 @@ namespace Org.Apache.REEF.Tang.Tests.ClassHierarchy { public class TestGeneric { - public TestGeneric() - { - TangImpl.Reset(); - } - [Fact] public void TestGenericClassWithT() { http://git-wip-us.apache.org/repos/asf/reef/blob/da0936ea/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestConfiguration.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestConfiguration.cs b/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestConfiguration.cs index 3f6e380..0c10dfd 100644 --- a/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestConfiguration.cs +++ b/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestConfiguration.cs @@ -51,19 +51,22 @@ namespace Org.Apache.REEF.Tang.Tests.Configuration var serializer = new AvroConfigurationSerializer(); serializer.ToFile(conf1, "task.config"); + ProtocolBufferClassHierarchy.Serialize("Task.bin", conf1.GetClassHierarchy()); + IClassHierarchy ns1 = ProtocolBufferClassHierarchy.DeSerialize("Task.bin"); + ICsConfigurationBuilder cb2 = tang.NewConfigurationBuilder(); cb2.BindNamedParameter<Timer.Seconds, int>(GenericType<Timer.Seconds>.Class, "2"); IConfiguration conf2 = cb2.Build(); serializer.ToFile(conf2, "timer.config"); - ProtocolBufferClassHierarchy.Serialize("TaskTimer.bin", conf1.GetClassHierarchy()); - IClassHierarchy ns = ProtocolBufferClassHierarchy.DeSerialize("TaskTimer.bin"); + ProtocolBufferClassHierarchy.Serialize("Timer.bin", conf2.GetClassHierarchy()); + IClassHierarchy ns2 = ProtocolBufferClassHierarchy.DeSerialize("Timer.bin"); AvroConfiguration taskAvroconfiguration = serializer.AvroDeserializeFromFile("task.config"); - IConfiguration taskConfiguration = serializer.FromAvro(taskAvroconfiguration, ns); + IConfiguration taskConfiguration = serializer.FromAvro(taskAvroconfiguration, ns1); AvroConfiguration timerAvroconfiguration = serializer.AvroDeserializeFromFile("timer.config"); - IConfiguration timerConfiguration = serializer.FromAvro(timerAvroconfiguration, ns); + IConfiguration timerConfiguration = serializer.FromAvro(timerAvroconfiguration, ns2); IConfiguration merged = Configurations.MergeDeserializedConfs(taskConfiguration, timerConfiguration); http://git-wip-us.apache.org/repos/asf/reef/blob/da0936ea/lang/cs/Org.Apache.REEF.Tang.Tests/Injection/TestMultipleConstructors.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Tang.Tests/Injection/TestMultipleConstructors.cs b/lang/cs/Org.Apache.REEF.Tang.Tests/Injection/TestMultipleConstructors.cs index 8893249..62b9ff0 100644 --- a/lang/cs/Org.Apache.REEF.Tang.Tests/Injection/TestMultipleConstructors.cs +++ b/lang/cs/Org.Apache.REEF.Tang.Tests/Injection/TestMultipleConstructors.cs @@ -190,7 +190,6 @@ namespace Org.Apache.REEF.Tang.Tests.Injection [Fact] public void TestMultiLayersWithMiddleLayerFirst() { - TangImpl.Reset(); ICsConfigurationBuilder cb2 = TangFactory.GetTang().NewConfigurationBuilder(); cb2.BindImplementation(typeof(IH), typeof(M)); IInjector i2 = TangFactory.GetTang().NewInjector(cb2.Build()); @@ -207,7 +206,6 @@ namespace Org.Apache.REEF.Tang.Tests.Injection [Fact] public void TestMultiLayersWithLowerLayerFirst() { - TangImpl.Reset(); ICsConfigurationBuilder cb = TangFactory.GetTang().NewConfigurationBuilder(); cb.BindImplementation(typeof(IH), typeof(L)); IInjector i = TangFactory.GetTang().NewInjector(cb.Build()); @@ -224,8 +222,6 @@ namespace Org.Apache.REEF.Tang.Tests.Injection [Fact] public void TestMultiLayersWithBindImpl() { - TangImpl.Reset(); - ICsConfigurationBuilder cb = TangFactory.GetTang().NewConfigurationBuilder(); cb.BindImplementation(typeof(IH), typeof(L)); IInjector i = TangFactory.GetTang().NewInjector(cb.Build()); @@ -243,8 +239,6 @@ namespace Org.Apache.REEF.Tang.Tests.Injection [Fact] public void TestMultiLayersWithNoInjectableDefaultConstructor() { - TangImpl.Reset(); - ICsConfigurationBuilder cb = TangFactory.GetTang().NewConfigurationBuilder(); cb.BindImplementation(typeof(IH), typeof(L1)); IInjector i = TangFactory.GetTang().NewInjector(cb.Build()); http://git-wip-us.apache.org/repos/asf/reef/blob/da0936ea/lang/cs/Org.Apache.REEF.Tang/Implementations/Tang/TangImpl.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Tang/Implementations/Tang/TangImpl.cs b/lang/cs/Org.Apache.REEF.Tang/Implementations/Tang/TangImpl.cs index e32ed84..0522fb9 100644 --- a/lang/cs/Org.Apache.REEF.Tang/Implementations/Tang/TangImpl.cs +++ b/lang/cs/Org.Apache.REEF.Tang/Implementations/Tang/TangImpl.cs @@ -32,9 +32,6 @@ namespace Org.Apache.REEF.Tang.Implementations.Tang { private static readonly Logger LOGGER = Logger.GetLogger(typeof(TangImpl)); - private static IDictionary<SetValuedKey, ICsClassHierarchy> defaultClassHierarchy = new Dictionary<SetValuedKey, ICsClassHierarchy>(); - - private static object classHierarchyLock = new object(); public IInjector NewInjector() { try @@ -128,19 +125,7 @@ namespace Org.Apache.REEF.Tang.Implementations.Tang public ICsClassHierarchy GetDefaultClassHierarchy(string[] assemblies, Type[] parameterParsers) { - SetValuedKey key = new SetValuedKey(assemblies, parameterParsers); - - ICsClassHierarchy ret = null; - lock (classHierarchyLock) - { - defaultClassHierarchy.TryGetValue(key, out ret); - if (ret == null) - { - ret = new ClassHierarchyImpl(assemblies, parameterParsers); - defaultClassHierarchy.Add(key, ret); - } - } - return ret; + return new ClassHierarchyImpl(assemblies, parameterParsers); } public ICsConfigurationBuilder NewConfigurationBuilder() @@ -197,10 +182,5 @@ namespace Org.Apache.REEF.Tang.Implementations.Tang { return NewConfigurationBuilder(new string[0], new IConfiguration[0], parameterParsers); } - - public static void Reset() - { - defaultClassHierarchy = new Dictionary<SetValuedKey, ICsClassHierarchy>(); - } } }
