Beispiel #1
0
        public void GivenIHaveARunningServer(string serverConfig, string clusterConfig)
        {
            NameValueCollection parameters = new NameValueCollection {
                { "port", GetFreePort().ToString() }
            };

            DarkRiftServerConfigurationBuilder serverConfigurationBuilder = DarkRiftServerConfigurationBuilder.CreateFromXml("Configurations/Server/" + serverConfig, parameters);

#if PRO
            serverConfigurationBuilder.AddPluginType(typeof(InMemoryServerRegistryConnector));

            DarkRiftServer server = new DarkRiftServer(
                serverConfigurationBuilder.ServerSpawnData,
                ClusterSpawnData.CreateFromXml("Configurations/Cluster/" + clusterConfig, new NameValueCollection())
                );
#else
            DarkRiftServer server = new DarkRiftServer(
                serverConfigurationBuilder.ServerSpawnData
                );
#endif

            server.StartServer();

            world.AddServer(server);

#if DEBUG
            // We've just requested a load of objects that wont be returned until we close
            // UDP receive TCP accept
            performanceSteps.ExpectedUnaccountedForSocketAsyncEventArgs += 2;
#endif
        }
Beispiel #2
0
        /// <summary>
        /// Start a server with our listener and a basic configuration.
        /// </summary>
        /// <param name="group">The server group to create the server in.</param>
        /// <param name="withHealthCheckAvailable">Whether the health cehck plugin should be loaded.</param>
        /// <returns>The created server.</returns>
        private DarkRiftServer StartServer(string group, bool withHealthCheckAvailable = true)
        {
            // Create a two group cluster
            ClusterSpawnData clusterSpawnData = new ClusterSpawnData();

            clusterSpawnData.Groups.Groups.Add(new ClusterSpawnData.GroupsSettings.GroupSettings {
                Name       = "Group1",
                Visibility = ServerVisibility.Internal
            });
            clusterSpawnData.Groups.Groups.Add(new ClusterSpawnData.GroupsSettings.GroupSettings {
                Name       = "Group2",
                Visibility = ServerVisibility.External,
            });
            clusterSpawnData.Groups.Groups[1].ConnectsTo.Add(new ClusterSpawnData.GroupsSettings.GroupSettings.ConnectsToSettings {
                Name = "Group1"
            });

            // And a server config
            ServerSpawnData serverSpawnData = new ServerSpawnData();

            serverSpawnData.Server.ServerGroup = group;

            // Create listener config
            ushort port = GetFreePort();

            serverSpawnData.Listeners.NetworkListeners.Add(new ServerSpawnData.ListenersSettings.NetworkListenerSettings
            {
                Name    = "DefaultListener",
                Type    = "BichannelListener",
                Address = IPAddress.Loopback,
                Port    = port
            });

            // Add a logger
            serverSpawnData.Logging.LogWriters.Add(new ServerSpawnData.LoggingSettings.LogWriterSettings {
                Name      = "ConsoleWriter",
                Type      = "ConsoleWriter",
                LogLevels = new LogType[] { LogType.Trace, LogType.Info, LogType.Warning, LogType.Error, LogType.Fatal }
            });
            serverSpawnData.Logging.LogWriters[0].Settings.Add("useFastAnsiColoring", "false");

            // Add the registry connector type
            serverSpawnData.PluginSearch.PluginTypes.Add(typeof(ConsulServerRegistryConnector));

            // And load it in
            serverSpawnData.ServerRegistry = new ServerSpawnData.ServerRegistrySettings {
                AdvertisedHost = "localhost",
                AdvertisedPort = port
            };
            serverSpawnData.ServerRegistry.ServerRegistryConnector.Type = nameof(ServerRegistryConnector1);

            // Create a health check if necessary
            if (withHealthCheckAvailable)
            {
                ushort healthPort = GetFreePort();
                serverSpawnData.Plugins.Plugins.Add(new ServerSpawnData.PluginsSettings.PluginSettings {
                    Type = "HealthCheckPlugin"
                });
                serverSpawnData.Plugins.Plugins[0].Settings.Add("port", healthPort.ToString());

                // Add port to the registry connector
                serverSpawnData.ServerRegistry.ServerRegistryConnector.Settings.Add("healthCheckUrl", $"http://localhost:{healthPort}/health");
            }

            DarkRiftServer server = new DarkRiftServer(serverSpawnData, clusterSpawnData);

            server.StartServer();
            return(server);
        }
Beispiel #3
0
        // TODO add to docs

        // TODO test

        private DarkRiftClusterConfigurationBuilder(ClusterSpawnData clusterSpawnData)
        {
            ClusterSpawnData = clusterSpawnData;
        }