public void InMemoryStorage_After1000CallsFromApi_ContainsElementsInTheSameOrderAsTheyCameFromApi()
        {
            // Arrange
            var repo         = new DeviceLogsRepoMock();
            var countOfCalls = 1000;

            new LogsStorageWriter(_helperCollection, repo, _appSettingsModifier).RunLogsChecker(CancellationToken.None);
            var copyOfHelperCollectionAsList = new List <DeviceLog>();

            // Act

            var taskWriters = Enumerable.Range(1, countOfCalls).Select(x =>
            {
                return(Task.Run(() =>
                {
                    var log = new DeviceLog {
                        DateStamp = DateTime.Now, PluginName = "SamsungDPlugin", Id = x
                    };

                    lock (_locker)
                    {
                        _helperCollection.AddLog(log);
                        copyOfHelperCollectionAsList.Add(log);
                    }
                }));
            }).ToArray();

            Task.WaitAll(taskWriters); // full the collection of collections
            Thread.Sleep(3000);

            var isEqual = Enumerable.SequenceEqual(repo.logsInMemory, copyOfHelperCollectionAsList);

            //Assert
            Assert.True(isEqual);
        }
        private void EmulateCalls(int countOfCalls)
        {
            var taskWriters = Enumerable.Range(1, countOfCalls).Select(x =>
            {
                return(Task.Run(() =>
                {
                    _helperCollection.AddLog(_log);
                }));
            }).ToArray();

            Task.WaitAll(taskWriters);
        }
        public async Task <IActionResult> WriteLogAsync(string smthFromDevice)
        {
            using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
            {
                smthFromDevice = await reader.ReadToEndAsync();
            }

            IncrementCount();

            try
            {
                var log = _devicesLogsService.ConvertStringToDeviceLog(smthFromDevice);

                _collectionOfLogs.AddLog(log);
            }
            catch (ArgumentNullException ex)
            {
                //Debugger.Break();
                Console.WriteLine(ex.Message);
            }

            return(Ok("Log added to temporary collection"));
        }