private void _parallelGenerationDifferent() { const int PASS_CNT = 5000; int TOTAL = 0; var gen = new GdidGenerator(NOPApplication.Instance); gen.AuthorityHosts.Register(new GdidGenerator.AuthorityHost(NOPApplication.Instance, "sync://127.0.0.1:9999")); var dict = new Dictionary <string, List <ulong> >(); dict.Add("aseq", new List <ulong>()); dict.Add("bseq", new List <ulong>()); dict.Add("cseq", new List <ulong>()); dict.Add("dseq", new List <ulong>()); dict.Add("eseq", new List <ulong>()); dict.Add("fseq", new List <ulong>()); dict.Add("gseq", new List <ulong>()); var rnd = new Random(); var sw = Stopwatch.StartNew(); Parallel.For(0, PASS_CNT, (n) => { var seq = dict.Keys.ToList()[n % dict.Keys.Count]; var BATCH = 32 + rnd.Next(255); //introduces randomness in threads ulong[] arr = new ulong[BATCH]; for (int i = 0; i < BATCH; i++) { arr[i] = gen.GenerateOneGdid("a", seq, 1024).ID; } lock (dict[seq]) foreach (var id in arr) { dict[seq].Add(id); } System.Threading.Interlocked.Add(ref TOTAL, BATCH); }); var elapsed = sw.ElapsedMilliseconds; foreach (var kvp in dict) { Aver.AreEqual(kvp.Value.Count, kvp.Value.Distinct().Count());//all values are distinct Console.WriteLine("{0} = {1} ids".Args(kvp.Key, kvp.Value.Count)); } Console.WriteLine("Processed {0} in {1} ms. at {2}/sec.".Args(TOTAL, elapsed, TOTAL / (elapsed / 1000d))); }
protected override void DoStart() { if (m_TargetName.IsNullOrWhiteSpace()) { throw new MdbException(StringConsts.MDB_STORE_CONFIG_NO_TARGET_NAME_ERROR); } if (m_Areas.Count == 0) { throw new MdbException(StringConsts.MDB_STORE_CONFIG_NO_AREAS_ERROR); } try { GdidAuthorityService.CheckNameValidity(m_SchemaName); GdidAuthorityService.CheckNameValidity(m_BankName); var gdidScope = GetGdidScopePrefix(m_SchemaName, m_BankName); m_GdidGenerator = new GdidGenerator(this, "GdidGen({0})".Args(gdidScope), gdidScope, null); foreach (var ah in App.AsSky().Metabase.GDIDAuthorities) { m_GdidGenerator.AuthorityHosts.Register(ah); App.Log.Write(new Azos.Log.Message { Type = Azos.Log.MessageType.InfoD, Topic = SysConsts.LOG_TOPIC_MDB, From = GetType().FullName + ".makeGDIDGen()", Text = "Registered GDID authority host: " + ah.ToString() }); } } catch (Exception error) { throw new MdbException(StringConsts.MDB_STORE_CONFIG_GDID_ERROR + error.ToMessageWithType()); } try { m_Cache = new LocalCache(this, "MDBDataStore::" + Name); m_Cache.Pile = new DefaultPile(m_Cache, "MDBDataStore::Pile::" + Name); m_Cache.Configure(null); m_Cache.Start(); } catch { try { DisposableObject.DisposeAndNull(ref m_GdidGenerator); } catch {} try { DisposableObject.DisposeAndNull(ref m_Cache); } catch {} throw; } }
private void _parallelGenerationSame() { const int PASS_CNT = 5000; int TOTAL = 0; var gen = new GdidGenerator(NOPApplication.Instance); gen.AuthorityHosts.Register(new GdidGenerator.AuthorityHost(NOPApplication.Instance, "sync://127.0.0.1:9999")); var lst = new List <ulong>(); var rnd = new Random(); var sw = Stopwatch.StartNew(); Parallel.For(0, PASS_CNT, (_) => { var BATCH = 32 + rnd.Next(255); //introduces randomness in threads ulong[] arr = new ulong[BATCH]; for (int i = 0; i < BATCH; i++) { arr[i] = gen.GenerateOneGdid("a", "aseq", 1024).ID; } lock (lst) foreach (var id in arr) { lst.Add(id); } System.Threading.Interlocked.Add(ref TOTAL, BATCH); }); var elapsed = sw.ElapsedMilliseconds; Aver.AreEqual(lst.Count, lst.Distinct().Count()); //all values are distinct Console.WriteLine("Processed {0} in {1} ms. at {2}/sec.".Args(TOTAL, elapsed, TOTAL / (elapsed / 1000d))); }
protected override void DoInitApplication() { base.DoInitApplication(); var FROM = GetType().FullName + ".DoInitApplication()"; var metabase = m_BootLoader.Metabase; try { m_GDIDProvider = new GdidGenerator(this, "Sky"); foreach (var ah in metabase.GDIDAuthorities) { m_GDIDProvider.AuthorityHosts.Register(ah); WriteLog(MessageType.Info, FROM + "{GDIDProvider init}", "Registered GDID authority host: " + ah.ToString()); } WriteLog(MessageType.Info, FROM, "GDIProvider made"); } catch (Exception error) { WriteLog(MessageType.CatastrophicError, FROM + "{GDIDProvider init}", error.ToMessageWithType()); try { m_GDIDProvider.Dispose(); } catch { } m_GDIDProvider = null; } var wmSection = ConfigRoot[CONFIG_WEB_MANAGER_SECTION]; if (wmSection.Exists && wmSection.AttrByName(CONFIG_ENABLED_ATTR).ValueAsBool(false)) { try { m_WebManagerServer = new WaveServer(this); m_WebManagerServer.Configure(wmSection); m_WebManagerServer.Start(); } catch (Exception error) { WriteLog(MessageType.CatastrophicError, FROM + "{WebManagerServer start}", error.ToMessageWithType()); try { m_WebManagerServer.Dispose(); } catch {} m_WebManagerServer = null; } } var lockSection = ConfigRoot[CONFIG_LOCK_MANAGER_SECTION]; try { m_LockManager = FactoryUtils.MakeAndConfigure <ILockManagerImplementation>(lockSection, typeof(LockManager)); WriteLog(MessageType.Info, FROM, "Lock Manager made"); if (m_LockManager is Daemon) { ((Daemon)m_LockManager).Start(); WriteLog(MessageType.Info, FROM, "Lock Manager STARTED"); } } catch (Exception error) { WriteLog(MessageType.CatastrophicError, FROM + "{LockManager start}", error.ToMessageWithType()); try { m_LockManager.Dispose(); } catch {} m_LockManager = null; } var procSection = ConfigRoot[CONFIG_PROCESS_MANAGER_SECTION]; try { m_ProcessManager = FactoryUtils.MakeAndConfigure <IProcessManagerImplementation>(procSection, typeof(ProcessManager), new object[] { this }); WriteLog(MessageType.Info, FROM, "Process Manager made"); if (m_ProcessManager is Daemon) { ((Daemon)m_ProcessManager).Start(); WriteLog(MessageType.Info, FROM, "Process Manager STARTED"); } } catch (Exception error) { WriteLog(MessageType.CatastrophicError, FROM + "{ProcessManager start}", error.ToMessageWithType()); try { m_ProcessManager.Dispose(); } catch {} m_ProcessManager = null; } var hostSection = ConfigRoot[CONFIG_HOST_MANAGER_SECTION]; try { m_DynamicHostManager = FactoryUtils.MakeAndConfigure <IHostManagerImplementation>(procSection, typeof(HostManager), new object[] { this }); WriteLog(MessageType.Info, FROM, "Dynamic Host Manager made"); if (m_DynamicHostManager is Daemon) { ((Daemon)m_DynamicHostManager).Start(); WriteLog(MessageType.Info, FROM, "Dynamic Host Manager STARTED"); } } catch (Exception error) { WriteLog(MessageType.CatastrophicError, FROM + "{HostManager start}", error.ToMessageWithType()); try { m_DynamicHostManager.Dispose(); } catch {} m_DynamicHostManager = null; } }
private void GDIDForm_Load(object sender, EventArgs e) { m_Generator = new GdidGenerator(Azos.WinForms.FormsAmbient.App); m_Generator.TestingAuthorityNode = "sync://localhost:4000";//"async://localhost:4001"; }
public void Prologue(Runner runner, FID id) { m_Mock = new MockGdidAuthorityAccessor(NOPApplication.Instance); m_Gen = new GdidGenerator(NOPApplication.Instance, m_Mock); }
static void run(string[] args) { using (var app = new AzosApplication(args, null)) { var silent = app.CommandArgs["s", "silent"].Exists; if (!silent) { ConsoleUtils.WriteMarkupContent(typeof(ProgramBody).GetText("Welcome.txt")); ConsoleUtils.Info("Build information:"); Console.WriteLine(" Azos: " + BuildInformation.ForFramework); Console.WriteLine(" Tool: " + new BuildInformation(typeof(agm.ProgramBody).Assembly)); } if (app.CommandArgs["?", "h", "help"].Exists) { ConsoleUtils.WriteMarkupContent(typeof(ProgramBody).GetText("Help.txt")); return; } var authority = app.CommandArgs.AttrByIndex(0).Value; var connectToAuthority = authority.ToResolvedServiceNode(false).ConnectString; var scope = app.CommandArgs.AttrByIndex(1).Value; var seq = app.CommandArgs.AttrByIndex(2).Value; var bsize = app.CommandArgs.AttrByIndex(3).ValueAsInt(1); if (!silent) { ConsoleUtils.Info("Authority: " + authority); ConsoleUtils.Info("Connect to: " + connectToAuthority); ConsoleUtils.Info("Scope: " + scope); ConsoleUtils.Info("Sequence: " + seq); ConsoleUtils.Info("Block Size: " + bsize); } var w = System.Diagnostics.Stopwatch.StartNew(); var generator = new GdidGenerator(app); generator.AuthorityHosts.Register(new GdidGenerator.AuthorityHost(app, connectToAuthority)); var json = app.CommandArgs["j", "json"].Exists; var arr = app.CommandArgs["array"].Exists; if (arr) { Console.WriteLine("["); } for (var i = 0; i < bsize; i++) { var gdid = generator.GenerateOneGdid(scope, seq, bsize - i, noLWM: true); string line; if (json) { line = new { Era = gdid.Era, ID = gdid.ID, Authority = gdid.Authority, Counter = gdid.Counter } }
static void run(string[] args) { using (var app = new AzosApplication(args, null)) { var silent = app.CommandArgs["s", "silent"].Exists; if (!silent) { ConsoleUtils.WriteMarkupContent(typeof(ProgramBody).GetText("Welcome.txt")); ConsoleUtils.Info("Build information:"); Console.WriteLine(" Azos: " + BuildInformation.ForFramework); Console.WriteLine(" Tool: " + new BuildInformation(typeof(agm.ProgramBody).Assembly)); } if (app.CommandArgs["?", "h", "help"].Exists) { ConsoleUtils.WriteMarkupContent(typeof(ProgramBody).GetText("Help.txt")); return; } IGdidAuthorityAccessor accessor = null; string connectToAuthority = null; var authority = app.CommandArgs.AttrByIndex(0).Value; if (authority.StartsWith("@"))//use accessor instead { authority = authority.Remove(0, 1); var cfg = authority.AsLaconicConfig(handling: Data.ConvertErrorHandling.Throw); accessor = FactoryUtils.MakeAndConfigureComponent <IGdidAuthorityAccessor>(app, cfg); } else { connectToAuthority = authority.ToResolvedServiceNode(false).ConnectString; } var scope = app.CommandArgs.AttrByIndex(1).Value; var seq = app.CommandArgs.AttrByIndex(2).Value; var bsize = app.CommandArgs.AttrByIndex(3).ValueAsInt(1); if (!silent) { ConsoleUtils.Info("Authority: " + authority); ConsoleUtils.Info(accessor != null ? ("Connect via: {0}" + accessor.GetType().Name) : ("Connect to: {0}" + connectToAuthority)); ConsoleUtils.Info("Scope: " + scope); ConsoleUtils.Info("Sequence: " + seq); ConsoleUtils.Info("Block Size: " + bsize); } var w = System.Diagnostics.Stopwatch.StartNew(); var generator = new GdidGenerator(app, accessor); if (connectToAuthority.IsNotNullOrWhiteSpace()) { generator.AuthorityHosts.Register(new GdidGenerator.AuthorityHost(app, connectToAuthority)); } var json = app.CommandArgs["j", "json"].Exists; var arr = app.CommandArgs["array"].Exists; if (arr) { Console.WriteLine("["); } for (var i = 0; i < bsize; i++) { var gdid = generator.GenerateOneGdid(scope, seq, bsize - i, noLWM: true); string line; if (json) { line = new { Era = gdid.Era, ID = gdid.ID, Authority = gdid.Authority, Counter = gdid.Counter } }