/// <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(); }
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()); }
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); }
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()); }