Пример #1
0
        /// <summary>
        /// config the business logic
        /// </summary>
        public static void ConfigBusiness()
        {
            //从config文件加载数据库连接字符串
            mongoHost       = ConfigurationManager.AppSettings["MongoHost"];
            mongoDatabase   = ConfigurationManager.AppSettings["MongoDatabase"];
            mongoCollection = ConfigurationManager.AppSettings["MongoCollection"];
            cassandraInit   = ConfigurationManager.ConnectionStrings["CassandraDB"].ConnectionString;
            //初始化StorageEngine
            var cassandraStorageEngine = new CassandraIndexEngine();//CassandraEngine

            cassandraStorageEngine.Init(cassandraInit);
            //初始化CoreApi
            MyCoreApi = CoreApi.GetInstance();
            MyCoreApi.CoreService.Init(mongoHost, mongoDatabase, mongoCollection, (IStorageEngine)cassandraStorageEngine);
            //添加QueryPlugIn
            var pathQueryPlugIn = new PathQueryPlugIn(MyCoreApi.CoreService);

            MyCoreApi.AddQueryPlugin(pathQueryPlugIn);
            var idQueryPlugin = new IDQueryPlugIn(MyCoreApi.CoreService);

            MyCoreApi.AddQueryPlugin(idQueryPlugin);

            //添加DataTypePlugin
            var fixedWaveDataTypePlugin = new FixedWaveDataTypePlugin(MyCoreApi.CoreService);

            MyCoreApi.AddDataTypePlugin(fixedWaveDataTypePlugin);

            //添加ExpressionPlugin
            var expressionPlugin = new ExpressionPlugin(MyCoreApi.CoreService);

            MyCoreApi.AddDataTypePlugin(expressionPlugin);

            //将继承类在MongoDB中进行注册
            MyCoreApi.CoreService.RegisterClassMap <FixedIntervalWaveSignal>();
            //MyCoreApi.MyCoreService.RegisterClassMap<IntFixedIntervalWaveSignal>();
            //MyCoreApi.MyCoreService.RegisterClassMap<DoubleFixedIntervalWaveSignal>();
            //创建DTO映射
            ConfigDtoMapping();

            SetExpressionRoot();
        }
Пример #2
0
        public void PathQueryTest()
        {
            PathQueryPlugIn pathQueryPlugIn = new PathQueryPlugIn(myCoreApi.MyCoreService);

            myCoreApi.AddQueryPlugin(pathQueryPlugIn);
            IQueryPlugIn             queryPlugin = null;
            IEnumerable <JDBCEntity> result      = null;
            Uri uri = null;

            //0
            uri = new Uri("jdbc:///pathx");
            try
            {
                queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            }
            catch (Exception e)
            {
                Assert.AreEqual(ErrorMessages.NotValidURI, e.Message);
            }
            //1
            uri         = new Uri("jdbc:///path/");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(0, result.Count());
            //2
            uri         = new Uri("jdbc:///path/?name=*");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(2, result.Count());
            //3
            uri         = new Uri("jdbc:///path/?name=exp1");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(exp1.Id, result.FirstOrDefault().Id);
            //4
            uri         = new Uri("jdbc:///path/?name=*&recursive=true");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(8, result.Count());
            //5
            uri         = new Uri("jdbc:///path/?name=exp2-1&recursive=true");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(0, result.Count());
            //6
            uri         = new Uri("jdbc:///path/?name=exp1-2&recursive=true");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(2, result.Count());
            //7
            uri         = new Uri("jdbc:///path/exp1?name=*");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(3, result.Count());
            //8
            uri         = new Uri("jdbc:///path/exp1?name=*&recursive=true");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(4, result.Count());
            //9
            uri         = new Uri("jdbc:///path/exp1?name=sig1");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(sig11.Id, result.FirstOrDefault().Id);
            //10
            uri         = new Uri("jdbc:///path/exp1?name=sig1&recursive=true");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(2, result.Count());
        }
