public RiakPersistenceStrategy(IRiakClusterConfiguration riakClusterConfiguration, IEventReaderWriterPair eventReaderWriterPair)
        {
            if (riakClusterConfiguration == null) throw new ArgumentNullException("riakClusterConfiguration");
            if (eventReaderWriterPair == null) throw new ArgumentNullException("eventReaderWriterPair");

            _riakClient = new RiakCluster(riakClusterConfiguration, new RiakConnectionFactory()).CreateClient();

            _storer = new RiakStorer(_riakClient, eventReaderWriterPair.Writer);
            _loader = new RiakLoader(_riakClient, eventReaderWriterPair.Reader);
        }
        public RiakPersistenceStrategy(IRiakClusterConfiguration riakClusterConfiguration, IEventReaderWriterPair eventReaderWriterPair)
        {
            if (riakClusterConfiguration == null) throw new ArgumentNullException("riakClusterConfiguration");
            if (eventReaderWriterPair == null) throw new ArgumentNullException("eventReaderWriterPair");

            _riakClusterConfiguration = riakClusterConfiguration;

            _storer = new RiakStorer(eventReaderWriterPair.Writer);
            _loader = new RiakLoader(eventReaderWriterPair.Reader);
        }
Beispiel #3
0
        public RiakCluster(IRiakClusterConfiguration clusterConfiguration, IRiakConnectionFactory connectionFactory)
        {
            _nodePollTime = clusterConfiguration.NodePollTime;
            _nodes        = clusterConfiguration.RiakNodes.Select(rn => new RiakNode(rn, connectionFactory)).Cast <IRiakNode>().ToList();
            _loadBalancer = new RoundRobinStrategy();
            _loadBalancer.Initialise(_nodes);
            _offlineNodes      = new ConcurrentQueue <IRiakNode>();
            _defaultRetryCount = clusterConfiguration.DefaultRetryCount;
            RetryWaitTime      = clusterConfiguration.DefaultRetryWaitTime;

            Task.Factory.StartNew(NodeMonitor);
        }
Beispiel #4
0
        public RiakCluster(IRiakClusterConfiguration clusterConfiguration, IRiakConnectionFactory connectionFactory)
        {
            _nodePollTime = clusterConfiguration.NodePollTime;
            _nodes        = clusterConfiguration.RiakNodes.Select(rn => new RiakNode(rn, connectionFactory)).Cast <IRiakNode>().ToList();
            _loadBalancer = new RoundRobinStrategy();
            _loadBalancer.Initialise(_nodes);
            _offlineNodes      = new ConcurrentQueue <IRiakNode>();
            _defaultRetryCount = clusterConfiguration.DefaultRetryCount;
            RetryWaitTime      = clusterConfiguration.DefaultRetryWaitTime;

            // node monitor is now asynchronous, just triggered by timer!
            _nodePollTimer = new Timer(state => NodeMonitorCycle(), null, _nodePollTime, Timeout.Infinite);
        }
        public RiakSecurityManagerTests()
        {
            clusterConfig = RiakClusterConfiguration.LoadFromConfig("riakConfiguration");
            Assert.IsNotNull(clusterConfig, "riakConfiguration is not present?");
            Assert.IsNotNull(clusterConfig.Authentication, "Authentication should NOT be null");

            noAuthClusterConfig = RiakClusterConfiguration.LoadFromConfig("riakNoAuthConfiguration");
            Assert.IsNotNull(noAuthClusterConfig, "riakNoAuthConfiguration is not present?");
            Assert.IsNotNull(noAuthClusterConfig.Authentication, "Authentication should NOT be null");

            certSubjectOnlyClusterConfig = RiakClusterConfiguration.LoadFromConfig("riakCertSubjectOnlyConfiguration");
            Assert.IsNotNull(certSubjectOnlyClusterConfig, "riakCertSubjectOnlyConfiguration is not present?");
            Assert.IsNotNull(certSubjectOnlyClusterConfig.Authentication, "Authentication should NOT be null");
        }
        public RiakSecurityManagerTests()
        {
            clusterConfig = RiakClusterConfiguration.LoadFromConfig("riakConfiguration");
            Assert.IsNotNull(clusterConfig, "riakConfiguration is not present?");
            Assert.IsNotNull(clusterConfig.Authentication, "Authentication should NOT be null");

            noAuthClusterConfig = RiakClusterConfiguration.LoadFromConfig("riakNoAuthConfiguration");
            Assert.IsNotNull(noAuthClusterConfig, "riakNoAuthConfiguration is not present?");
            Assert.IsNotNull(noAuthClusterConfig.Authentication, "Authentication should NOT be null");

            certSubjectOnlyClusterConfig = RiakClusterConfiguration.LoadFromConfig("riakCertSubjectOnlyConfiguration");
            Assert.IsNotNull(certSubjectOnlyClusterConfig, "riakCertSubjectOnlyConfiguration is not present?");
            Assert.IsNotNull(certSubjectOnlyClusterConfig.Authentication, "Authentication should NOT be null");
        }
        public RiakCluster(IRiakClusterConfiguration clusterConfiguration)
        {
            _riakConnection = new RiakConnection();
            _nodePollTime   = clusterConfiguration.NodePollTime;

            _nodes =
                clusterConfiguration.RiakNodes.Select(riakNodeConfiguration => new RiakNode(riakNodeConfiguration))
                .Cast <IRiakNode>()
                .ToList();

            _loadBalancer = new RoundRobinStrategy();
            _loadBalancer.Initialise(_nodes);
            _offlineNodes = new ConcurrentQueue <IRiakNode>();

            Task.Factory.StartNew(NodeMonitor);
        }
        public void ConfigurationLoadsProperly()
        {
            int twoHundredMillis = 200;
            int fourSecsAsMillis = 4000;
            int fiveSecsAsMillis = 5000;

            var fileName = Path.GetTempFileName();

            try
            {
                File.WriteAllText(fileName, Cfg1);

                IRiakClusterConfiguration config = RiakClusterConfiguration.LoadFromConfig("riakConfig", fileName);
                Assert.IsTrue(config.UseTtbEncoding);
                config.DefaultRetryCount.ShouldEqual(3);
                config.DefaultRetryWaitTime.ShouldEqual((Timeout)twoHundredMillis);
                config.NodePollTime.ShouldEqual((Timeout)fiveSecsAsMillis);
                config.RiakNodes.Count().ShouldEqual(2);

                var nodes = config.RiakNodes.ToArray();
                IRiakNodeConfiguration node1 = nodes[0];
                node1.Name.ShouldEqual("node1");
                node1.HostAddress.ShouldEqual("host1");
                node1.PbcPort.ShouldEqual(8081);
                node1.PoolSize.ShouldEqual(5);
                Assert.IsTrue(node1.UseTtbEncoding);
                Assert.IsTrue(node1.ExternalLoadBalancer);
                node1.NetworkConnectTimeout.ShouldEqual((Timeout)fourSecsAsMillis);
                node1.NetworkReadTimeout.ShouldEqual((Timeout)fourSecsAsMillis);
                node1.NetworkWriteTimeout.ShouldEqual((Timeout)fourSecsAsMillis);

                IRiakNodeConfiguration node2 = nodes[1];
                node2.Name.ShouldEqual("node2");
                node2.HostAddress.ShouldEqual("host2");
                node2.PbcPort.ShouldEqual(8081);
                node2.PoolSize.ShouldEqual(6);
                Assert.IsFalse(node2.UseTtbEncoding);
                Assert.IsFalse(node2.ExternalLoadBalancer);
                node2.NetworkConnectTimeout.ShouldEqual((Timeout)fiveSecsAsMillis);
                node2.NetworkReadTimeout.ShouldEqual((Timeout)fiveSecsAsMillis);
                node2.NetworkWriteTimeout.ShouldEqual((Timeout)fiveSecsAsMillis);
            }
            finally
            {
                File.Delete(fileName);
            }
        }
