static int TestHadbSuite(ConsoleService c, string cmdName, string str) { ConsoleParam[] args = { new ConsoleParam("THREADS"), new ConsoleParam("LOOP1"), new ConsoleParam("LOOP2"), }; ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args); int numThreads = vl["THREADS"].IntValue; int loop1 = vl["LOOP1"].IntValue; int loop2 = vl["LOOP2"].IntValue; if (numThreads <= 0) { numThreads = 10; } if (loop1 <= 0) { loop1 = 3; } if (loop2 <= 0) { loop2 = 1; } const string TestDbServer = "dn-mssql2019dev1.ipantt.net,7012"; // dn-mssql2019dev1 const string TestDbName = "HADB001"; const string TestDbReadUser = "******"; const string TestDbWriteUser = "******"; const string TestDbReadPassword = "******"; const string TestDbWritePassword = "******"; for (int k = 0; k < loop2; k++) { try { for (int i = 0; i < loop1; i++) { $"=========== try i = {i} ============="._Print(); bool error = false; Async(async() => { AsyncManualResetEvent start = new AsyncManualResetEvent(); List <Task> taskList = new List <Task>(); for (int i = 0; i < numThreads; i++) { var task = TaskUtil.StartAsyncTaskAsync(async() => { await Task.Yield(); await start.WaitAsync(); try { int seed = Interlocked.Increment(ref Seed_TestHadbSuite); string systemName = ("HADB_CODE_TEST_" + Str.DateTimeToYymmddHHmmssLong(DtNow) + "_" + Env.MachineName + "_" + Str.GenerateRandomDigit(8) + "_" + seed.ToString("D8")).ToUpperInvariant(); systemName = "" + (char)('A' + Secure.RandSInt31() % 26) + "_" + systemName; var flags = HadbOptionFlags.NoAutoDbReloadAndUpdate; flags |= HadbOptionFlags.NoLocalBackup; flags |= HadbOptionFlags.DataUidForPartitioningByUidOptimized; if (numThreads >= 2) { flags |= HadbOptionFlags.NoInitConfigDb | HadbOptionFlags.NoInitSnapshot | HadbOptionFlags.DoNotTakeSnapshotAtAll | HadbOptionFlags.DoNotSaveStat; } HadbSqlSettings settings = new HadbSqlSettings(systemName, new SqlDatabaseConnectionSetting(TestDbServer, TestDbName, TestDbReadUser, TestDbReadPassword, true), new SqlDatabaseConnectionSetting(TestDbServer, TestDbName, TestDbWriteUser, TestDbWritePassword, true), IsolationLevel.Snapshot, IsolationLevel.Serializable, flags); await HadbCodeTest.Test1Async(settings, systemName, flags.Bit(HadbOptionFlags.NoLocalBackup) == false, numThreads >= 2); } catch (Exception ex) { "--------------------- ERROR !!! ---------------"._Error(); ex._Error(); throw; } } ); taskList.Add(task); } start.Set(true); foreach (var task in taskList) { var ret = await task._TryAwaitAndRetBool(); if (ret.IsError) { error = true; } } }); if (error) { throw new CoresException("Error occured."); } } $"--- Whole Loop #{loop2}: All OK! ---"._Print(); } catch (Exception ex) { $"--- Whole Loop #{loop2}: Error! ---"._Print(); ex._Error(); $"--- Whole Loop #{loop2}: Error! ---"._Print(); throw; } } return(0); }