Пример #3
0
        public void ReadDataTest()
        {
            //arange
            JDBCEntity exp1  = new Experiment("exp1");
            JDBCEntity sig11 = new Signal("sig1-1");

            myCoreApi.AddOneToExperimentAsync(Guid.Empty, exp1).Wait();
            myCoreApi.AddOneToExperimentAsync(exp1.Id, sig11).Wait();

            var fixedWaveDataTypePlugin = new FixedWaveDataTypePlugin(myCoreApi.CoreService);

            myCoreApi.AddDataTypePlugin(fixedWaveDataTypePlugin);

            //var waveSignal = (IntFixedIntervalWaveSignal)myCoreApi.CreateSingal("FixedWave-int", "ws1", @"StartTime=-2&SampleInterval=0.5");
            var waveSignal = (FixedIntervalWaveSignal)myCoreApi.CreateSignal("FixedWave-int", "ws1", @"StartTime=-2&SampleInterval=0.5");

            myCoreApi.AddOneToExperimentAsync(exp1.Id, waveSignal).Wait();

            int[] data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            waveSignal.PutDataAsync("", data).Wait();
            waveSignal.PutDataAsync("", data).Wait();
            waveSignal.PutDataAsync("", data).Wait();
            waveSignal.DisposeAsync();

            //act&assert
            //plugin
            IQueryPlugIn pathQueryPlugIn = new PathQueryPlugIn(myCoreApi.CoreService);

            myCoreApi.AddQueryPlugin(pathQueryPlugIn);
            var readBackData = ((List <int>)myCoreApi.GetDataByUriAsync(new Uri("jdbc:///path/exp1?name=ws1#start=-0.6&end=3.7&decimation=3"), "array").Result).ToArray();

            int[] expectedData = { 3, 6, 9, 2 };
            CollectionAssert.AreEqual(expectedData, readBackData);

            //1
            var readBack1 = ((List <int>)waveSignal.GetDataAsync("", "array").Result).ToArray();

            int[] expectedData1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            CollectionAssert.AreEqual(expectedData1, readBack1);

            //2
            var readBack2 = ((List <int>)waveSignal.GetDataAsync(@"start=-0.5&end=3.5", "array").Result).ToArray();

            int[] expectedData2 = { 3, 4, 5, 6, 7, 8, 9, 0, 1 };
            CollectionAssert.AreEqual(expectedData2, readBack2);

            //3
            var readBack3 = ((List <int>)waveSignal.GetDataAsync(@"start=-0.6&end=3.7", "array").Result).ToArray();

            int[] expectedData3 = { 3, 4, 5, 6, 7, 8, 9, 0, 1, 2 };
            CollectionAssert.AreEqual(expectedData3, readBack3);

            //4
            var readBack4 = ((List <int>)waveSignal.GetDataAsync(@"start=-0.6&end=3.7&decimation=3", "array").Result).ToArray();

            int[] expectedData4 = { 3, 6, 9, 2 };
            CollectionAssert.AreEqual(expectedData4, readBack4);

            //5
            var readBack5 = (FixedIntervalWaveComplex <int>)waveSignal.GetDataAsync(@"start=-0.6&end=4.6&decimation=3", "complex").Result;

            int[] expectedData5 = { 3, 6, 9, 2 };
            Assert.AreEqual(expectedData5.Length, readBack5.Count);
            CollectionAssert.AreEqual(expectedData5, readBack5.Data);
            Assert.AreEqual(-0.5, readBack5.Start);
            Assert.AreEqual(4, readBack5.End);
            Assert.AreEqual(0.5 * 3, readBack5.DecimatedSampleInterval);
            Assert.AreEqual(3, readBack5.StartIndex);

            //5
            var readBack6 = (FixedIntervalWaveComplex <int>)waveSignal.GetDataAsync(@"start=-0.6&end=3.7&count=3", "complex").Result;

            int[] expectedData6 = { 3, 6, 9, 2 };
            CollectionAssert.AreEqual(expectedData6, readBack6.Data);
            Assert.AreEqual(-0.5, readBack6.Start);
            Assert.AreEqual(4, readBack6.End);
            Assert.AreEqual(0.5 * 3, readBack6.DecimatedSampleInterval);
            Assert.AreEqual(4, readBack6.Count);

            //7
            var readBack7 = (FixedIntervalWaveComplex <int>)waveSignal.GetDataAsync(@"start=-0.6&end=3.7&count=4", "complex").Result;

            int[] dexpecteData2 = { 3, 5, 7, 9, 1 };
            CollectionAssert.AreEqual(dexpecteData2, readBack7.Data);
            Assert.AreEqual(-0.5, readBack7.Start);
            Assert.AreEqual(3.5, readBack7.End);
            Assert.AreEqual(1, readBack7.DecimatedSampleInterval);
            Assert.AreEqual(5, readBack7.Count);
        }
