Example #1
0
        public void LoadTest_1000Records()
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();

            const string baseUrl = "http://localhost:8888/";
            const string url     = baseUrl + "api/server/test/loaddata";

            using (WebApp.Start <Startup>(baseUrl))
            {
                for (var i = 0; i < 1000; i++)
                {
                    var serverLoadEntry = new ServerLoadEntry
                    {
                        CpuLoad = i,
                        RamLoad = i
                    };

                    var content = new ObjectContent <ServerLoadEntry>(serverLoadEntry, new JsonMediaTypeFormatter(), "application/json");

                    var handler = new HttpClientHandler {
                        UseDefaultCredentials = true
                    };
                    using (var httpClient = new HttpClient(handler, true))
                    {
                        httpClient.PostAsync(url, content);
                    }
                }
            }

            Console.WriteLine(stopwatch.Elapsed);
        }
Example #2
0
        public void ServerController_Post_SavesNewServerLoadDataEntry()
        {
            var expectedRecordedDate = DateTime.Now;

            Clock.Freeze(expectedRecordedDate);

            var serverLoadData = new ServerLoadEntry
            {
                CpuLoad = 1.00d,
                RamLoad = 2.00d
            };

            var t = _controller.Post(ServerName, serverLoadData).Result;

            Assert.That(_serverLoadRepository.ServerRecords.Count(), Is.EqualTo(1));

            var savedServerRecords = _serverLoadRepository.ServerRecords.Single();

            Assert.That(savedServerRecords.Key, Is.EqualTo(ServerName));

            var serverLoadDataRecords = savedServerRecords.Value;

            Assert.That(serverLoadDataRecords.Count, Is.EqualTo(1));

            var serverLoadDataRecord = serverLoadDataRecords.Single();

            Assert.That(serverLoadDataRecord.CpuLoad, Is.EqualTo(1.00d));
            Assert.That(serverLoadDataRecord.RamLoad, Is.EqualTo(2.00d));
            Assert.That(serverLoadDataRecord.RecordedDate, Is.EqualTo(expectedRecordedDate));
        }
Example #3
0
        public void ServerController_Post_InvalidServerNameReturns400(string serverName)
        {
            var serverLoadData = new ServerLoadEntry();

            var response = _controller.Post(serverName, serverLoadData).Result;

            Assert.That((int)response.StatusCode, Is.EqualTo(400));
        }
Example #4
0
        public void ServerController_Post_Returns200OnSuccess()
        {
            var serverLoadData = new ServerLoadEntry();

            var response = _controller.Post(ServerName, serverLoadData).Result;

            Assert.That((int)response.StatusCode, Is.EqualTo(200));
        }
        public async Task <HttpResponseMessage> Post(string serverName, [FromBody] ServerLoadEntry serverLoadEntry)
        {
            if (string.IsNullOrWhiteSpace(serverName))
            {
                return(new HttpResponseMessage(HttpStatusCode.BadRequest));
            }

            await Task.Run(() => _serverLoadRepository.Record(serverName, serverLoadEntry));

            return(new HttpResponseMessage(HttpStatusCode.OK));
        }
 public void Record(string serverName, ServerLoadEntry serverLoadEntry)
 {
     ServerRecords.AddOrUpdate(serverName,
                               s => new BlockingCollection <ServerLoadData> {
         new ServerLoadData(serverLoadEntry)
     },
                               (s, list) =>
     {
         list.Add(new ServerLoadData(serverLoadEntry));
         return(list);
     });
 }
Example #7
0
        public void ServerController_Post_AppendsLoadDataEntry()
        {
            var expectedRecordedDate = DateTime.Now;

            Clock.Freeze(expectedRecordedDate);

            _serverLoadRepository.ServerRecords.TryAdd(ServerName, new BlockingCollection <ServerLoadData>
            {
                new ServerLoadData
                {
                    CpuLoad      = 100d,
                    RamLoad      = 200d,
                    RecordedDate = expectedRecordedDate
                }
            });

            var serverLoadData = new ServerLoadEntry
            {
                CpuLoad = 1.00d,
                RamLoad = 2.00d
            };

            var t = _controller.Post(ServerName, serverLoadData).Result;

            Assert.That(_serverLoadRepository.ServerRecords.Count(), Is.EqualTo(1));

            var savedServerRecords = _serverLoadRepository.ServerRecords.Single();

            Assert.That(savedServerRecords.Key, Is.EqualTo(ServerName));

            var serverLoadDataRecords = savedServerRecords.Value.ToList();

            Assert.That(serverLoadDataRecords.Count, Is.EqualTo(2));

            Assert.That(serverLoadDataRecords[0].CpuLoad, Is.EqualTo(100d));
            Assert.That(serverLoadDataRecords[0].RamLoad, Is.EqualTo(200d));
            Assert.That(serverLoadDataRecords[0].RecordedDate, Is.EqualTo(expectedRecordedDate));

            Assert.That(serverLoadDataRecords[1].CpuLoad, Is.EqualTo(1.00d));
            Assert.That(serverLoadDataRecords[1].RamLoad, Is.EqualTo(2.00d));
            Assert.That(serverLoadDataRecords[1].RecordedDate, Is.EqualTo(expectedRecordedDate));
        }
 public ServerLoadData(ServerLoadEntry serverLoadEntry) : this(serverLoadEntry.CpuLoad, serverLoadEntry.RamLoad)
 {
 }