public int DllCopyThread(DataMover DMover) { FileCopier fc = DMover.fileCopier; List <string> DestPathes = DMover.DestPathes; Dictionary <int, List <string> > DllNames = DMover.DllNames; string DllDirPath = DMover.DllFolder; foreach (int key in DllNames.Keys) { foreach (string dllName in DllNames[key]) { string dllPath = BuildDllPath(dllName, DllDirPath, key); if (dllPath != "") { foreach (string destPath in DestPathes) { string[] lparams = new string[2]; lparams[0] = dllPath; lparams[1] = destPath + dllName; fc.Copy(lparams); } } else { return(-1); } } } return(0); }
static void Main(string[] args) { const int FibonacciCalculations = 5; int groupSize = 100000 / FibonacciCalculations; int batchSize = 2000; var connectionString = "Data Source=.;Integrated Security=True;Pooling=False;Initial Catalog=ClientSearch"; // One event is used for each Fibonacci object. ManualResetEvent[] doneEvents = new ManualResetEvent[FibonacciCalculations]; DataMover[] fibArray = new DataMover[FibonacciCalculations]; Random r = new Random(); // Configure and start threads using ThreadPool. Console.WriteLine("launching {0} tasks...", FibonacciCalculations); for (int i = 0; i < FibonacciCalculations; i++) { doneEvents[i] = new ManualResetEvent(false); DataMover f = new DataMover(connectionString, i, groupSize, batchSize, doneEvents[i]); fibArray[i] = f; ThreadPool.QueueUserWorkItem(f.ThreadPoolCallback, i); } // Wait for all threads in pool to calculate. WaitHandle.WaitAll(doneEvents); Console.WriteLine("All calculations are complete."); //DataRow row = dt.NewRow(); //row.ItemArray = data; //dt.Rows.Add(row); }
public async Task FullTest() { var config = new Config { ConnectionString = "Data Source=.;Initial Catalog=TimeSeries;Integrated Security=true;", Period = 300, InfluxConfig = new InfluxConfig { ApiManagementHeaderName = "dummy", ApiManagementKey = "dummy", ApiManagementUrl = "http://localhost:8086/query", DbImsMeasurement = "autogen", DbImsRetentionPolicy = "data", DbCalcMeasurement = "writeback", DbCalcRetentionPolicy = "data", DbName = "iocdata", DbPassword = "******", DbUsername = "******", DefaultTime = "120d", FirsttimerBatchSize = 1, OldtimerBatchSize = 100, Parallelism = 32, DoAdHocResampling = true, SkipLastPoint = true } }; const string influxBaseUrl = "http://localhost:8086/"; const int numberOfTimeSeries = 3; const int numberOfPoints = 100; int firstNumberOfPointsFromEachSeries = (int)(numberOfPoints * 0.7); int secondNumberOfPointsFromEachSeries = (int)(numberOfPoints * 0.3); var queryExecutor = new InfluxQueryExecutor(influxBaseUrl, config.InfluxConfig.DbUsername, config.InfluxConfig.DbPassword); try { await queryExecutor.Query($"CREATE DATABASE {config.InfluxConfig.DbName}"); await queryExecutor.Query($"CREATE RETENTION POLICY \"{config.InfluxConfig.DbImsRetentionPolicy}\" ON \"{config.InfluxConfig.DbName}\" DURATION 1d REPLICATION 1"); var utcNow = DateTime.UtcNow; var startTime = new DateTime(utcNow.Year, utcNow.Month, utcNow.Day, 0, 0, 0); var startPoints = CreateStartpoints(numberOfTimeSeries, startTime); InsertTagMetadata(config, startPoints); var points = CreatePoints(startPoints, numberOfPoints); string firstBody = CreateBody(config, points.Values.SelectMany(v => v.Take(firstNumberOfPointsFromEachSeries)).ToList()); await queryExecutor.Write(firstBody, config.InfluxConfig.DbName, config.InfluxConfig.DbImsRetentionPolicy); await DataMover.Move(config, new Logger(TraceLevel.Error)); int firstCount = GetCount(config); // -1 because SkipLastPoint = true Assert.AreEqual((firstNumberOfPointsFromEachSeries - 1) * numberOfTimeSeries, firstCount); string secondBody = CreateBody(config, points.Values.SelectMany(v => v.Skip(firstNumberOfPointsFromEachSeries).Take(secondNumberOfPointsFromEachSeries)).ToList()); await queryExecutor.Write(secondBody, config.InfluxConfig.DbName, config.InfluxConfig.DbImsRetentionPolicy); await DataMover.Move(config, new Logger(TraceLevel.Error)); int secondCount = GetCount(config); Assert.AreEqual((numberOfPoints * numberOfTimeSeries) - numberOfTimeSeries, secondCount); } finally { await queryExecutor.Query($"DROP DATABASE {config.InfluxConfig.DbName}"); using (var conn = new SqlConnection(config.ConnectionString)) { conn.Open(); TruncateTable(conn, "[IMSTS]"); TruncateTable(conn, "[IMSTag]"); } } }