static ConsoleOption Create(IConsolePersistence <Guid, MondayMorningBlues> repo) { return(new ConsoleOption("Create entity" , (m, o) => { sContext.EntityState.Id = Guid.NewGuid(); bool success = false; try { var result = repo.Persistence.Create(CreateEntity(sContext.EntityState.Id, email: sContext.EntityState.Reference) , new RepositorySettings() { WaitTime = TimeSpan.FromSeconds(30), Source = "Xigadee" }).Result; success = result?.IsSuccess ?? false; if (success) { sContext.EntityState.Versionid = result.Entity.VersionId; } } catch (Exception ex) { } finally { PersistenceLog(m, "Create", success); } })); }
static ConsoleOption StressTest(IConsolePersistence <Guid, MondayMorningBlues> repo) { return(new ConsoleOption("Create 100000 entities async" , (m, o) => { var batchId = Guid.NewGuid().ToString("N").ToUpperInvariant(); int i = 0; for (; i < 100000; i++) { try { var result = repo.Persistence.Create(CreateEntity() , new RepositorySettings() { WaitTime = TimeSpan.FromMinutes(15), ProcessAsync = true, BatchId = batchId, CorrelationId = string.Format("{0}/{1}", batchId, i) } ).Result; } catch (Exception ex) { throw ex; } } PersistenceLog(m, "100000 enqueued", true); })); }
static ConsoleOption Update(IConsolePersistence <Guid, MondayMorningBlues> repo) { return(new ConsoleOption("Update entity" , (m, o) => { var result = repo.Persistence.Update( new MondayMorningBlues() { Id = sContext.EntityState.Id, ContentId = new Guid(), VersionId = sContext.EntityState.Versionid, Message = $"Hello mom2 -{DateTime.Now.ToString()}", NotEnoughCoffee = false, NotEnoughSleep = false, Email = sContext.EntityState.Reference } , new RepositorySettings() { WaitTime = TimeSpan.FromMinutes(5) }) .Result; PersistenceLog(m, "Update", result.IsSuccess); if (result.IsSuccess) { sContext.EntityState.Versionid = result.Entity.VersionId; } })); }
static ConsoleOption Read(IConsolePersistence <Guid, MondayMorningBlues> repo) { return(new ConsoleOption("Read entity" , (m, o) => { var result = repo.Persistence.Read(sContext.EntityState.Id , new RepositorySettings() { WaitTime = TimeSpan.FromMinutes(5) }).Result; PersistenceLog(m, "Read", result.IsSuccess); })); }
static ConsoleOption ReadByReference(IConsolePersistence <Guid, MondayMorningBlues> repo) { return(new ConsoleOption("Read entity by reference" , (m, o) => { var result = repo.Persistence.ReadByRef("email", sSettings.EntityState.Reference , new RepositorySettings() { WaitTime = TimeSpan.FromMinutes(5) }).Result; PersistenceLog(m, "Read By Reference", result.IsSuccess); })); }
static ConsoleOption Version(IConsolePersistence <Guid, MondayMorningBlues> repo) { return(new ConsoleOption("Version entity" , (m, o) => { var result = repo.Persistence.Version(sContext.EntityState.Id, new RepositorySettings() { WaitTime = TimeSpan.FromMinutes(5) , VersionId = sContext.EntityState.Versionid.ToString() }).Result; PersistenceLog(m, "Version", result.IsSuccess); })); }
static ConsoleOption DeleteByReference(IConsolePersistence <Guid, MondayMorningBlues> repo) { return(new ConsoleOption("Delete entity by reference" , (m, o) => { var result = repo.Persistence.DeleteByRef("email", sContext.EntityState.Reference, new RepositorySettings() { WaitTime = TimeSpan.FromMinutes(5) , VersionId = sContext.EntityState.Versionid.ToString() }).Result; PersistenceLog(m, "Delete By Reference", result.IsSuccess); })); }
static ConsoleOption Search(IConsolePersistence <Guid, MondayMorningBlues> repo) { return(new ConsoleOption("Search entity" , (m, o) => { var search = new SearchRequest(); var result = repo.Persistence.Search(search, new RepositorySettings() { WaitTime = TimeSpan.FromMinutes(5) }).Result; PersistenceLog(m, "Search", result.IsSuccess); })); }
static ConsoleOption StressCrudTest(IConsolePersistence <Guid, MondayMorningBlues> repo) { return(new ConsoleOption("Create, Read, Update, Delete 1000 entities async" , (m, o) => { //// Create a work queue to process //var batchId = Guid.NewGuid().ToString("N").ToUpperInvariant(); //var workQueue = new ConcurrentQueue<Tuple<int, Func<Lazy<IRepositoryAsync<Guid, MondayMorningBlues>>, string, Task<bool>>>>(); //for (var j = 0; j < 1000; j++) //{ // workQueue.Enqueue(new Tuple<int, Func<Lazy<IRepositoryAsync<Guid, MondayMorningBlues>>, string, Task<bool>>>(j, (r, b) => PerformCrud(r, b, m))); //} //for (int i = 0; i < 50; i++) //{ // var taskId = i; // Task.Run(async () => // { // Tuple<int, IRepositoryAsync<Guid, MondayMorningBlues>, string, Task<bool>>> queueItem; // while (workQueue.TryDequeue(out queueItem)) // { // var crudStart = DateTime.UtcNow; // var result = await queueItem.Item2(repo.Persistence, batchId); // if (!result) // { // PersistenceLog(m, "Failure for " + taskId, false); // return; // } // Console.WriteLine($"Crud for worker {taskId} processed {queueItem.Item1} successfully after {DateTime.UtcNow.Subtract(crudStart).TotalSeconds} seconds"); // } // PersistenceLog(m, $"{taskId} Finished Crud {queueItem.Item1}", true); // }); //} PersistenceLog(m, "1000 enqueued", true); })); }