Exemple #1
0
 private RootContextLauncher(
     AvroConfigurationSerializer serializer,
     [Parameter(typeof(RootContextConfiguration))] string rootContextConfiguration,
     [Parameter(typeof(RootServiceConfiguration))] string rootServiceConfiguration,
     IInjector injector)
     : this(serializer.FromString(rootContextConfiguration),
     serializer.FromString(rootServiceConfiguration), 
     Optional<IConfiguration>.Empty(),
     injector)
 {
 }
        public GroupCommClient(
            [Parameter(typeof(GroupCommConfigurationOptions.SerializedGroupConfigs))] ISet<string> groupConfigs,
            [Parameter(typeof(TaskConfigurationOptions.Identifier))] string taskId,
            StreamingNetworkService<GeneralGroupCommunicationMessage> networkService,
            AvroConfigurationSerializer configSerializer,
            IInjector injector)
        {
            _commGroups = new Dictionary<string, ICommunicationGroupClientInternal>();
            _networkService = networkService;

            foreach (string serializedGroupConfig in groupConfigs)
            {
                IConfiguration groupConfig = configSerializer.FromString(serializedGroupConfig);
                IInjector groupInjector = injector.ForkInjector(groupConfig);
                var commGroupClient = (ICommunicationGroupClientInternal)groupInjector.GetInstance<ICommunicationGroupClient>();
                _commGroups[commGroupClient.GroupName] = commGroupClient;
            }

            networkService.Register(new StringIdentifier(taskId));

            foreach (var group in _commGroups.Values)
            {
               group.WaitingForRegistration();
            }
        }
        private GroupCommClient(
            [Parameter(typeof(GroupCommConfigurationOptions.SerializedGroupConfigs))] ISet<string> groupConfigs,
            [Parameter(typeof(TaskConfigurationOptions.Identifier))] string taskId,
            NetworkService<GroupCommunicationMessage> networkService,
            AvroConfigurationSerializer configSerializer,
            IInjector injector)
        {
            _commGroups = new Dictionary<string, ICommunicationGroupClient>();
            _networkService = networkService;
            networkService.Register(new StringIdentifier(taskId));

            foreach (string serializedGroupConfig in groupConfigs)
            {
                IConfiguration groupConfig = configSerializer.FromString(serializedGroupConfig);
                IInjector groupInjector = injector.ForkInjector(groupConfig);
                ICommunicationGroupClient commGroupClient = groupInjector.GetInstance<ICommunicationGroupClient>();
                _commGroups[commGroupClient.GroupName] = commGroupClient;
            }
        }
        private ConfigurationManager(
            AvroConfigurationSerializer configurationSerializer,
            [Parameter(typeof(SerializedMapConfiguration))] string mapConfig,
            [Parameter(typeof(SerializedReduceConfiguration))] string reduceConfig,
            [Parameter(typeof(SerializedUpdateConfiguration))] string updateConfig,
            [Parameter(typeof(SerializedMapInputCodecConfiguration))] string mapInputCodecConfig,
            [Parameter(typeof(SerializedUpdateFunctionCodecsConfiguration))] string updateFunctionCodecsConfig,
            [Parameter(typeof(SerializedMapOutputPipelineDataConverterConfiguration))] string
                mapOutputPipelineDataConverterConfiguration,
            [Parameter(typeof(SerializedMapInputPipelineDataConverterConfiguration))] string
                mapInputPipelineDataConverterConfiguration,
            [Parameter(typeof(SerializedResultHandlerConfiguration))] string resultHandlerConfiguration)
        {
            try
            {
                _mapFunctionConfiguration = configurationSerializer.FromString(mapConfig);
            }
            catch (Exception e)
            {
                Exceptions.Throw(e, "Unable to deserialize map function configuration", Logger);
            }

            try
            {
                _reduceFunctionConfiguration = configurationSerializer.FromString(reduceConfig);
            }
            catch (Exception e)
            {
                Exceptions.Throw(e, "Unable to deserialize reduce function configuration", Logger);
            }

            try
            {
                _updateFunctionConfiguration = configurationSerializer.FromString(updateConfig);
            }
            catch (Exception e)
            {
                Exceptions.Throw(e, "Unable to deserialize update function configuration", Logger);
            }

            try
            {
                _updateFunctionCodecsConfiguration = configurationSerializer.FromString(updateFunctionCodecsConfig);
            }
            catch (Exception e)
            {
                Exceptions.Throw(e, "Unable to deserialize update function codec configuration", Logger);
            }

            try
            {
                _mapInputCodecConfiguration = configurationSerializer.FromString(mapInputCodecConfig);
            }
            catch (Exception e)
            {
                Exceptions.Throw(e, "Unable to deserialize map input codec configuration", Logger);
            }

            try
            {
                _mapOutputPipelineDataConverterConfiguration =
                    configurationSerializer.FromString(mapOutputPipelineDataConverterConfiguration);
            }
            catch (Exception e)
            {
                Exceptions.Throw(e, "Unable to deserialize map output pipeline data converter configuration", Logger);
            }

            try
            {
                _mapInputPipelineDataConverterConfiguration =
                    configurationSerializer.FromString(mapInputPipelineDataConverterConfiguration);
            }
            catch (Exception e)
            {
                Exceptions.Throw(e, "Unable to deserialize map input pipeline data converter configuration", Logger);
            }

            try
            {
                _resultHandlerConfiguration =
                    configurationSerializer.FromString(resultHandlerConfiguration);
                Logger.Log(Level.Verbose, "Serialized result handler is " + resultHandlerConfiguration);
            }
            catch (Exception e)
            {
                Exceptions.Throw(e, "Unable to deserialize map input pipeline data converter configuration", Logger);
            }
        }
        public void TestDeserializeEvaluatorContextServiceTaskWithAlias()
        {
            var serializer = new AvroConfigurationSerializer();
            var config = DeserializeConfigWithAlias();
            var evaluatorInjector = TangFactory.GetTang().NewInjector(config);

            var evaluatorConfigString = evaluatorInjector.GetNamedInstance<EvaluatorConfiguration, string>();
            var taskConfigString = evaluatorInjector.GetNamedInstance<InitialTaskConfiguration, string>();
            var contextConfigString = evaluatorInjector.GetNamedInstance<RootContextConfiguration, string>();
            var serviceConfigString = evaluatorInjector.GetNamedInstance<RootServiceConfiguration, string>();

            var evaluatorClassHierarchy = TangFactory.GetTang().GetClassHierarchy(new string[]
            {
                typeof(DefaultLocalHttpDriverConnection).Assembly.GetName().Name
            });

            var evaluatorConfig = serializer.FromString(evaluatorConfigString, evaluatorClassHierarchy);
            var fullEvaluatorInjector = evaluatorInjector.ForkInjector(evaluatorConfig);

            Assert.True(fullEvaluatorInjector.GetInstance<IDriverConnection>() is DefaultLocalHttpDriverConnection);

            var contextClassHierarchy = TangFactory.GetTang().GetClassHierarchy(new string[]
            {
                typeof(Common.Context.ContextConfigurationOptions.ContextIdentifier).Assembly.GetName().Name
            });

            var contextConfig = serializer.FromString(contextConfigString, contextClassHierarchy);

            var taskClassHierarchy = TangFactory.GetTang().GetClassHierarchy(new string[]
            {
                typeof(ITask).Assembly.GetName().Name,
                typeof(HelloTask).Assembly.GetName().Name
            });

            var taskConfig = serializer.FromString(taskConfigString, taskClassHierarchy);

            var serviceClassHierarchy = TangFactory.GetTang().GetClassHierarchy(new string[]
                {
                    typeof(ServiceConfiguration).Assembly.GetName().Name,
                    typeof(IStreamingCodec<>).Assembly.GetName().Name
                });
            var serviceConfig = serializer.FromString(serviceConfigString, serviceClassHierarchy);

            var contextInjector = fullEvaluatorInjector.ForkInjector(contextConfig);
            string contextId = contextInjector.GetNamedInstance<Common.Context.ContextConfigurationOptions.ContextIdentifier, string>();
            Assert.True(contextId.StartsWith(ContextIdPrefix));

            var serviceInjector = contextInjector.ForkInjector(serviceConfig);
            var service = serviceInjector.GetInstance<TestService>();
            Assert.NotNull(service);

            var taskInjector = serviceInjector.ForkInjector(taskConfig);
            var taskId = taskInjector.GetNamedInstance<TaskConfigurationOptions.Identifier, string>();
            var task = taskInjector.GetInstance<ITask>();
            Assert.True(taskId.StartsWith("HelloTask"));
            Assert.True(task is HelloTask);
        }