Пример #4
0
        public void PathQueryTest()
        {
            JDBCEntity exp1   = new Experiment("exp1");
            JDBCEntity sig11  = new Signal("sig1");
            JDBCEntity exp11  = new Experiment("exp1-1");
            JDBCEntity exp12  = new Experiment("exp1-2");
            JDBCEntity sig121 = new Signal("sig1");
            JDBCEntity exp2   = new Experiment("exp2");
            JDBCEntity exp21  = new Experiment("exp1-2");
            JDBCEntity sig21  = new Signal("sig2-1");

            myCoreApi.AddOneToExperimentAsync(Guid.Empty, exp1).Wait();
            myCoreApi.AddOneToExperimentAsync(exp1.Id, sig11).Wait();
            myCoreApi.AddOneToExperimentAsync(exp1.Id, exp11).Wait();
            myCoreApi.AddOneToExperimentAsync(exp1.Id, exp12).Wait();
            myCoreApi.AddOneToExperimentAsync(exp12.Id, sig121).Wait();

            myCoreApi.AddOneToExperimentAsync(Guid.Empty, exp2).Wait();
            myCoreApi.AddOneToExperimentAsync(exp2.Id, exp21).Wait();
            myCoreApi.AddOneToExperimentAsync(exp2.Id, sig21).Wait();

            // exp1
            // ===sig1
            // ===exp1-1
            // ===exp1-2
            // ======sig1-2-1
            // exp2
            // ===exp2-1
            // ===sig2-1

            PathQueryPlugIn pathQueryPlugIn = new PathQueryPlugIn(myCoreApi.CoreService);

            myCoreApi.AddQueryPlugin(pathQueryPlugIn);
            IQueryPlugIn             queryPlugin = null;
            IEnumerable <JDBCEntity> result      = null;
            Uri uri = null;

            //0
            uri = new Uri("jdbc:///pathx");
            try
            {
                queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            }
            catch (Exception e)
            {
                Assert.AreEqual(ErrorMessages.NotValidURIError, e.Message);
            }
            //1
            uri         = new Uri("jdbc:///path/");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(0, result.Count());
            //2
            uri         = new Uri("jdbc:///path/?name=*");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(2, result.Count());
            //3
            uri         = new Uri("jdbc:///path/?name=exp1");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(exp1.Id, result.FirstOrDefault().Id);
            //4
            uri         = new Uri("jdbc:///path/?name=*&recursive=true");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(8, result.Count());
            //5
            uri         = new Uri("jdbc:///path/?name=exp2-1&recursive=true");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(0, result.Count());
            //6
            uri         = new Uri("jdbc:///path/?name=exp1-2&recursive=true");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(2, result.Count());
            //7
            uri         = new Uri("jdbc:///path/exp1?name=*");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(3, result.Count());
            //8
            uri         = new Uri("jdbc:///path/exp1?name=*&recursive=true");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(4, result.Count());
            //9
            uri         = new Uri("jdbc:///path/exp1?name=sig1");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(sig11.Id, result.FirstOrDefault().Id);
            //10
            uri         = new Uri("jdbc:///path/exp1?name=sig1&recursive=true");
            queryPlugin = myCoreApi.GetBestQueryPlugin(uri);
            Assert.AreEqual(pathQueryPlugIn, queryPlugin);
            result = myCoreApi.FindNodeByUriAsync(uri).Result;
            Assert.AreEqual(2, result.Count());
        }