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")); }