Пример #1
0
        public void GridionStopTest()
        {
            GridionInternal gridionInternal = null;

            try
            {
                var configuration = new GridionConfiguration("127.0.0.1", 24000);

                var clusterCurator = NSubstitute.Substitute.For <IClusterCurator>();

                gridionInternal = new GridionInternal(configuration, clusterCurator);

                gridionInternal.Start();

                Assert.IsTrue(gridionInternal.IsRunning, "Invalid gridion node state.");

                gridionInternal.Stop();

                Assert.IsFalse(gridionInternal.IsRunning, "Invalid gridion node state.");
            }
            finally
            {
                if (gridionInternal != null)
                {
                    gridionInternal.Dispose();
                }
            }
        }
Пример #2
0
        public void MultipleDefaultGridionStartWithConfigThrowsTest()
        {
            var configuration = new GridionConfiguration("127.0.0.1", 24000);

            GridionFactory.Start(configuration);

            Assert.ThrowsException <GridionException>(() => { GridionFactory.Start(configuration); }, "The expected exception hasn't been thrown.");
        }
Пример #3
0
        /// <summary>
        ///     Validates <see cref="GridionConfiguration" /> instance.
        /// </summary>
        /// <param name="configuration">
        ///     The configuration to validate.
        /// </param>
        internal static void Validate(GridionConfiguration configuration)
        {
            Should.NotBeNull(configuration, nameof(configuration));
            Should.NotBeNull(configuration.NodeName, nameof(configuration.NodeName));
            Should.NotBeNull(configuration.ServerConfiguration, nameof(configuration.ServerConfiguration));

            ServerConfigurationValidator.Validate(configuration.ServerConfiguration);
        }
Пример #4
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="GridionInternal" /> class.
        /// </summary>
        /// <param name="configuration">
        ///     The configuration of <see cref="IGridion" /> instance.
        /// </param>
        /// <param name="curator">
        ///     The cluster curator.
        /// </param>
        internal GridionInternal(GridionConfiguration configuration, IClusterCurator curator)
        {
            GridionConfigurationValidator.Validate(configuration);

            this.configuration = configuration;

            this.node = new Node(
                configuration.ServerConfiguration,
                curator,
                new ConsoleLogger());
        }
Пример #5
0
        public void MultipleGridionStartTest()
        {
            var configuration1 = new GridionConfiguration("127.0.0.1", 24000);
            var gridion1       = GridionFactory.Start(configuration1);
            var configuration2 = new GridionConfiguration("127.0.0.1", 24001);
            var gridion2       = GridionFactory.Start(configuration2);

            Assert.IsTrue(gridion1.Name.StartsWith("[Gridion] Node - {", StringComparison.InvariantCulture), "Gridion name is incorrect.");
            Assert.IsTrue(gridion2.Name.StartsWith("[Gridion] Node - {", StringComparison.InvariantCulture), "Gridion name is incorrect.");
            Assert.AreNotEqual(gridion1.Name, gridion2.Name, "Gridion names are the same.");
        }
Пример #6
0
        /// <summary>
        ///     Starts a new <see cref="IGridion" /> instance.
        /// </summary>
        /// <param name="configuration">
        ///     The <see cref="IGridion" /> configuration.
        /// </param>
        /// <returns>
        ///     a started <see cref="IGridion" /> instance.
        /// </returns>
        public static IGridion Start(GridionConfiguration configuration)
        {
            Should.NotBeNull(configuration, nameof(configuration));

            lock (GridionList)
            {
#pragma warning disable CA2000 // Dispose objects before losing scope
                var instance = new GridionInternal(configuration, ClusterCurator.Instance);
#pragma warning restore CA2000 // Dispose objects before losing scope
                instance.Start();
                GridionList.Add(instance);
                return(instance);
            }
        }
Пример #7
0
        public void GroupNodesTest()
        {
            var cfg1 = new GridionConfiguration("node1", GridionEndpoint.GetDefault().Host, GridionEndpoint.GetDefault().Port);
            var cfg2 = new GridionConfiguration("node2", GridionEndpoint.GetDefault().Host, GridionEndpoint.GetDefault().Port + 1);

            using (var gridion = GridionFactory.Start(cfg1))
            {
                Assert.AreEqual(1, gridion.Cluster.Nodes.Count);
                using (var gridion2 = GridionFactory.Start(cfg2))
                {
                    Assert.AreEqual(2, gridion.Cluster.Nodes.Count);
                    Assert.AreEqual(2, gridion2.Cluster.Nodes.Count);
                }

                Assert.AreEqual(1, gridion.Cluster.Nodes.Count);
            }
        }
