Example #1
0
        public void Start()
        {
            PacketPayload              = new Byte[PayloadSize];
            SendStatistics             = new ConnectionStatistics[NumberOfConnections];
            _threads                   = new Thread[NumberOfConnections];
            _pingObjects               = new Ping[NumberOfConnections];
            _numberOfActiveConnections = NumberOfConnections;
            _pingOptions.DontFragment  = DontFragmentIpPacket;
            _pingOptions.Ttl           = IpTtlField;

            TotalSentBytes    = 0;
            TotalRecivedBytes = 0;
            if (TerminationMode != TerminationCriteria.Data)
            {
                TotalBytesToSend = UInt64.MaxValue - PayloadSize;
            }

            for (int i = 0; i < NumberOfConnections; i++)
            {
                SendStatistics[i]        = new ConnectionStatistics();
                _pingObjects[i]          = new Ping();
                _threads[i]              = new Thread(SendLoop);
                _threads[i].IsBackground = true;

                _threads[i].Name = i.ToString();
                _threads[i].Start();
            }
        }
 void HandleConnectionStatisticsOnMeasurementFound(ConnectionStatistics connectionStatistics, TcpConnection c, ConnectionStatistics.ConnectionTimes connectionTimes)
 {
     Console.WriteLine("measurement: {0}:{1} <-> {2}:{3} - {4}",
                       c.Flows[0].address.ToString(),
                       c.Flows[0].port,
                       c.Flows[1].address,
                       c.Flows[1].port,
                       connectionTimes);
 }
 void HandleConnectionStatisticsOnMeasurementEvent(ConnectionStatistics connectionStatistics, TcpConnection c, ConnectionStatistics.EventTypes eventType)
 {
     Console.WriteLine("eventType: {0}:{1} <-> {2}:{3} {4}",
                       c.Flows[0].address.ToString(),
                       c.Flows[0].port,
                       c.Flows[1].address,
                       c.Flows[1].port,
                       eventType);
 }
Example #4
0
 private void RefreshStatistics(ConnectionStatistics connectionStatistics)
 {
     listViewStats.Items.Clear();
     foreach (string key in connectionStatistics.OriginalStats.Keys)
     {
         ListViewItem lvi = new ListViewItem(key);
         lvi.SubItems.Add(connectionStatistics.OriginalStats[key].ToString());
         listViewStats.Items.Add(lvi);
     }
 }
Example #5
0
        public void TearDown()
        {
            IList <ConnectionStatistics.ConnectionInfo> connections = ConnectionStatistics.GetOpenConnections().ToList();

            if (connections.Count > 0)
            {
                foreach (ConnectionStatistics.ConnectionInfo c in connections)
                {
                    Console.WriteLine("Open connection to {0} ({1}).", c.Url, c.Method);
                }
                Assert.AreEqual(0, connections.Count, "All connections must have been closed (showing currently number of open connections).");
            }
        }
