public Task <bool> LazyCommitMasterData(Guid runId, string CompletedAt) { return(_docerator.Decorate <bool>(() => { bool ret = false; using (var dbContext = new PerformanceDbContext()) { var masterData = dbContext.PerformanceExecutions.FirstOrDefault(r => r.RunId == runId); if (masterData == null) { return false; } masterData.CompletedAt = Helper.Utilities.ParseDateTimestamp(CompletedAt); masterData.DurationInMS = ((masterData.CompletedAt) - masterData.StartedAt)?.TotalMilliseconds ?? 0; var enumartor = TransformData(ReadData(tracePath)).GetEnumerator(); int idx = 0; while (enumartor.MoveNext()) { var item = enumartor.Current as TraceDetails; item.RunId = masterData.RunId; item.PerformanceExecution = masterData; dbContext.TraceDetails.Add(item); // save when reach threeshold to keep saving in progress, avoid saving timeout for large number of items. if (idx++ > saveThreeshold) { dbContext.SaveChanges(); idx = 0; } } ret = dbContext.SaveChanges() > 0; } return ret; })); }
static (double coreEllapsed, long totalElapsed) GenerateProducts(int numberOfProductsToGenerate, bool dropData = false, bool batchInsert = true) { Stopwatch watch; var faker = new Faker("es"); if (dropData) { context.EncabezadoFacturas.Where(f => 1 == 1).DeleteFromQuery(); context.Productos.Where(x => 1 == 1).DeleteFromQuery(); } var range = new Queue <int>(Enumerable.Range(1, numberOfProductsToGenerate)); faker.IndexFaker = 1; var fakeProducts = Builder <Producto> .CreateListOfSize(numberOfProductsToGenerate) .All() .With(p => p.CodigoProducto = faker.IndexFaker++) .With(p => p.Descripcion = faker.Commerce.ProductName()) .With(p => p.PrecioVenta = decimal.Parse(faker.Commerce.Price())) .With(p => p.Existencia = int.MaxValue) .Build(); if (batchInsert) { watch = Stopwatch.StartNew(); context.BulkInsert <Producto>(fakeProducts); context.SaveChanges(); watch.Stop(); return((double)watch.ElapsedMilliseconds / (double)numberOfProductsToGenerate, watch.ElapsedMilliseconds); } var times = new List <long>(numberOfProductsToGenerate); fakeProducts.ToList().ForEach(p => { watch = Stopwatch.StartNew(); context.Productos.Add(p); context.SaveChanges(); watch.Stop(); times.Add(watch.ElapsedMilliseconds); }); return(times.Average(), times.Sum()); }
public Task <bool> SaveAPITestCase(Models.APITestCase APITestCase) { return(_docerator.Decorate <bool>(() => { bool ret = false; using (var dbContext = new PerformanceDbContext()) { dbContext.APITestCases.Add(APITestCase); ret = dbContext.SaveChanges() > 0; } return ret; })); }
public Task <bool> CommitMasterData(Guid runId, string CompletedAt) { return(_docerator.Decorate <bool>(() => { bool ret = false; using (var dbContext = new PerformanceDbContext()) { var masterData = dbContext.PerformanceExecutions.FirstOrDefault(r => r.RunId == runId); if (masterData == null) { return false; } masterData.CompletedAt = Helper.Utilities.ParseDateTimestamp(CompletedAt); masterData.DurationInMS = ((masterData.CompletedAt) - masterData.StartedAt)?.TotalMilliseconds ?? 0; var traceData = ReadDataInHashTable(tracePath); int idx = 0; foreach (ICollection <TraceDetails> traceDic in traceData.Values) { foreach (var item in traceDic) { item.RunId = masterData.RunId; item.PerformanceExecution = masterData; dbContext.TraceDetails.Add(item); // save when reach threeshold to keep saving in progress, avoid saving timeout for large number of items. if (++idx >= saveThreeshold) { dbContext.SaveChanges(); idx = 0; } } } ret = dbContext.SaveChanges() > 0; } return ret; })); }
public Task <bool> SaveMaster(Models.PerformanceExecution masterData) { return(_docerator.Decorate <bool>(() => { bool ret = false; using (var dbContext = new PerformanceDbContext()) { if (masterData == null) { return false; } dbContext.PerformanceExecutions.Add(masterData); ret = dbContext.SaveChanges() > 0; } return ret; })); }
public Task <bool> SaveAPIPerformance(APITrace APIPerformance) { return(_docerator.Decorate <bool>(() => { bool ret = false; using (var dbContext = new PerformanceDbContext()) { var master = dbContext.PerformanceExecutions.FirstOrDefault(m => m.RunId == APIPerformance.RunId); if (APIPerformance == null || master == null) { return false; } APIPerformance.PerformanceExecution = master; dbContext.APITraces.Add(APIPerformance); ret = dbContext.SaveChanges() > 0; } return ret; })); }
public Task <bool> APIErrorLogger(Guid runId, string error) { return(_docerator.Decorate <bool>(() => { bool ret = false; using (var dbContext = new PerformanceDbContext()) { var master = dbContext.PerformanceExecutions.FirstOrDefault(m => m.RunId == runId); if (string.IsNullOrEmpty(error) || master == null) { return false; } var errorLog = new APIErrorLog() { RunId = runId, PerformanceExecution = master, Error = error, }; dbContext.APIErrorLogs.Add(errorLog); ret = dbContext.SaveChanges() > 0; } return ret; })); }