Exemple #6
0
        private EvaluatorSettings(
            [Parameter(typeof(ApplicationIdentifier))] string applicationId,
            [Parameter(typeof(EvaluatorIdentifier))] string evaluatorId,
            [Parameter(typeof(EvaluatorHeartbeatPeriodInMs))] int heartbeatPeriodInMs,
            [Parameter(typeof(HeartbeatMaxRetry))] int maxHeartbeatRetries,
            [Parameter(typeof(RootContextConfiguration))] string rootContextConfigString,
            AvroConfigurationSerializer serializer,
            RuntimeClock clock,
            IRemoteManagerFactory remoteManagerFactory,
            REEFMessageCodec reefMessageCodec,
            IInjector injector,
            INameClient nameClient)
        {
            _serializer = serializer;
            _injector = injector;
            _applicationId = applicationId;
            _evaluatorId = evaluatorId;
            _heartBeatPeriodInMs = heartbeatPeriodInMs;
            _maxHeartbeatRetries = maxHeartbeatRetries;
            _clock = clock;

            if (string.IsNullOrWhiteSpace(rootContextConfigString))
            {
                Utilities.Diagnostics.Exceptions.Throw(
                    new ArgumentException("empty or null rootContextConfigString"), Logger);
            }
            _rootContextConfig = _serializer.FromString(rootContextConfigString);

            try
            {
                _rootContextId = injector.ForkInjector(_rootContextConfig).GetNamedInstance<ContextConfigurationOptions.ContextIdentifier, string>();
            }
            catch (InjectionException)
            {
                Logger.Log(Level.Info, "Using deprecated ContextConfiguration.");

                // TODO[JIRA REEF-1167]: Remove this catch.
                var deprecatedContextConfig = new Context.ContextConfiguration(rootContextConfigString);
                _rootContextConfig = deprecatedContextConfig;
                _rootContextId = deprecatedContextConfig.Id;
            }

            _rootTaskConfiguration = CreateTaskConfiguration();
            _rootServiceConfiguration = CreateRootServiceConfiguration();

            _remoteManager = remoteManagerFactory.GetInstance(reefMessageCodec);
            _operationState = EvaluatorOperationState.OPERATIONAL;
            _nameClient = nameClient;
        }
        public void TestDeserializationForContextAndTask()
        {
            AvroConfigurationSerializer serializer = new AvroConfigurationSerializer();
            
            var classHierarchy = TangFactory.GetTang()
                .GetClassHierarchy(new string[] { typeof(ApplicationIdentifier).Assembly.GetName().Name });
            var config = serializer.FromFile("evaluator.conf", classHierarchy);

            IInjector evaluatorInjector = TangFactory.GetTang().NewInjector(config);

            string taskConfigString = evaluatorInjector.GetNamedInstance<InitialTaskConfiguration, string>();
            string contextConfigString = evaluatorInjector.GetNamedInstance<RootContextConfiguration, string>();

            var contextClassHierarchy = TangFactory.GetTang().GetClassHierarchy(new string[]
            {
                typeof(ContextConfigurationOptions.ContextIdentifier).Assembly.GetName().Name
            });
            var contextConfig = serializer.FromString(contextConfigString, contextClassHierarchy);

            var taskClassHierarchy = TangFactory.GetTang().GetClassHierarchy(new string[]
            {
                typeof(ITask).Assembly.GetName().Name,
                typeof(HelloTask).Assembly.GetName().Name
            });
            var taskConfig = serializer.FromString(taskConfigString, taskClassHierarchy);

            var contextInjector = evaluatorInjector.ForkInjector(contextConfig);
            string contextId = contextInjector.GetNamedInstance<ContextConfigurationOptions.ContextIdentifier, string>();
            Assert.True(contextId.StartsWith(ContextIdPrefix));

            var taskInjector = contextInjector.ForkInjector(taskConfig);

            string taskId = taskInjector.GetNamedInstance<TaskConfigurationOptions.Identifier, string>();
            ITask task = taskInjector.GetInstance<ITask>();
            Assert.True(taskId.StartsWith("HelloTask"));
            Assert.True(task is HelloTask);
        }
        public void TestDeserializationForServiceAndContext()
        {
            AvroConfigurationSerializer serializer = new AvroConfigurationSerializer();

            var classHierarchy = TangFactory.GetTang()
                .GetClassHierarchy(new string[] { typeof(ApplicationIdentifier).Assembly.GetName().Name });
            var config = serializer.FromFile("evaluatorWithService.conf", classHierarchy);

            IInjector evaluatorInjector = TangFactory.GetTang().NewInjector(config);

            string contextConfigString = evaluatorInjector.GetNamedInstance<RootContextConfiguration, string>();
            string rootServiceConfigString = evaluatorInjector.GetNamedInstance<RootServiceConfiguration, string>();

            var contextClassHierarchy = TangFactory.GetTang().GetClassHierarchy(new string[]
            {
                typeof(ContextConfigurationOptions.ContextIdentifier).Assembly.GetName().Name
            });

            var contextConfig = serializer.FromString(contextConfigString, contextClassHierarchy);

            var serviceClassHierarchy = TangFactory.GetTang().GetClassHierarchy(new string[]
            {
                typeof(ServicesConfigurationOptions).Assembly.GetName().Name,
                typeof(IStreamingCodec<>).Assembly.GetName().Name
            });
            var rootServiceConfig = serializer.FromString(rootServiceConfigString, serviceClassHierarchy);

            var contextInjector = evaluatorInjector.ForkInjector(contextConfig);
            string contextId = contextInjector.GetNamedInstance<ContextConfigurationOptions.ContextIdentifier, string>();
            Assert.True(contextId.StartsWith("MasterTaskContext"));

            string serviceConfigString = TangFactory.GetTang().NewInjector(rootServiceConfig)
                .GetNamedInstance<ServicesConfigurationOptions.ServiceConfigString, string>();

            var serviceConfig = serializer.FromString(serviceConfigString, serviceClassHierarchy);

            var serviceInjector = contextInjector.ForkInjector(serviceConfig);
            var tcpCountRange = serviceInjector.GetNamedInstance<TcpPortRangeStart, int>();
            var tcpCountCount = serviceInjector.GetNamedInstance<TcpPortRangeCount, int>();
            Assert.True(tcpCountRange > 0);
            Assert.True(tcpCountCount > 0);
        }
 public override IConfiguration RoundTrip(IConfiguration configuration)
 {
     AvroConfigurationSerializer serializer = new AvroConfigurationSerializer();
     return serializer.FromString(serializer.ToString(configuration));
 }