Example #6
0
        internal static void ServerConsole()
        {
            if (Interface.Oxide.ServerConsole == null)
            {
                return;
            }

            Interface.Oxide.ServerConsole.Title = () => $"{Server.PlayerCount} | {DedicatedServerBypass.Settings.ServerName}";

            Interface.Oxide.ServerConsole.Status1Left  = () => DedicatedServerBypass.Settings.ServerName;
            Interface.Oxide.ServerConsole.Status1Right = () =>
            {
                TimeSpan time   = TimeSpan.FromSeconds(Time.realtimeSinceStartup);
                string   uptime = $"{time.TotalHours:00}h{time.Minutes:00}m{time.Seconds:00}s".TrimStart(' ', 'd', 'h', 'm', 's', '0');
                return($"{Mathf.RoundToInt(1f / Time.smoothDeltaTime)}fps, {uptime}");
            };

            Interface.Oxide.ServerConsole.Status2Left = () =>
            {
                string players  = $"{Server.PlayerCount}/{Server.PlayerLimit} players";
                int    sleepers = CodeHatch.StarForge.Sleeping.PlayerSleeperObject.AllSleeperObjects.Count;
                int    entities = CodeHatch.Engine.Core.Cache.Entity.GetAll().Count;
                return($"{players}, {sleepers + (sleepers.Equals(1) ? " sleeper" : " sleepers")}, {entities + (entities.Equals(1) ? " entity" : " entities")}");
            };
            Interface.Oxide.ServerConsole.Status2Right = () =>
            {
                if (uLink.NetworkTime.serverTime <= 0)
                {
                    return("not connected");
                }

                double bytesReceived = 0;
                double bytesSent     = 0;
                foreach (Player player in Server.AllPlayers)
                {
                    if (!player.Connection.IsConnected)
                    {
                        continue;
                    }

                    ConnectionStatistics statistics = player.Connection.Statistics;
                    bytesReceived += statistics.BytesReceivedPerSecond;
                    bytesSent     += statistics.BytesSentPerSecond;
                }
                return($"{Utility.FormatBytes(bytesReceived)}/s in, {Utility.FormatBytes(bytesSent)}/s out");
            };

            Interface.Oxide.ServerConsole.Status3Left       = () => $"{GameClock.Instance.TimeOfDayAsClockString()}, Weather: {Weather.Instance.CurrentWeather}";
            Interface.Oxide.ServerConsole.Status3Right      = () => $"Oxide.ReignOfKings {AssemblyVersion}";
            Interface.Oxide.ServerConsole.Status3RightColor = ConsoleColor.Yellow;
        }
Example #7
0
        public void Start()
        {
            DatagramPayload            = new Byte[DatagramSize];
            SendStatistics             = new ConnectionStatistics[NumberOfConnections];
            _threads                   = new Thread[NumberOfConnections];
            _udpClients                = new UdpClient[NumberOfConnections];
            _numberOfActiveConnections = NumberOfConnections;
            TotalSentBytes             = 0;
            if (TerminationMode != TerminationCriteria.Data)
            {
                TotalBytesToSend = UInt64.MaxValue - DatagramSize;
            }

            for (int i = 0; i < NumberOfConnections; i++)
            {
                SendStatistics[i] = new ConnectionStatistics();
                _udpClients[i]    = new UdpClient();
                _threads[i]       = new Thread(SendLoop);
                _threads[i].Name  = i.ToString();
                _threads[i].Start();
            }
        }
Example #8
0
        public async Task WhenSendingMessagesToEchoServer_ThenStatisticsAreUpdated(
            [LinuxInstance(InitializeScript = InitializeScripts.InstallEchoServer)] ResourceTask <InstanceLocator> vm,
            [Credential(Role = PredefinedRole.IapTunnelUser)] ResourceTask <ICredential> credential,
            [Values(
                 1,
                 (int)DataMessage.MaxDataLength,
                 (int)DataMessage.MaxDataLength * 2)] int length)
        {
            var message = new byte[length];

            FillArray(message);

            var locator = await vm;

            var listener = SshRelayListener.CreateLocalListener(
                new IapTunnelingEndpoint(
                    await credential,
                    await vm,
                    7,
                    IapTunnelingEndpoint.DefaultNetworkInterface,
                    TestProject.UserAgent),
                new AllowAllRelayPolicy());

            listener.ClientAcceptLimit = 1; // Terminate after first connection.
            listener.ListenAsync(CancellationToken.None).ContinueWith(_ => { });

            var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            socket.Connect(new IPEndPoint(IPAddress.Loopback, listener.LocalPort));

            var clientStreamStats = new ConnectionStatistics();
            var clientStream      = new SocketStream(socket, clientStreamStats);

            using (var tokenSource = new CancellationTokenSource())
            {
                // Write full payload.
                await clientStream.WriteAsync(message, 0, message.Length, tokenSource.Token);

                Assert.AreEqual(length, clientStreamStats.BytesTransmitted);

                // Read entire response.
                var response       = new byte[length];
                int totalBytesRead = 0;
                while (true)
                {
                    var bytesRead = await clientStream.ReadAsync(
                        response,
                        totalBytesRead,
                        response.Length - totalBytesRead,
                        tokenSource.Token);

                    totalBytesRead += bytesRead;

                    if (bytesRead == 0 || totalBytesRead >= length)
                    {
                        break;
                    }
                }

                await clientStream.CloseAsync(tokenSource.Token);

                await Task.Delay(50);

                Assert.AreEqual(length, totalBytesRead, "bytes read");
                Assert.AreEqual(length, clientStreamStats.BytesReceived, "client received");
                Assert.AreEqual(length, listener.Statistics.BytesReceived, "server received");
                Assert.AreEqual(length, listener.Statistics.BytesTransmitted, "server sent");
            }
        }
