// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var authUrl = "http://localhost:8000"; #region IdentityServerSetup services.AddIdentityServer() .AddDeveloperSigningCredential() .AddInMemoryApiResources(MemoryDb.GetApiResources()) .AddInMemoryClients(MemoryDb.GetClients()) .AddTestUsers(MemoryDb.GetUsers()); #endregion #region Validation Settings services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.Authority = authUrl; options.RequireHttpsMetadata = false; options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = authUrl, ValidateAudience = false, ValidAudience = "sinanbir.com.auth", //test purposes ValidateLifetime = true, }; }); #endregion services.AddMvc(); }
/// <summary> /// Awaitable. /// Stores perf counters into memory /// </summary> /// <param name="counters"></param> /// <returns></returns> public async Task StorePerfCounters(IEnumerable <IPerfCounterInputData> counters, DateTime?now = null, string appId = null) { try { var sb = new StringBuilder(); DateTime timeStamp = DateTime.Now; DateTimeOffset dateExpiration = timeStamp.AddSeconds(ExpirationInSeconds); var timeStampStr = timeStamp.ToString("hh:mm:ss.fff"); foreach (var item in counters) { var row = MemoryDb.Get(timeStampStr) as DataRowPerTimeStamp; if (row == null) { row = new DataRowPerTimeStamp(timeStamp); MemoryDb.Add(timeStampStr, row, dateExpiration); } row.AddCounterValue(item.Name, item.Value); counterNames.Add(item.Name); } } catch (Exception exc) { if (OnError != null) { OnError(new object(), new PerfonErrorEventArgs(exc.ToString())); } } }
public void UpsertTest() { Random mrand = new Random(); using (MemoryDb db = new MemoryDb()) { ScalableEntity[] entities = new ScalableEntity[5000]; for (int i = 0; i < entities.Length; i++) { byte[] key = new byte[150]; byte[] value = new byte[1024]; mrand.NextBytes(value); mrand.NextBytes(key); entities[i] = new ScalableEntity(key, value); } db.Upsert(entities).Wait(); List <ScalableEntity> results = new List <ScalableEntity>(); db.Retrieve(entities.Select(m => m.Key), rows => { lock (results) { results.AddRange(rows); } return(true); }).Wait(); Assert.AreEqual(entities.Length, results.Count); Assert.IsTrue(results.SequenceEqual(entities, EntityComparer.instance)); } }
public Object GetTraceData(int PageIndex, int PageSize) { using MemoryDb db = new MemoryDb(); var data = db.Traces .Where(t => t.CreateTime > Convert.ToDateTime(DateTime.Now.AddDays(-1).ToShortDateString())) .Where(t => t.CreateTime <= Convert.ToDateTime(DateTime.Now.AddDays(1).ToShortDateString())) .OrderByDescending(t => t.CreateTime).Select(t => t.Result.ToModel <JObject>()).ToPage(PageIndex, PageSize); return(data); }
public void ClearMemory() { using MemoryDb db = new MemoryDb(); var Trace = db.Traces.ToList(); if (Trace.Count > 500) { db.Traces.RemoveRange(Trace); db.SaveChanges(); } }
public override void SessionReceive(IServer Server, SessionReceiveEventArgs Event) { var Pipe = Event.Stream.ToPipeStream(); if (Pipe.TryReadLine(out string Data)) { using MemoryDb db = new MemoryDb(); var View = db.Traces.Add(new TraceModel { Result = Data, CreateTime = DateTime.Now }); db.SaveChanges(); } }
public void RangeRetrieveTest() { using (MemoryDb db = new MemoryDb()) { ScalableEntity[] entities = new ScalableEntity[5000]; for (int i = 0; i < entities.Length; i++) { entities[i] = new ScalableEntity(BitConverter.GetBytes(System.Net.IPAddress.HostToNetworkOrder(i)), new byte[5000]) { UseLinearHash = true }; } db.Upsert(entities).Wait(); List <ScalableEntity> data = new List <ScalableEntity>(); db.Retrieve(null, null, rows => { lock (data) { data.AddRange(rows); } return(true); }).Wait(); Assert.AreEqual(entities.Length, data.Count); Assert.IsTrue(entities.Intersect(data, EntityComparer.instance).Count() == data.Count); data.Clear(); int count = 0; object sync = new object(); db.Retrieve(BitConverter.GetBytes(System.Net.IPAddress.HostToNetworkOrder(200)), BitConverter.GetBytes(System.Net.IPAddress.HostToNetworkOrder(1000)), rows => { lock (sync) { count += rows.Count(); } Assert.IsFalse(rows.Where(m => { int val = System.Net.IPAddress.NetworkToHostOrder(BitConverter.ToInt32(m.Key, 0)); return(!(val > 200 && val < 1000)); }).Any()); return(true); }).Wait(); Assert.AreEqual(799, count); } }
/// <summary> /// Do not process skip in the function, because results could be incorrect due to expiration. /// Skip is measured against the start of data series /// </summary> /// <param name="counterName"></param> /// <param name="date"></param> /// <param name="skip"></param> /// <param name="appId"></param> /// <returns></returns> public Task <IEnumerable <IPerfCounterValue> > QueryCounterValues(string counterName, DateTime?date = null, int skip = 0, string appId = null) { if (!date.HasValue) { date = DateTime.Now; } var list = new List <IPerfCounterValue>(); var all = MemoryDb.ToList(); foreach (var item in all) { var row = item.Value as DataRowPerTimeStamp; var res = row.TryGetCounterValue(counterName); if (!double.IsNaN(res) && row.TimeStamp.Date == date.Value.Date) { list.Add(new PerfCounterValue(row.TimeStamp, res)); } } return(Task.FromResult(list as IEnumerable <IPerfCounterValue>)); }
public static void InitMemoryDb() { MemoryDb.Init(); }
public DataRepository(MemoryDb memoryDb) { _memoryDb = memoryDb; }