Esempio n. 1
0
        static void Main(string[] args)
        {
            _client = KClient.Initialize("52c85313-8203-4963-b984-c5d249320a62", 5);
            var timer = new Timer(PrintData, "auto", 0, 6000);

            Thread.Sleep(100000);
        }
Esempio n. 2
0
        void cmdStartServers_Click(object sender, EventArgs e)
        {
            if (CheckServerFields() && _kClient == null && _kTracker == null)
            {
                var ipa = IPAddress.Parse(cboPossibleAddresses.Text);
                int trackerPort, kcPort;
                trackerPort = Convert.ToInt32(txtTrackerServerPort.Text);
                kcPort      = Convert.ToInt32(txtKClientPort.Text);
                _kTracker   = new TrackerServer(new IPEndPoint(ipa, trackerPort));
                _kClient    = new KClient(_kTracker, new IPEndPoint(ipa, kcPort));

                _kTracker.Logger = this;
                _kClient.Logger  = this;

                _kTracker.Listen();
                _kClient.Listen();

                Log("启动完成。本地参数: KClient=" + cboPossibleAddresses.Text + ":" + kcPort.ToString() + ", KTracker=" + cboPossibleAddresses.Text + ":" + trackerPort.ToString());

                txtTrackerURL.Text = "http://localhost:" + txtTrackerServerPort.Text + _kTracker.AnnouceUrl.TrimEnd('?');
                txtLocalKClientAddrAndPort.Text = cboPossibleAddresses.Text + ":" + txtKClientPort.Text;

                groupBox1.Enabled = false;
                groupBox2.Enabled = true;
                groupBox4.Enabled = true;
            }
            else
            {
                Log("本地服务器设置错误。");
            }
        }
Esempio n. 3
0
        public async Task Send_PostWithObject_returns_201()
        {
            var request = new KRequest(HttpMethod.Post, new Uri(_uri));

            request.SetContent(new { Id = 1, Name = "Test" });
            var client = new KClient();

            var results = await client.SendAsync(request);

            Assert.True(results.First().Response.StatusCode == HttpStatusCode.Created);
        }
Esempio n. 4
0
        public async Task Send_Get_returns_200()
        {
            var request = new KRequest(HttpMethod.Get, new Uri(_uri));
            var client  = new KClient(3, 2, 2); //First batch with 2 requests and a second 500ms later with 1 request, with two iterations (=> total 6 requests)

            var results = await client.SendAsync(request);

            Assert.True(results.Count() == client.RequestsPerSecond * client.Repetition);
            Assert.DoesNotContain(results, r => r.Response.StatusCode != HttpStatusCode.OK);
            Assert.DoesNotContain(results, r => r.ElapsedTime > 1000);
        }
Esempio n. 5
0
        public async Task Send_GetWithReportWithResponseBody_returns_true()
        {
            var    request    = new KRequest(HttpMethod.Get, new Uri(_uri));
            var    client     = new KClient();
            string reportFile = Path.Combine(Directory.GetCurrentDirectory(), $"KReport_{DateTime.Today:yyyy-MM-dd}__{Guid.NewGuid()}.csv");

            var results = await client.SendAsync(request);

            await KLog.ReportAsync(results, reportFile);

            Assert.True(File.Exists(reportFile));
        }
Esempio n. 6
0
        public async Task Send_GetWithHeader_returns_200()
        {
            var headers = new Dictionary <string, string>
            {
                { "Authorization", "Bearer xyz" }
            };
            var request = new KRequest(HttpMethod.Get, new Uri(_uri), headers);
            var client  = new KClient();

            var results = await client.SendAsync(request);

            Assert.True(results.First().Response.StatusCode == HttpStatusCode.OK);
        }
Esempio n. 7
0
        public async Task Send_PostWithByteArrays_returns_201()
        {
            var request = new KRequest(HttpMethod.Post, new Uri(_uri));

            request.SetContent(new List <byte[]>()
            {
                GetTestTextFileAsByteArray(), GetTestTextFileAsByteArray()
            });
            var client = new KClient();

            var results = await client.SendAsync(request);

            Assert.True(results.First().Response.StatusCode == HttpStatusCode.Created);
        }
Esempio n. 8
0
        void cmdStartServers_Click(object sender, EventArgs e)
        {
            if (_kClient == null || _kTracker == null)
            {
                if (CheckServerFields())
                {
                    IPAddress ipa;
                    _wasStartedAsPI = KeiGuiOptions.Current.IsPointInsertion;
                    if (KeiGuiOptions.Current.IsPointInsertion || (false && KeiGuiOptions.Current.UsePortMapping))
                    {
                        // 作为接入点或者启用了 UPnP 的普通用户启动
                        ipa = IPAddress.Parse(cboPossibleAddresses.Text.Split(' ')[0]);
                    }
                    else
                    {
                        // 作为普通用户启动
                        ipa = IPAddress.Loopback;
                    }
                    var nTracker        = Convert.ToInt32(txtLocalTrackerServerPort.Text);
                    var nKClient        = Convert.ToInt32(txtLocalKClientPort.Text);
                    var trackerEndPoint = new IPEndPoint(ipa, nTracker);
                    var kcEndPoint      = new IPEndPoint(ipa, nKClient);

                    if (_kTracker == null)
                    {
                        _kTracker = new TrackerServer(trackerEndPoint);
                    }
                    if (_kClient == null)
                    {
                        _kClient = new KClient(_kTracker, kcEndPoint);
                        _kClient.ConnectionListChanged += _kClient_ConnectionListChanged;
                    }

                    //if (!_kTracker.IsBound)
                    //{
                    //    if (!_kTracker.TestBind(trackerEndPoint))
                    //    {
                    //        MessageBox.Show("Tracker 服务器端口不可用,请设置一个新的端口。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    //        _kTracker = null;
                    //        return;
                    //    }
                    //}
                    //txtLocalTrackerServerPort.Enabled = false;
                    //if (!_kClient.IsBound)
                    //{
                    //    if (!_kClient.TestBind(kcEndPoint))
                    //    {
                    //        MessageBox.Show("K客户端服务器端口不可用,请设置一个新的端口。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    //        _kClient = null;
                    //        return;
                    //    }
                    //}
                    //txtLocalKClientPort.Enabled = false;

                    if (KeiGuiOptions.Current.EnableLogging)
                    {
                        _kTracker.Logger = Program.Logger;
                        _kClient.Logger  = Program.Logger;
                    }

                    if (KeiGuiOptions.Current.IsPointInsertion)
                    {
                        _kClient.FreeToGo  = true;
                        _kTracker.FreeToGo = true;
                    }

                    _kTracker.Listen();
                    if (KeiGuiOptions.Current.IsPointInsertion)
                    {
                        // 接入点立即启动,普通用户要连接到接入点后才能启动
                        _kClient.Listen();
                    }

                    groupBox1.Enabled = false;
                    groupBox2.Enabled = true;

                    txtLocalKClientEndPoint.Text = _kClient.LocalKEndPoint.ToString();
                    txtLocalTrackerAddress.Text  = "http://localhost:" + _kTracker.LocalEndPoint.Port.ToString() + _kTracker.AnnouceUrl.TrimEnd('?');

                    SetStatusText("服务器已启动");
                    KGState = KeiGuiState.ServersStarted;
                }
            }
        }