public void TinyCsvTest() { CsvParserOptions csvParserOptions = new CsvParserOptions(true, ','); CsvApacheJmeterResultMapping csvMapper = new CsvApacheJmeterResultMapping(); CsvParser <BenchmarkTestItem> csvParser = new CsvParser <BenchmarkTestItem>(csvParserOptions, csvMapper); var dirName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var filePath = Path.Combine(dirName + @"\\FileUploads\\TestCSVUpload.csv"); var result = csvParser .ReadFromFile(filePath, Encoding.ASCII) .ToList(); //Assert.Equal(21, result.Count); //Assert.True(result.All(x => x.IsValid)); //Assert.Equal("Philipp", result[0].Result.FirstName); //Assert.Equal("Wagner", result[0].Result.LastName); //Assert.Equal(1986, result[0].Result.BirthDate.Year); //Assert.Equal(5, result[0].Result.BirthDate.Month); //Assert.Equal(12, result[0].Result.BirthDate.Day); //Assert.Equal("Max", result[1].Result.FirstName); //Assert.Equal("Mustermann", result[1].Result.LastName); //Assert.Equal(2014, result[1].Result.BirthDate.Year); //Assert.Equal(1, result[1].Result.BirthDate.Month); //Assert.Equal(1, result[1].Result.BirthDate.Day); }
private async Task ProcessResults(string filePath, Guid benchmarkExperimentId) { Guard.Against.GuidNullOrDefault(benchmarkExperimentId, nameof(benchmarkExperimentId)); Guard.Against.NullOrEmpty(filePath, nameof(filePath)); if (!filePath.ToLower().EndsWith(".csv")) { throw new ArgumentException("File must be csv"); } var application = await _benchmarkExperimentRepo.GetByIdAsync(benchmarkExperimentId); Guard.Against.Null(application, nameof(application)); if (application.JmeterResultsProcessed) { return; } CsvParserOptions csvParserOptions = new CsvParserOptions(true, ','); CsvApacheJmeterResultMapping csvMapper = new CsvApacheJmeterResultMapping(); CsvParser <BenchmarkTestItem> csvParser = new CsvParser <BenchmarkTestItem>(csvParserOptions, csvMapper); var result = csvParser .ReadFromFile(filePath, Encoding.ASCII) .ToList(); if (result.Count == 0) { return; } var benchmarkItemList = result.Where(x => x.IsValid).Select(c => c.Result).ToList(); var ignoreThreadNames = application.TestFile.ThreadNamesToIgnore; //remove results with threadname to ignore if (ignoreThreadNames != null) { benchmarkItemList = benchmarkItemList.Where(c => !ignoreThreadNames.Contains(c.Label)).ToList(); } //Exclude certain fields around experiment var excludeArray = new string[] { "Send Start Of Experiment", "Send End of Experiment Files", "Process End Of Experiment Operations", "Send End Of Experiment" }; //list arrays are immutable benchmarkItemList = benchmarkItemList.Where(c => !excludeArray.Contains(c.Label)).ToList(); foreach (var row in benchmarkItemList) { row.ConvertToTimestamp(); row.BenchmarkExperiment = application; } //calculate stats calculation application.BenchmarkStatsCalculation(benchmarkItemList.ToList()); application.JmeterResultsProcessed = true; await _benchmarkExperimentRepo.UpdateAsync(application); await _benchmarkTestItemService.AddRangeAsync(benchmarkItemList); //Delete AWS or Azure Resources if marked await SendDeleteResourcesRequests(application); }