Example #1
0
        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);
        }
Example #2
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);
        }
Example #3
0
        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]");
                }
            }
        }