You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by we...@apache.org on 2016/01/22 01:12:59 UTC

reef git commit: [REEF-1079] Fix TestNamedParameterWithAliasRoundTrip test failures

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 <ma...@apache.org>
Authored: Thu Jan 14 16:18:36 2016 -0800
Committer: Markus Weimer <we...@apache.org>
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>(); 
-        }
     }
 }