Example #9
0
        public void SendTests()
        {
            ConnectionStatistics statistics = new ConnectionStatistics();

            statistics.LogUnreliableSend(10);

            Assert.AreEqual(1, statistics.MessagesSent);
            Assert.AreEqual(1, statistics.UnreliableMessagesSent);
            Assert.AreEqual(0, statistics.ReliableMessagesSent);
            Assert.AreEqual(0, statistics.FragmentedMessagesSent);
            Assert.AreEqual(0, statistics.AcknowledgementMessagesSent);
            Assert.AreEqual(0, statistics.HelloMessagesSent);

            Assert.AreEqual(10, statistics.DataBytesSent);

            statistics.LogReliableSend(5);

            Assert.AreEqual(2, statistics.MessagesSent);
            Assert.AreEqual(1, statistics.UnreliableMessagesSent);
            Assert.AreEqual(1, statistics.ReliableMessagesSent);
            Assert.AreEqual(0, statistics.FragmentedMessagesSent);
            Assert.AreEqual(0, statistics.AcknowledgementMessagesSent);
            Assert.AreEqual(0, statistics.HelloMessagesSent);

            Assert.AreEqual(15, statistics.DataBytesSent);

            statistics.LogFragmentedSend(6);

            Assert.AreEqual(3, statistics.MessagesSent);
            Assert.AreEqual(1, statistics.UnreliableMessagesSent);
            Assert.AreEqual(1, statistics.ReliableMessagesSent);
            Assert.AreEqual(1, statistics.FragmentedMessagesSent);
            Assert.AreEqual(0, statistics.AcknowledgementMessagesSent);
            Assert.AreEqual(0, statistics.HelloMessagesSent);

            Assert.AreEqual(21, statistics.DataBytesSent);

            statistics.LogAcknowledgementSend();

            Assert.AreEqual(4, statistics.MessagesSent);
            Assert.AreEqual(1, statistics.UnreliableMessagesSent);
            Assert.AreEqual(1, statistics.ReliableMessagesSent);
            Assert.AreEqual(1, statistics.FragmentedMessagesSent);
            Assert.AreEqual(1, statistics.AcknowledgementMessagesSent);
            Assert.AreEqual(0, statistics.HelloMessagesSent);

            Assert.AreEqual(21, statistics.DataBytesSent);

            statistics.LogHelloSend();

            Assert.AreEqual(5, statistics.MessagesSent);
            Assert.AreEqual(1, statistics.UnreliableMessagesSent);
            Assert.AreEqual(1, statistics.ReliableMessagesSent);
            Assert.AreEqual(1, statistics.FragmentedMessagesSent);
            Assert.AreEqual(1, statistics.AcknowledgementMessagesSent);
            Assert.AreEqual(1, statistics.HelloMessagesSent);

            Assert.AreEqual(21, statistics.DataBytesSent);

            Assert.AreEqual(0, statistics.MessagesReceived);
            Assert.AreEqual(0, statistics.UnreliableMessagesReceived);
            Assert.AreEqual(0, statistics.ReliableMessagesReceived);
            Assert.AreEqual(0, statistics.FragmentedMessagesReceived);
            Assert.AreEqual(0, statistics.AcknowledgementMessagesReceived);
            Assert.AreEqual(0, statistics.HelloMessagesReceived);

            Assert.AreEqual(0, statistics.DataBytesReceived);
            Assert.AreEqual(0, statistics.TotalBytesReceived);

            statistics.LogPacketSend(11);
            Assert.AreEqual(11, statistics.TotalBytesSent);
        }
