You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by ju...@apache.org on 2016/01/29 21:56:29 UTC
reef git commit: [REEF-1160] Deprecate
O.A.R.Driver.ContextConfiguration and add
O.A.R.Common.Context.ContextConfiguration
Repository: reef
Updated Branches:
refs/heads/master 003e3e20e -> 12decb734
[REEF-1160] Deprecate O.A.R.Driver.ContextConfiguration and add O.A.R.Common.Context.ContextConfiguration
This addressed the issue by
* Deprecated O.A.R.Driver.ContextConfiguration (and options) and add O.A.R.Common.Context.ContextConfiguration (and options).
* Added tests for currently the only functionality of ContextConfigurations -- allowing submission of Context IDs.
* Deprecated default context handlers and created new classes for them in O.A.R.Common.
JIRA:
[REEF-1160](https://issues.apache.org/jira/browse/REEF-1160)
Thia closes #799
Project: http://git-wip-us.apache.org/repos/asf/reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/12decb73
Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/12decb73
Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/12decb73
Branch: refs/heads/master
Commit: 12decb7344edadb2972521f02cb20adcd3dba135
Parents: 003e3e2
Author: Andrew Chung <af...@gmail.com>
Authored: Tue Jan 26 15:35:51 2016 -0800
Committer: Julia Wang <ju...@microsoft.com>
Committed: Fri Jan 29 12:46:22 2016 -0800
----------------------------------------------------------------------
.../Context/ContextConfiguration.cs | 92 ++++++++
.../Context/ContextConfigurationOptions.cs | 58 +++++
.../Defaults/DefaultContextMessageSource.cs | 35 +++
.../Defaults/DefaultContextStartHandler.cs | 46 ++++
.../Defaults/DefaultContextStopHandler.cs | 46 ++++
.../Org.Apache.REEF.Common.csproj | 5 +
.../Evaluator/Context/ContextConfiguration.cs | 4 +-
.../Evaluator/Context/ContextLifeCycle.cs | 18 +-
.../Runtime/Evaluator/Context/ContextManager.cs | 30 ++-
.../Runtime/Evaluator/Context/ContextRuntime.cs | 71 +++++--
.../Evaluator/Context/RootContextLauncher.cs | 50 +----
.../Runtime/Evaluator/EvaluatorSettings.cs | 1 +
.../Bridge/Events/AllocatedEvaluator.cs | 5 +-
.../Context/ContextConfiguration.cs | 2 +
.../Context/ContextConfigurationOptions.cs | 5 +-
.../Defaults/DefaultContextMessageSource.cs | 7 +-
.../Defaults/DefaultContextStartHandler.cs | 8 +-
.../Defaults/DefaultContextStopHandler.cs | 2 +
.../HelloAllocatedEvaluatorHandler.cs | 2 +-
.../Group/Driver/Impl/GroupCommDriver.cs | 1 +
.../Bridge/HelloSimpleEventHandlers.cs | 2 +-
.../Functional/Bridge/TestSimpleContext.cs | 211 +++++++++++++++++++
.../Functional/Messaging/MessageDriver.cs | 4 +-
.../RuntimeName/EvaluatorRequestingDriver.cs | 3 +-
.../Org.Apache.REEF.Tests.csproj | 1 +
25 files changed, 613 insertions(+), 96 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Common/Context/ContextConfiguration.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Context/ContextConfiguration.cs b/lang/cs/Org.Apache.REEF.Common/Context/ContextConfiguration.cs
new file mode 100644
index 0000000..115dc4a
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/Context/ContextConfiguration.cs
@@ -0,0 +1,92 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System;
+using System.Diagnostics.CodeAnalysis;
+using Org.Apache.REEF.Common.Events;
+using Org.Apache.REEF.Common.Tasks;
+using Org.Apache.REEF.Common.Tasks.Events;
+using Org.Apache.REEF.Tang.Formats;
+using Org.Apache.REEF.Tang.Util;
+using Org.Apache.REEF.Utilities.Attributes;
+
+[module: SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1401:FieldsMustBePrivate", Justification = "static field, typical usage in configurations")]
+
+namespace Org.Apache.REEF.Common.Context
+{
+ [ClientSide]
+ public sealed class ContextConfiguration : ConfigurationModuleBuilder
+ {
+ /// <summary>
+ /// The identifier of the context.
+ /// </summary>
+ [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+ public static readonly RequiredParameter<string> Identifier = new RequiredParameter<string>();
+
+ /// <summary>
+ /// for context start. Defaults to logging if not bound.
+ /// </summary>
+ [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+ public static readonly OptionalImpl<IObserver<IContextStart>> OnContextStart = new OptionalImpl<IObserver<IContextStart>>();
+
+ /// <summary>
+ /// for context stop. Defaults to logging if not bound.
+ /// </summary>
+ [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+ public static readonly OptionalImpl<IObserver<IContextStop>> OnContextStop = new OptionalImpl<IObserver<IContextStop>>();
+
+ /// <summary>
+ /// to be informed right before a Task enters its call() method.
+ /// </summary>
+ [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+ public static readonly OptionalImpl<IObserver<ITaskStart>> OnTaskStart = new OptionalImpl<IObserver<ITaskStart>>();
+
+ /// <summary>
+ /// to be informed right after a Task exits its call() method.
+ /// </summary>
+ [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+ public static readonly OptionalImpl<IObserver<ITaskStop>> OnTaskStop = new OptionalImpl<IObserver<ITaskStop>>();
+
+ /// <summary>
+ /// Source of messages to be called whenever the evaluator is about to make a heartbeat.
+ /// </summary>
+ [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+ public static readonly OptionalImpl<IContextMessageSource> OnSendMessage = new OptionalImpl<IContextMessageSource>();
+
+ /// <summary>
+ /// Driver has sent the context a message, and this parameter is used to register a handler on the context for processing that message.
+ /// </summary>
+ [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+ public static readonly OptionalImpl<IContextMessageHandler> OnMessage = new OptionalImpl<IContextMessageHandler>();
+
+ public static ConfigurationModule ConfigurationModule
+ {
+ get
+ {
+ return new ContextConfiguration()
+ .BindNamedParameter(GenericType<ContextConfigurationOptions.ContextIdentifier>.Class, Identifier)
+ .BindSetEntry(GenericType<ContextConfigurationOptions.StartHandlers>.Class, OnContextStart)
+ .BindSetEntry(GenericType<ContextConfigurationOptions.StopHandlers>.Class, OnContextStop)
+ .BindSetEntry(GenericType<ContextConfigurationOptions.ContextMessageSources>.Class, OnSendMessage)
+ .BindSetEntry(GenericType<ContextConfigurationOptions.ContextMessageHandlers>.Class, OnMessage)
+ .BindSetEntry(GenericType<TaskConfigurationOptions.StartHandlers>.Class, OnTaskStart)
+ .BindSetEntry(GenericType<TaskConfigurationOptions.StopHandlers>.Class, OnTaskStop)
+ .Build();
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Common/Context/ContextConfigurationOptions.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Context/ContextConfigurationOptions.cs b/lang/cs/Org.Apache.REEF.Common/Context/ContextConfigurationOptions.cs
new file mode 100644
index 0000000..39f0baa
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/Context/ContextConfigurationOptions.cs
@@ -0,0 +1,58 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System;
+using System.Collections.Generic;
+using Org.Apache.REEF.Common.Context.Defaults;
+using Org.Apache.REEF.Common.Events;
+using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Utilities.Attributes;
+
+namespace Org.Apache.REEF.Common.Context
+{
+ /// <summary>
+ /// Configuration parameters for ContextConfiguration module.
+ /// </summary>
+ [ClientSide]
+ public static class ContextConfigurationOptions
+ {
+ [NamedParameter(documentation: "The identifier for the context.")]
+ public class ContextIdentifier : Name<string>
+ {
+ }
+
+ [NamedParameter(documentation: "The set of event handlers for the ContextStart event", defaultClasses: new[] { typeof(DefaultContextStartHandler) })]
+ public class StartHandlers : Name<ISet<IObserver<IContextStart>>>
+ {
+ }
+
+ [NamedParameter(documentation: "The set of event handlers for the ContextStop event", defaultClasses: new[] { typeof(DefaultContextStopHandler) })]
+ public class StopHandlers : Name<ISet<IObserver<IContextStop>>>
+ {
+ }
+
+ [NamedParameter(documentation: "The set of ContextMessageSource implementations called during heartbeats.", defaultClasses: new[] { typeof(DefaultContextMessageSource) })]
+ public class ContextMessageSources : Name<ISet<IContextMessageSource>>
+ {
+ }
+
+ [NamedParameter(documentation: "The set of Context message handlers.")]
+ public class ContextMessageHandlers : Name<ISet<IContextMessageHandler>>
+ {
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Common/Context/Defaults/DefaultContextMessageSource.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Context/Defaults/DefaultContextMessageSource.cs b/lang/cs/Org.Apache.REEF.Common/Context/Defaults/DefaultContextMessageSource.cs
new file mode 100644
index 0000000..67c5ed0
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/Context/Defaults/DefaultContextMessageSource.cs
@@ -0,0 +1,35 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using Org.Apache.REEF.Utilities;
+
+namespace Org.Apache.REEF.Common.Context.Defaults
+{
+ /// <summary>
+ /// Default ContextMessageSource: return nothing.
+ /// </summary>
+ public class DefaultContextMessageSource : IContextMessageSource
+ {
+ public Optional<ContextMessage> Message
+ {
+ get
+ {
+ return Optional<ContextMessage>.Empty();
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Common/Context/Defaults/DefaultContextStartHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Context/Defaults/DefaultContextStartHandler.cs b/lang/cs/Org.Apache.REEF.Common/Context/Defaults/DefaultContextStartHandler.cs
new file mode 100644
index 0000000..01422d1
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/Context/Defaults/DefaultContextStartHandler.cs
@@ -0,0 +1,46 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System;
+using Org.Apache.REEF.Common.Events;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Common.Context.Defaults
+{
+ /// <summary>
+ /// Default handler for ContextStart
+ /// </summary>
+ public class DefaultContextStartHandler : IObserver<IContextStart>
+ {
+ private static readonly Logger Logger = Logger.GetLogger(typeof(DefaultContextStartHandler));
+
+ public void OnNext(IContextStart contextStart)
+ {
+ Logger.Log(Level.Info, "DefaultContextStartHandler received for context: " + contextStart.Id);
+ }
+
+ public void OnError(Exception error)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void OnCompleted()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Common/Context/Defaults/DefaultContextStopHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Context/Defaults/DefaultContextStopHandler.cs b/lang/cs/Org.Apache.REEF.Common/Context/Defaults/DefaultContextStopHandler.cs
new file mode 100644
index 0000000..8688314
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/Context/Defaults/DefaultContextStopHandler.cs
@@ -0,0 +1,46 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System;
+using Org.Apache.REEF.Common.Events;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Common.Context.Defaults
+{
+ /// <summary>
+ /// Default event handler for ContextStop
+ /// </summary>
+ public class DefaultContextStopHandler : IObserver<IContextStop>
+ {
+ private static readonly Logger Logger = Logger.GetLogger(typeof(DefaultContextStopHandler));
+
+ public void OnNext(IContextStop contextStop)
+ {
+ Logger.Log(Level.Info, "DefaultContextStopHandler received for context: " + contextStop.Id);
+ }
+
+ public void OnError(Exception error)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void OnCompleted()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.csproj b/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.csproj
index 30af205..ebaa513 100644
--- a/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.csproj
+++ b/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.csproj
@@ -78,7 +78,12 @@ under the License.
<Compile Include="Catalog\RackDescriptorImpl.cs" />
<Compile Include="Catalog\ResourceCatalogImpl.cs" />
<Compile Include="Constants.cs" />
+ <Compile Include="Context\ContextConfiguration.cs" />
+ <Compile Include="Context\ContextConfigurationOptions.cs" />
<Compile Include="Context\ContextMessage.cs" />
+ <Compile Include="Context\Defaults\DefaultContextMessageSource.cs" />
+ <Compile Include="Context\Defaults\DefaultContextStartHandler.cs" />
+ <Compile Include="Context\Defaults\DefaultContextStopHandler.cs" />
<Compile Include="Context\IContextMessage.cs" />
<Compile Include="Context\IContextMessageHandler.cs" />
<Compile Include="Context\IContextMessageSource.cs" />
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextConfiguration.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextConfiguration.cs b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextConfiguration.cs
index 10df33d..e2c7f88 100644
--- a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextConfiguration.cs
+++ b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextConfiguration.cs
@@ -26,6 +26,8 @@ using Org.Apache.REEF.Utilities.Logging;
namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
{
+ // TODO[JIRA REEF-1167]: Remove class.
+ [Obsolete("Deprecated in 0.14. Will be removed.")]
internal sealed class ContextConfiguration : IConfiguration
{
private static readonly Logger LOGGER = Logger.GetLogger(typeof(ContextConfiguration));
@@ -53,7 +55,7 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
{
string msg = "Required parameter ContextIdentifier not provided.";
LOGGER.Log(Level.Error, msg);
- Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(new ArgumentException(msg), LOGGER);
+ Utilities.Diagnostics.Exceptions.Throw(new ArgumentException(msg), LOGGER);
}
}
}
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextLifeCycle.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextLifeCycle.cs b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextLifeCycle.cs
index b79f285..a987d28 100644
--- a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextLifeCycle.cs
+++ b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextLifeCycle.cs
@@ -19,6 +19,7 @@ using System;
using System.Collections.Generic;
using Org.Apache.REEF.Common.Context;
using Org.Apache.REEF.Common.Events;
+using Org.Apache.REEF.Tang.Annotations;
namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
{
@@ -33,20 +34,9 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
private readonly HashSet<IContextMessageSource> _contextMessageSources;
- // @Inject
- public ContextLifeCycle(
- string id,
- HashSet<IObserver<IContextStart>> contextStartHandlers,
- HashSet<IObserver<IContextStop>> contextStopHandlers,
- HashSet<IContextMessageSource> contextMessageSources)
- {
- Id = id;
- _contextStartHandlers = contextStartHandlers;
- _contextStopHandlers = contextStopHandlers;
- _contextMessageSources = contextMessageSources;
- }
-
- public ContextLifeCycle(string contextId)
+ // TODO[JIRA REEF-1167]: Make method private.
+ [Inject]
+ public ContextLifeCycle([Parameter(typeof(ContextConfigurationOptions.ContextIdentifier))] string contextId)
{
Id = contextId;
_contextStartHandlers = new HashSet<IObserver<IContextStart>>();
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextManager.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextManager.cs b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextManager.cs
index 720ae00..70316a7 100644
--- a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextManager.cs
+++ b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextManager.cs
@@ -25,6 +25,8 @@ using Org.Apache.REEF.Common.Runtime.Evaluator.Task;
using Org.Apache.REEF.Common.Services;
using Org.Apache.REEF.Common.Tasks;
using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tang.Formats;
+using Org.Apache.REEF.Tang.Interface;
using Org.Apache.REEF.Utilities;
using Org.Apache.REEF.Utilities.Logging;
@@ -36,20 +38,24 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
private readonly HeartBeatManager _heartBeatManager;
private readonly RootContextLauncher _rootContextLauncher;
private readonly object _contextLock = new object();
+ private readonly AvroConfigurationSerializer _serializer;
private ContextRuntime _topContext = null;
[Inject]
private ContextManager(
HeartBeatManager heartBeatManager,
- EvaluatorSettings evaluatorSetting)
+ EvaluatorSettings evaluatorSettings,
+ AvroConfigurationSerializer serializer)
{
using (LOGGER.LogFunction("ContextManager::ContextManager"))
{
_heartBeatManager = heartBeatManager;
+ _serializer = serializer;
_rootContextLauncher = new RootContextLauncher(
- evaluatorSetting.RootContextConfig,
- evaluatorSetting.RootServiceConfiguration,
- evaluatorSetting.RootTaskConfiguration);
+ evaluatorSettings.RootContextConfig.Id,
+ evaluatorSettings.RootContextConfig,
+ evaluatorSettings.RootServiceConfiguration,
+ evaluatorSettings.RootTaskConfiguration);
}
}
@@ -68,7 +74,7 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
LOGGER.Log(Level.Info, "Launching the initial Task");
try
{
- _topContext.StartTask(_rootContextLauncher.RootTaskConfig.Value, _rootContextLauncher.RootContextConfig.Id, _heartBeatManager);
+ _topContext.StartTask(_rootContextLauncher.RootTaskConfig.Value, _rootContextLauncher.Id, _heartBeatManager);
}
catch (TaskClientCodeException e)
{
@@ -276,8 +282,18 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
currentTopContext.Id));
Utilities.Diagnostics.Exceptions.Throw(e, LOGGER);
}
- string contextConfigString = addContextProto.context_configuration;
- var contextConfiguration = new ContextConfiguration(contextConfigString);
+
+ IConfiguration contextConfiguration;
+ try
+ {
+ contextConfiguration = _serializer.FromString(addContextProto.context_configuration);
+ }
+ catch (Exception)
+ {
+ // TODO[JIRA REEF-1167]: Remove the catch.
+ contextConfiguration = new ContextConfiguration(addContextProto.context_configuration);
+ }
+
ContextRuntime newTopContext;
if (addContextProto.service_configuration != null)
{
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextRuntime.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextRuntime.cs b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextRuntime.cs
index e9f242a..5ec7564 100644
--- a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextRuntime.cs
+++ b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextRuntime.cs
@@ -55,21 +55,19 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
/// <summary>
/// Create a new ContextRuntime.
/// </summary>
+ /// <param name="id">ID of the context</param>
/// <param name="serviceInjector"></param>
/// <param name="contextConfiguration">the Configuration for this context.</param>
/// <param name="parentContext"></param>
+ /// TODO[JIRA REEF-1167]: Remove constructor.
+ [Obsolete("Deprecated in 0.14, will be removed.")]
public ContextRuntime(
+ string id,
IInjector serviceInjector,
IConfiguration contextConfiguration,
Optional<ContextRuntime> parentContext)
{
- var config = contextConfiguration as ContextConfiguration;
- if (config == null)
- {
- Utilities.Diagnostics.Exceptions.Throw(
- new ArgumentException("contextConfiguration is not of type ContextConfiguration"), LOGGER);
- }
- _contextLifeCycle = new ContextLifeCycle(config.Id);
+ _contextLifeCycle = new ContextLifeCycle(id);
_serviceInjector = serviceInjector;
_parentContext = parentContext;
try
@@ -84,7 +82,7 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
Optional<string>.Of(ParentContext.Value.Id) :
Optional<string>.Empty();
ContextClientCodeException ex = new ContextClientCodeException(ContextClientCodeException.GetId(contextConfiguration), parentId, "Unable to spawn context", e);
-
+
Utilities.Diagnostics.Exceptions.Throw(ex, LOGGER);
}
@@ -93,14 +91,36 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
}
/// <summary>
+ /// Create a new ContextRuntime.
+ /// </summary>
+ /// <param name="serviceInjector"></param>
+ /// <param name="contextConfiguration">the Configuration for this context.</param>
+ /// <param name="parentContext"></param>
+ public ContextRuntime(
+ IInjector serviceInjector,
+ IConfiguration contextConfiguration,
+ Optional<ContextRuntime> parentContext)
+ {
+ _serviceInjector = serviceInjector;
+ _contextInjector = serviceInjector.ForkInjector(contextConfiguration);
+ _contextLifeCycle = _contextInjector.GetInstance<ContextLifeCycle>();
+ _parentContext = parentContext;
+ _contextLifeCycle.Start();
+ }
+
+ /// <summary>
/// Create a new ContextRuntime for the root context.
/// </summary>
- /// <param name="serviceInjector"> </param> the serviceInjector to be used.
+ /// <param name="id">the ID of the context.</param>
+ /// <param name="serviceInjector">the serviceInjector to be used.</param>
/// <param name="contextConfiguration"> the Configuration for this context.</param>
+ /// TODO[JIRA REEF-1167]: Remove constructor.
+ [Obsolete("Deprecated in 0.14, will be removed.")]
public ContextRuntime(
+ string id,
IInjector serviceInjector,
IConfiguration contextConfiguration)
- : this(serviceInjector, contextConfiguration, Optional<ContextRuntime>.Empty())
+ : this(id, serviceInjector, contextConfiguration, Optional<ContextRuntime>.Empty())
{
LOGGER.Log(Level.Info, "Instantiating root context");
}
@@ -115,15 +135,27 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
get { return _parentContext; }
}
+ private static ContextRuntime GetChildContextRuntime(IInjector childServiceInjector, IConfiguration childContextConfiguration, ContextRuntime parentRuntime)
+ {
+ // TODO[JIRA REEF-1167]: Remove the cast and branch.
+ var actualContextConfiguration = childContextConfiguration as ContextConfiguration;
+ if (actualContextConfiguration == null)
+ {
+ return new ContextRuntime(childServiceInjector, childContextConfiguration, Optional<ContextRuntime>.Of(parentRuntime));
+ }
+
+ return new ContextRuntime(actualContextConfiguration.Id, childServiceInjector, childContextConfiguration, Optional<ContextRuntime>.Of(parentRuntime));
+ }
+
/// <summary>
/// Spawns a new context.
/// The new context will have a serviceInjector that is created by forking the one in this object with the given
/// serviceConfiguration. The contextConfiguration is used to fork the contextInjector from that new serviceInjector.
/// </summary>
- /// <param name="contextConfiguration">the new context's context (local) Configuration.</param>
- /// <param name="serviceConfiguration">the new context's service Configuration.</param>
+ /// <param name="childContextConfiguration">the new context's context (local) Configuration.</param>
+ /// <param name="childServiceConfiguration">the new context's service Configuration.</param>
/// <returns>a child context.</returns>
- public ContextRuntime SpawnChildContext(IConfiguration contextConfiguration, IConfiguration serviceConfiguration)
+ public ContextRuntime SpawnChildContext(IConfiguration childContextConfiguration, IConfiguration childServiceConfiguration)
{
lock (_contextLifeCycle)
{
@@ -141,8 +173,9 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
}
try
{
- IInjector childServiceInjector = _serviceInjector.ForkInjector(serviceConfiguration);
- var childContext = new ContextRuntime(childServiceInjector, contextConfiguration, Optional<ContextRuntime>.Of(this));
+ var childServiceInjector = _serviceInjector.ForkInjector(childServiceConfiguration);
+ var childContext = GetChildContextRuntime(childServiceInjector, childContextConfiguration, this);
+
_childContext = Optional<ContextRuntime>.Of(childContext);
return childContext;
}
@@ -153,7 +186,7 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
Optional<string> parentId = ParentContext.IsPresent() ?
Optional<string>.Of(ParentContext.Value.Id) :
Optional<string>.Empty();
- ContextClientCodeException ex = new ContextClientCodeException(ContextClientCodeException.GetId(contextConfiguration), parentId, "Unable to spawn context", e);
+ ContextClientCodeException ex = new ContextClientCodeException(ContextClientCodeException.GetId(childContextConfiguration), parentId, "Unable to spawn context", e);
Utilities.Diagnostics.Exceptions.Throw(ex, LOGGER);
}
@@ -166,9 +199,9 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
/// The new context will have a serviceInjector that is created by forking the one in this object. The
/// contextConfiguration is used to fork the contextInjector from that new serviceInjector.
/// </summary>
- /// <param name="contextConfiguration">the new context's context (local) Configuration.</param>
+ /// <param name="childContextConfiguration">the new context's context (local) Configuration.</param>
/// <returns> a child context.</returns>
- public ContextRuntime SpawnChildContext(IConfiguration contextConfiguration)
+ public ContextRuntime SpawnChildContext(IConfiguration childContextConfiguration)
{
lock (_contextLifeCycle)
{
@@ -184,7 +217,7 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
Utilities.Diagnostics.Exceptions.Throw(e, LOGGER);
}
IInjector childServiceInjector = _serviceInjector.ForkInjector();
- ContextRuntime childContext = new ContextRuntime(childServiceInjector, contextConfiguration, Optional<ContextRuntime>.Of(this));
+ ContextRuntime childContext = new ContextRuntime(childServiceInjector, childContextConfiguration, Optional<ContextRuntime>.Of(this));
_childContext = Optional<ContextRuntime>.Of(childContext);
return childContext;
}
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/RootContextLauncher.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/RootContextLauncher.cs b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/RootContextLauncher.cs
index d9b2c6e..c7dfece 100644
--- a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/RootContextLauncher.cs
+++ b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/RootContextLauncher.cs
@@ -35,35 +35,34 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
private readonly IInjector _rootServiceInjector = null;
- private ContextRuntime _rootContext = null;
+ private readonly IConfiguration _rootContextConfiguration;
- private ContextConfiguration _rootContextConfiguration = null;
+ private ContextRuntime _rootContext = null;
- public RootContextLauncher(ContextConfiguration rootContextConfig, Optional<ServiceConfiguration> rootServiceConfig, Optional<TaskConfiguration> rootTaskConfig)
+ public RootContextLauncher(string id, IConfiguration contextConfiguration,
+ Optional<ServiceConfiguration> rootServiceConfig, Optional<TaskConfiguration> rootTaskConfig)
{
- _rootContextConfiguration = rootContextConfig;
+ Id = id;
+ _rootContextConfiguration = contextConfiguration;
_rootServiceInjector = InjectServices(rootServiceConfig);
RootTaskConfig = rootTaskConfig;
}
public Optional<TaskConfiguration> RootTaskConfig { get; set; }
- public ContextConfiguration RootContextConfig
- {
- get { return _rootContextConfiguration; }
- set { _rootContextConfiguration = value; }
- }
+ public string Id { get; private set; }
internal ContextRuntime GetRootContext()
{
if (_rootContext == null)
{
- _rootContext = GetRootContext(_rootServiceInjector, _rootContextConfiguration);
+ // TODO[JIRA REEF-1167]: Remove use of this constructor.
+ _rootContext = new ContextRuntime(Id, _rootServiceInjector, _rootContextConfiguration);
}
return _rootContext;
}
- private IInjector InjectServices(Optional<ServiceConfiguration> serviceConfig)
+ private static IInjector InjectServices(Optional<ServiceConfiguration> serviceConfig)
{
IInjector rootServiceInjector;
@@ -91,32 +90,5 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
return rootServiceInjector;
}
-
- private ContextRuntime GetRootContext(
- IInjector rootServiceInjector,
- IConfiguration rootContextConfiguration)
- {
- ContextRuntime result;
- result = new ContextRuntime(rootServiceInjector, rootContextConfiguration);
- return result;
- }
}
-}
-////if (rootServiceInjector != null)
-////{
-//// try
-//// {
-//// rootServiceInjector = rootServiceInjector.ForkInjector(serviceConfigs);
-//// }
-//// catch (Exception e)
-//// {
-//// throw new ContextClientCodeException(ContextClientCodeException.GetId(rootContextConfiguration),
-//// Optional<String>.Empty(),
-//// "Unable to instatiate the root context", e);
-//// }
-//// result = new ContextRuntime(rootServiceInjector, rootContextConfiguration);
-////}
-////else
-////{
-//// result = new ContextRuntime(rootServiceInjector.ForkInjector(), rootContextConfiguration);
-////}
\ No newline at end of file
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/EvaluatorSettings.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/EvaluatorSettings.cs b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/EvaluatorSettings.cs
index 613bcf6..d639dd2 100644
--- a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/EvaluatorSettings.cs
+++ b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/EvaluatorSettings.cs
@@ -160,6 +160,7 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator
/// <summary>
/// return Root Context Configuration passed from Evaluator configuration
/// </summary>
+ /// TODO[JIRA REEF-1167]: Change this to use IConfiguration.
public ContextConfiguration RootContextConfig
{
get { return _rootContextConfig; }
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/AllocatedEvaluator.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/AllocatedEvaluator.cs b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/AllocatedEvaluator.cs
index 4d19728..9b5d402 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/AllocatedEvaluator.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/AllocatedEvaluator.cs
@@ -74,8 +74,9 @@ namespace Org.Apache.REEF.Driver.Bridge.Events
public void SubmitTask(IConfiguration taskConfiguration)
{
var contextConfiguration =
- ContextConfiguration.ConfigurationModule.Set(ContextConfiguration.Identifier, "RootContext_" + this.Id)
- .Build();
+ Common.Context.ContextConfiguration.ConfigurationModule.Set(
+ Common.Context.ContextConfiguration.Identifier, "RootContext_" + this.Id).Build();
+
SubmitContextAndTask(contextConfiguration, taskConfiguration);
}
public void SubmitContext(IConfiguration contextConfiguration)
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Driver/Context/ContextConfiguration.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Context/ContextConfiguration.cs b/lang/cs/Org.Apache.REEF.Driver/Context/ContextConfiguration.cs
index 19d596c..290a840 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Context/ContextConfiguration.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Context/ContextConfiguration.cs
@@ -29,7 +29,9 @@ using Org.Apache.REEF.Utilities.Attributes;
namespace Org.Apache.REEF.Driver.Context
{
+ // TODO[JIRA REEF-1167]: Delete class.
[ClientSide]
+ [Obsolete("Obsoleted in 0.14, please use Org.Apache.REEF.Common.ContextConfiguration instead.")]
public sealed class ContextConfiguration : ConfigurationModuleBuilder
{
/// <summary>
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Driver/Context/ContextConfigurationOptions.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Context/ContextConfigurationOptions.cs b/lang/cs/Org.Apache.REEF.Driver/Context/ContextConfigurationOptions.cs
index 9c8e945..df002ab 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Context/ContextConfigurationOptions.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Context/ContextConfigurationOptions.cs
@@ -21,7 +21,6 @@ using Org.Apache.REEF.Common.Context;
using Org.Apache.REEF.Common.Events;
using Org.Apache.REEF.Driver.Context.Defaults;
using Org.Apache.REEF.Tang.Annotations;
-using Org.Apache.REEF.Tang.Formats;
using Org.Apache.REEF.Utilities.Attributes;
namespace Org.Apache.REEF.Driver.Context
@@ -29,8 +28,10 @@ namespace Org.Apache.REEF.Driver.Context
/// <summary>
/// Configuration parameters for ContextConfiguration module.
/// </summary>
+ /// TODO[JIRA REEF-1167]: Remove this class.
[ClientSide]
- public sealed class ContextConfigurationOptions : ConfigurationModuleBuilder
+ [Obsolete("Obsoleted in 0.14, please use Org.Apache.REEF.Common.ContextConfiguration instead.")]
+ public static class ContextConfigurationOptions
{
[NamedParameter(documentation: "The identifier for the context.")]
public class ContextIdentifier : Name<string>
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextMessageSource.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextMessageSource.cs b/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextMessageSource.cs
index 57761ed..5b83c29 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextMessageSource.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextMessageSource.cs
@@ -15,6 +15,7 @@
// specific language governing permissions and limitations
// under the License.
+using System;
using Org.Apache.REEF.Common.Context;
using Org.Apache.REEF.Utilities;
@@ -23,13 +24,15 @@ namespace Org.Apache.REEF.Driver.Context.Defaults
/// <summary>
/// Default ContextMessageSource: return nothing.
/// </summary>
+ /// TODO[JIRA REEF-1167]: Remove this class.
+ [Obsolete("Deprecated in 0.14, please use Org.Apache.REEF.Common.Evaluator.Defaults.DefaultContextMessageSource instead.")]
public class DefaultContextMessageSource : IContextMessageSource
{
- public Optional<Common.Context.ContextMessage> Message
+ public Optional<ContextMessage> Message
{
get
{
- return Optional<Common.Context.ContextMessage>.Empty();
+ return Optional<ContextMessage>.Empty();
}
}
}
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextStartHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextStartHandler.cs b/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextStartHandler.cs
index 6001c8e..0483320 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextStartHandler.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextStartHandler.cs
@@ -20,10 +20,12 @@ using Org.Apache.REEF.Common.Events;
using Org.Apache.REEF.Utilities.Logging;
namespace Org.Apache.REEF.Driver.Context.Defaults
-{
- /// <summary>
+{
+ /// <summary>
/// Default handler for ContextStart
- /// </summary>
+ /// </summary>
+ /// TODO[JIRA REEF-1167]: Remove this class.
+ [Obsolete("Deprecated in 0.14, please use Org.Apache.REEF.Common.Evaluator.Defaults.DefaultContextStartHandler instead.")]
public class DefaultContextStartHandler : IObserver<IContextStart>
{
private static readonly Logger LOGGER = Logger.GetLogger(typeof(DefaultContextStartHandler));
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextStopHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextStopHandler.cs b/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextStopHandler.cs
index 1118cc1..3f2807a 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextStopHandler.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Context/Defaults/DefaultContextStopHandler.cs
@@ -24,6 +24,8 @@ namespace Org.Apache.REEF.Driver.Context.Defaults
/// <summary>
/// Default event handler for ContextStop
/// </summary>
+ /// TODO[JIRA REEF-1167]: Remove this class.
+ [Obsolete("Deprecated in 0.14, please use Org.Apache.REEF.Common.Evaluator.Defaults.DefaultContextStopHandler instead.")]
public class DefaultContextStopHandler : IObserver<IContextStop>
{
private static readonly Logger LOGGER = Logger.GetLogger(typeof(DefaultContextStopHandler));
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloAllocatedEvaluatorHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloAllocatedEvaluatorHandler.cs b/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloAllocatedEvaluatorHandler.cs
index f0cd434..944fa57 100644
--- a/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloAllocatedEvaluatorHandler.cs
+++ b/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloAllocatedEvaluatorHandler.cs
@@ -24,7 +24,6 @@ using Org.Apache.REEF.Common.Io;
using Org.Apache.REEF.Common.Services;
using Org.Apache.REEF.Common.Tasks;
using Org.Apache.REEF.Driver.Bridge;
-using Org.Apache.REEF.Driver.Context;
using Org.Apache.REEF.Driver.Evaluator;
using Org.Apache.REEF.Examples.Tasks.HelloTask;
using Org.Apache.REEF.Network.Naming;
@@ -34,6 +33,7 @@ using Org.Apache.REEF.Tang.Implementations.Tang;
using Org.Apache.REEF.Tang.Interface;
using Org.Apache.REEF.Tang.Util;
using Org.Apache.REEF.Utilities;
+using Org.Apache.REEF.Common.Context;
namespace Org.Apache.REEF.Examples.AllHandlers
{
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/GroupCommDriver.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/GroupCommDriver.cs b/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/GroupCommDriver.cs
index 76e34f6..3f7a47a 100644
--- a/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/GroupCommDriver.cs
+++ b/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/GroupCommDriver.cs
@@ -33,6 +33,7 @@ using Org.Apache.REEF.Tang.Implementations.Tang;
using Org.Apache.REEF.Tang.Interface;
using Org.Apache.REEF.Tang.Util;
using Org.Apache.REEF.Utilities.Logging;
+using ContextConfiguration = Org.Apache.REEF.Common.Context.ContextConfiguration;
namespace Org.Apache.REEF.Network.Group.Driver.Impl
{
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/HelloSimpleEventHandlers.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/HelloSimpleEventHandlers.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/HelloSimpleEventHandlers.cs
index 47eef30..0944680 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/HelloSimpleEventHandlers.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/HelloSimpleEventHandlers.cs
@@ -18,7 +18,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
-using System.Linq;
using System.Net;
using System.Text;
using Org.Apache.REEF.Common.Tasks;
@@ -33,6 +32,7 @@ using Org.Apache.REEF.Tang.Interface;
using Org.Apache.REEF.Tang.Util;
using Org.Apache.REEF.Utilities;
using Org.Apache.REEF.Utilities.Logging;
+using ContextConfiguration = Org.Apache.REEF.Common.Context.ContextConfiguration;
using IRunningTask = Org.Apache.REEF.Driver.Task.IRunningTask;
namespace Org.Apache.REEF.Tests.Functional.Bridge
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestSimpleContext.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestSimpleContext.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestSimpleContext.cs
new file mode 100644
index 0000000..6935ffd
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestSimpleContext.cs
@@ -0,0 +1,211 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Org.Apache.REEF.Common.Tasks;
+using Org.Apache.REEF.Driver;
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Driver.Context;
+using Org.Apache.REEF.Driver.Evaluator;
+using Org.Apache.REEF.Driver.Task;
+using Org.Apache.REEF.Examples.AllHandlers;
+using Org.Apache.REEF.Examples.Tasks.HelloTask;
+using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tang.Implementations.Tang;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Util;
+using Org.Apache.REEF.Utilities.Logging;
+using ContextConfiguration = Org.Apache.REEF.Common.Context.ContextConfiguration;
+
+namespace Org.Apache.REEF.Tests.Functional.Bridge
+{
+ [TestClass]
+ public sealed class TestSimpleContext : ReefFunctionalTest
+ {
+ private const string ContextId = "ContextId";
+ private const string ValidationMessage = "ValidationMessage";
+
+ private static readonly Logger Logger = Logger.GetLogger(typeof(TestSimpleContext));
+
+ [TestInitialize]
+ public void TestSetup()
+ {
+ Init();
+ }
+
+ /// <summary>
+ /// Does a simple test of context submission.
+ /// </summary>
+ [TestMethod, Priority(1), TestCategory("FunctionalGated")]
+ [Description("Test Context ID submission on local runtime")]
+ [DeploymentItem(@".")]
+ [Timeout(180 * 1000)]
+ public void TestSimpleContextOnLocalRuntime()
+ {
+ TestContextOnLocalRuntime(ContextDriverConfiguration());
+ }
+
+ /// <summary>
+ /// Does a simple test of context submission with deprecated configurations.
+ /// </summary>
+ [TestMethod, Priority(1), TestCategory("FunctionalGated")]
+ [Description("Test deprecated Context ID submission on local runtime")]
+ [DeploymentItem(@".")]
+ [Timeout(180 * 1000)]
+ public void TestDeprecatedContextOnLocalRuntime()
+ {
+ TestContextOnLocalRuntime(DeprecatedContextDriverConfiguration());
+ }
+
+ private void TestContextOnLocalRuntime(IConfiguration configuration)
+ {
+ string testFolder = DefaultRuntimeFolder + Guid.NewGuid().ToString("N").Substring(0, 4);
+ CleanUp(testFolder);
+ TestRun(configuration, typeof(TestContextHandlers), 1, "testSimpleContext", "local", testFolder);
+ ValidateSuccessForLocalRuntime(1, testFolder: testFolder);
+ ValidateMessageSuccessfullyLogged(ValidationMessage, testFolder);
+ CleanUp(testFolder);
+ }
+
+ private static IConfiguration ContextDriverConfiguration()
+ {
+ return DriverConfiguration.ConfigurationModule
+ .Set(DriverConfiguration.OnDriverStarted, GenericType<TestContextHandlers>.Class)
+ .Set(DriverConfiguration.OnEvaluatorAllocated, GenericType<AllocatedEvaluatorHandler>.Class)
+ .Set(DriverConfiguration.OnContextActive, GenericType<TestContextHandlers>.Class)
+ .Set(DriverConfiguration.OnTaskMessage, GenericType<HelloTaskMessageHandler>.Class)
+ .Set(DriverConfiguration.OnTaskCompleted, GenericType<TestContextHandlers>.Class)
+ .Set(DriverConfiguration.OnTaskRunning, GenericType<TestContextHandlers>.Class)
+ .Build();
+ }
+
+ private static IConfiguration DeprecatedContextDriverConfiguration()
+ {
+ return DriverConfiguration.ConfigurationModule
+ .Set(DriverConfiguration.OnDriverStarted, GenericType<TestContextHandlers>.Class)
+ .Set(DriverConfiguration.OnEvaluatorAllocated, GenericType<DeprecatedAllocatedEvaluatorHandler>.Class)
+ .Set(DriverConfiguration.OnContextActive, GenericType<TestContextHandlers>.Class)
+ .Set(DriverConfiguration.OnTaskMessage, GenericType<HelloTaskMessageHandler>.Class)
+ .Set(DriverConfiguration.OnTaskCompleted, GenericType<TestContextHandlers>.Class)
+ .Set(DriverConfiguration.OnTaskRunning, GenericType<TestContextHandlers>.Class)
+ .Build();
+ }
+
+ private sealed class AllocatedEvaluatorHandler : IObserver<IAllocatedEvaluator>
+ {
+ [Inject]
+ private AllocatedEvaluatorHandler()
+ {
+ }
+
+ public void OnNext(IAllocatedEvaluator value)
+ {
+ value.SubmitContext(ContextConfiguration.ConfigurationModule
+ .Set(ContextConfiguration.Identifier, ContextId)
+ .Build());
+ }
+
+ public void OnError(Exception error)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void OnCompleted()
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ private sealed class DeprecatedAllocatedEvaluatorHandler : IObserver<IAllocatedEvaluator>
+ {
+ [Inject]
+ private DeprecatedAllocatedEvaluatorHandler()
+ {
+ }
+
+ public void OnNext(IAllocatedEvaluator value)
+ {
+ value.SubmitContext(REEF.Driver.Context.ContextConfiguration.ConfigurationModule
+ .Set(REEF.Driver.Context.ContextConfiguration.Identifier, ContextId)
+ .Build());
+ }
+
+ public void OnError(Exception error)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void OnCompleted()
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ private sealed class TestContextHandlers : IObserver<IDriverStarted>, IObserver<IActiveContext>, IObserver<IRunningTask>, IObserver<ICompletedTask>
+ {
+ private readonly IEvaluatorRequestor _requestor;
+
+ [Inject]
+ private TestContextHandlers(IEvaluatorRequestor evaluatorRequestor)
+ {
+ _requestor = evaluatorRequestor;
+ }
+
+ public void OnNext(IDriverStarted value)
+ {
+ _requestor.Submit(_requestor.NewBuilder().Build());
+ }
+
+ public void OnNext(IActiveContext value)
+ {
+ Logger.Log(Level.Info, "ContextId: " + value.Id);
+ if (value.Id != ContextId)
+ {
+ throw new Exception("Unexpected ContextId: " + value.Id);
+ }
+
+ value.SubmitTask(
+ TaskConfiguration.ConfigurationModule.Set(TaskConfiguration.Identifier, "helloTaskId")
+ .Set(TaskConfiguration.Task, GenericType<HelloTask>.Class)
+ .Build());
+ }
+
+ public void OnNext(IRunningTask value)
+ {
+ Logger.Log(Level.Info, "Running Task" + value.Id);
+ }
+
+ public void OnNext(ICompletedTask value)
+ {
+ Logger.Log(Level.Info, "Completed Task" + value.Id);
+ Logger.Log(Level.Info, ValidationMessage);
+ value.ActiveContext.Dispose();
+ }
+
+ public void OnError(Exception error)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void OnCompleted()
+ {
+ throw new NotImplementedException();
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs
index bc0a4b9..d6558f3 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs
@@ -16,12 +16,10 @@
// under the License.
using System;
-using System.Collections.Generic;
using System.Globalization;
+using Org.Apache.REEF.Common.Context;
using Org.Apache.REEF.Common.Tasks;
using Org.Apache.REEF.Driver;
-using Org.Apache.REEF.Driver.Bridge;
-using Org.Apache.REEF.Driver.Context;
using Org.Apache.REEF.Driver.Evaluator;
using Org.Apache.REEF.Driver.Task;
using Org.Apache.REEF.Tang.Annotations;
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Tests/Functional/RuntimeName/EvaluatorRequestingDriver.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/RuntimeName/EvaluatorRequestingDriver.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/RuntimeName/EvaluatorRequestingDriver.cs
index 729a163..c5cee8e 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/RuntimeName/EvaluatorRequestingDriver.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/RuntimeName/EvaluatorRequestingDriver.cs
@@ -17,10 +17,9 @@
using System;
using System.Globalization;
-
+using Org.Apache.REEF.Common.Context;
using Org.Apache.REEF.Common.Tasks;
using Org.Apache.REEF.Driver;
-using Org.Apache.REEF.Driver.Context;
using Org.Apache.REEF.Driver.Evaluator;
using Org.Apache.REEF.Driver.Task;
using Org.Apache.REEF.Tang.Annotations;
http://git-wip-us.apache.org/repos/asf/reef/blob/12decb73/lang/cs/Org.Apache.REEF.Tests/Org.Apache.REEF.Tests.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Org.Apache.REEF.Tests.csproj b/lang/cs/Org.Apache.REEF.Tests/Org.Apache.REEF.Tests.csproj
index 4e6f93b..7ed135f 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Org.Apache.REEF.Tests.csproj
+++ b/lang/cs/Org.Apache.REEF.Tests/Org.Apache.REEF.Tests.csproj
@@ -95,6 +95,7 @@ under the License.
<Compile Include="Functional\Bridge\TestBridgeClient.cs" />
<Compile Include="Functional\Bridge\TestFailedEvaluatorEventHandler.cs" />
<Compile Include="Functional\Bridge\TestFailedTaskEventHandler.cs" />
+ <Compile Include="Functional\Bridge\TestSimpleContext.cs" />
<Compile Include="Functional\Bridge\TestSimpleEventHandlers.cs" />
<Compile Include="Functional\Driver\DriverTestStartHandler.cs" />
<Compile Include="Functional\RuntimeName\EvaluatorRequestingDriver.cs" />