Beispiel #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RiakCluster"/> class.
        /// </summary>
        /// <param name="clusterConfig">The <see cref="IRiakClusterConfiguration"/> to use for this RiakCluster.</param>
        /// <param name="connectionFactory">The <see cref="IRiakConnectionFactory"/> instance to use for this RiakCluster.</param>
        /// <exception cref="ArgumentNullException">If <paramref name="clusterConfig" /> contains no node information.</exception>
        public RiakCluster(IRiakClusterConfiguration clusterConfig, IRiakConnectionFactory connectionFactory)
        {
            nodePollTime      = clusterConfig.NodePollTime;
            defaultRetryCount = clusterConfig.DefaultRetryCount;
            RetryWaitTime     = clusterConfig.DefaultRetryWaitTime;

            nodes = clusterConfig.RiakNodes.Select(rn =>
                                                   new RiakNode(rn, clusterConfig.Authentication, connectionFactory)).Cast <IRiakNode>().ToList();

            loadBalancer = new RoundRobinStrategy();
            loadBalancer.Initialise(nodes);

            offlineNodes = new ConcurrentQueue <IRiakNode>();

            ct          = cts.Token;
            monitorTask = Task.Factory.StartNew(NodeMonitor, ct);
        }
Beispiel #10
0
 public RiakMapReduceTests(string section = "riak1NodeConfiguration")
 {
     ClusterConfig = RiakClusterConfiguration.LoadFromConfig(section);
 }
 public RiakMapReduceTests(string section = "riak1NodeConfiguration")
 {
     ClusterConfig = RiakClusterConfiguration.LoadFromConfig(section);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="RiakCluster"/> class using the default connection factory.
 /// </summary>
 /// <param name="clusterConfig">The <see cref="IRiakClusterConfiguration"/> to use for this RiakCluster.</param>
 /// <exception cref="ArgumentNullException">If <paramref name="clusterConfig" /> contains no node information.</exception>
 public RiakCluster(IRiakClusterConfiguration clusterConfig)
     : this(clusterConfig, new RiakConnectionFactory())
 {
 }