Example #10
0
        public void ReceiveTests()
        {
            ConnectionStatistics statistics = new ConnectionStatistics();

            statistics.LogUnreliableReceive(10, 11);

            Assert.AreEqual(1, statistics.MessagesReceived);
            Assert.AreEqual(1, statistics.UnreliableMessagesReceived);
            Assert.AreEqual(0, statistics.ReliableMessagesReceived);
            Assert.AreEqual(0, statistics.FragmentedMessagesReceived);
            Assert.AreEqual(0, statistics.AcknowledgementMessagesReceived);
            Assert.AreEqual(0, statistics.HelloMessagesReceived);

            Assert.AreEqual(10, statistics.DataBytesReceived);
            Assert.AreEqual(11, statistics.TotalBytesReceived);

            statistics.LogReliableReceive(5, 8);

            Assert.AreEqual(2, statistics.MessagesReceived);
            Assert.AreEqual(1, statistics.UnreliableMessagesReceived);
            Assert.AreEqual(1, statistics.ReliableMessagesReceived);
            Assert.AreEqual(0, statistics.FragmentedMessagesReceived);
            Assert.AreEqual(0, statistics.AcknowledgementMessagesReceived);
            Assert.AreEqual(0, statistics.HelloMessagesReceived);

            Assert.AreEqual(15, statistics.DataBytesReceived);
            Assert.AreEqual(19, statistics.TotalBytesReceived);

            statistics.LogFragmentedReceive(6, 10);

            Assert.AreEqual(3, statistics.MessagesReceived);
            Assert.AreEqual(1, statistics.UnreliableMessagesReceived);
            Assert.AreEqual(1, statistics.ReliableMessagesReceived);
            Assert.AreEqual(1, statistics.FragmentedMessagesReceived);
            Assert.AreEqual(0, statistics.AcknowledgementMessagesReceived);
            Assert.AreEqual(0, statistics.HelloMessagesReceived);

            Assert.AreEqual(21, statistics.DataBytesReceived);
            Assert.AreEqual(29, statistics.TotalBytesReceived);

            statistics.LogAcknowledgementReceive(4);

            Assert.AreEqual(4, statistics.MessagesReceived);
            Assert.AreEqual(1, statistics.UnreliableMessagesReceived);
            Assert.AreEqual(1, statistics.ReliableMessagesReceived);
            Assert.AreEqual(1, statistics.FragmentedMessagesReceived);
            Assert.AreEqual(1, statistics.AcknowledgementMessagesReceived);
            Assert.AreEqual(0, statistics.HelloMessagesReceived);

            Assert.AreEqual(21, statistics.DataBytesReceived);
            Assert.AreEqual(33, statistics.TotalBytesReceived);

            statistics.LogHelloReceive(7);

            Assert.AreEqual(5, statistics.MessagesReceived);
            Assert.AreEqual(1, statistics.UnreliableMessagesReceived);
            Assert.AreEqual(1, statistics.ReliableMessagesReceived);
            Assert.AreEqual(1, statistics.FragmentedMessagesReceived);
            Assert.AreEqual(1, statistics.AcknowledgementMessagesReceived);
            Assert.AreEqual(1, statistics.HelloMessagesReceived);

            Assert.AreEqual(21, statistics.DataBytesReceived);
            Assert.AreEqual(40, statistics.TotalBytesReceived);

            Assert.AreEqual(0, statistics.MessagesSent);
            Assert.AreEqual(0, statistics.UnreliableMessagesSent);
            Assert.AreEqual(0, statistics.ReliableMessagesSent);
            Assert.AreEqual(0, statistics.FragmentedMessagesSent);
            Assert.AreEqual(0, statistics.AcknowledgementMessagesSent);
            Assert.AreEqual(0, statistics.HelloMessagesSent);

            Assert.AreEqual(0, statistics.DataBytesSent);
            Assert.AreEqual(0, statistics.TotalBytesSent);
        }