Пример #8
0
        public void DistributedObjectsNumberTest2()
        {
            var configuration1 = new GridionConfiguration("node1", "127.0.0.1", 24000);
            var configuration2 = new GridionConfiguration("node2", "127.0.0.1", 24001);

            using (var gridion1 = GridionFactory.Start(configuration1))
            {
                using (var gridion2 = GridionFactory.Start(configuration2))
                {
                    // add a dict
                    gridion1.GetDictionary <string, int>("testDictionary1");

                    // get a dict
                    gridion2.GetDictionary <string, int>("testDictionary1");

                    Assert.AreEqual(1, ClusterCurator.Instance.NumberOfDistributedCollections);
                }
            }
        }
Пример #9
0
        public void GridionStopAllTest()
        {
            GridionFactory.ResetDisposedInstanceNumber();

            var configuration1 = new GridionConfiguration("127.0.0.1", 24000);
            var configuration2 = new GridionConfiguration("127.0.0.1", 24001);

            using (GridionFactory.Start(configuration1))
            {
                using (GridionFactory.Start(configuration2))
                {
                    Assert.AreEqual(2, GridionFactory.GetAll().Count, "Invalid instance count.");

                    GridionFactory.StopAll();

                    Assert.AreEqual(0, GridionFactory.GetAll().Count, "Invalid instance count.");
                    Assert.AreEqual(2, GridionFactory.GetDisposedInstanceNumber(), "Invalid instance count.");
                }
            }
        }
Пример #10
0
        public void DistributedListTest2Nodes()
        {
            var configuration  = new GridionConfiguration("127.0.0.1", 24000);
            var configuration2 = new GridionConfiguration("127.0.0.1", 24001);

            using (var gridion = GridionFactory.Start(configuration))
            {
                using (var gridion2 = GridionFactory.Start(configuration2))
                {
                    IDistributedList <string> list = gridion.GetList <string>("name");

                    Assert.IsNotNull(list, "list != null");
                    Assert.AreEqual("name", list.Name, "The name is incorrect.");

                    IDistributedList <string> list2 = gridion2.GetList <string>("name");

                    Assert.IsNotNull(list2, "dictionary != null");
                    Assert.AreEqual("name", list2.Name, "The name is incorrect.");
                }
            }
        }
Пример #11
0
        public void DistributedDictionaryTest2Nodes()
        {
            var configuration  = new GridionConfiguration("127.0.0.1", 24000);
            var configuration2 = new GridionConfiguration("127.0.0.1", 24001);

            using (var gridion = GridionFactory.Start(configuration))
            {
                using (var gridion2 = GridionFactory.Start(configuration2))
                {
                    IDistributedDictionary <string, object> dictionary = gridion.GetDictionary <string, object>("name");

                    Assert.IsNotNull(dictionary, "dictionary != null");
                    Assert.AreEqual("name", dictionary.Name, "The name is incorrect.");

                    IDistributedDictionary <string, object> dictionary2 = gridion2.GetDictionary <string, object>("name");

                    Assert.IsNotNull(dictionary2, "dictionary != null");
                    Assert.AreEqual("name", dictionary2.Name, "The name is incorrect.");
                }
            }
        }
Пример #12
0
        public void DistributedQueueTest2Nodes()
        {
            var configuration  = new GridionConfiguration("127.0.0.1", 24000);
            var configuration2 = new GridionConfiguration("127.0.0.1", 24001);

            using (var gridion = GridionFactory.Start(configuration))
            {
                using (var gridion2 = GridionFactory.Start(configuration2))
                {
                    IDistributedQueue <string> queue = gridion.GetQueue <string>("name");

                    Assert.IsNotNull(queue, "queue != null");
                    Assert.AreEqual("name", queue.Name, "The name is incorrect.");

                    IDistributedQueue <string> queue2 = gridion2.GetQueue <string>("name");

                    Assert.IsNotNull(queue2, "queue != null");
                    Assert.AreEqual("name", queue2.Name, "The name is incorrect.");
                }
            }
        }
Пример #13
0
        /// <summary>
        ///     Starts a new <see cref="IGridion" /> default instance.
        /// </summary>
        /// <returns>
        ///     a started <see cref="IGridion" /> instance.
        /// </returns>
        public static IGridion Start()
        {
            var configuration = GridionConfiguration.GetDefaultConfiguration();

            return(Start(configuration));
        }