Пример #1
0
        public void initial()
        {
            var myStorageEngine = new CassandraIndexEngine();                         //CassandraIndexEngine();//CassandraEngine();

            myStorageEngine.Init("host =192.168.137.153 & database = jdbc_unittest"); //127.0.0.1
            myCoreApi = CoreApi.GetInstance();
            myCoreApi.CoreService.Init("mongodb://127.0.0.1:27017", "JDBC-test", "Experiment", (IStorageEngine)myStorageEngine);
            myCoreApi.CoreService.RegisterClassMap <FixedIntervalWaveSignal>();
            var fixedWaveDataTypePlugin = new FixedWaveDataTypePlugin(myCoreApi.CoreService);

            myCoreApi.AddDataTypePlugin(fixedWaveDataTypePlugin);
        }
Пример #2
0
        public static void BasicSetup(TestContext context)
        {
            //实例化StorageEngine,初始化
            var myStorageEngine = new CassandraIndexEngine();//CassandraIndexEngine();//CassandraEngine();

            myStorageEngine.Init("host =127.0.0.1 & database = jdbc_unittest");
            //实例化CoreService和CoreApi
            myCoreApi = CoreApi.GetInstance();
            myCoreApi.CoreService.Init("mongodb://127.0.0.1:27017", "JDBC-test", "Experiment", (IStorageEngine)myStorageEngine);
            //实例化DataTypePlugin,注入StorageEngine、CoreService,将其添加到CoreApi
            var fixedWaveDataTypePlugin = new FixedWaveDataTypePlugin(myCoreApi.CoreService);

            myCoreApi.AddDataTypePlugin(fixedWaveDataTypePlugin);
        }
Пример #3
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();
        }
Пример #4
0
        public void AppendDataTest()
        {
            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();
            //act
            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().Wait();
            var readBack = ((List <int>)waveSignal.GetDataAsync("", "array").Result).ToArray();

            //var readbackSig = (IntFixedIntervalWaveSignal)myCoreApi.FindNodeByIdAsync(waveSignal.Id).Result;
            var readbackSig = (FixedIntervalWaveSignal)myCoreApi.FindNodeByIdAsync(waveSignal.Id).Result;

            int[] expectedData = { 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(expectedData, readBack);

            Assert.AreEqual(0.5, readbackSig.SampleInterval);
            Assert.AreEqual(-2, readbackSig.StartTime);

            Assert.AreEqual(12.5, readbackSig.EndTime);
            Assert.AreEqual("s", readbackSig.Unit);
        }
Пример #5
0
        public void Setup()
        {
            var fixedWaveDataTypePlugin = new FixedWaveDataTypePlugin(myCoreApi.CoreService);

            myCoreApi.AddDataTypePlugin(fixedWaveDataTypePlugin);
        }
Пример #6
0
        public async Task ExpressionTest()
        {
            //arange
            JDBCEntity exp1 = new Experiment("exp1");

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

            var fixedWaveDataTypePlugin = new FixedWaveDataTypePlugin(myCoreApi.CoreService);
            var expressionPlugin        = new ExpressionPlugin(myCoreApi.CoreService);

            myCoreApi.AddDataTypePlugin(fixedWaveDataTypePlugin);
            myCoreApi.AddDataTypePlugin(expressionPlugin);

            var waveSignal1 = (FixedIntervalWaveSignal)myCoreApi.CreateSignal("FixedWave-double", "ws1", @"StartTime=-2&SampleInterval=0.5");
            var d           = myCoreApi.AddOneToExperimentAsync(exp1.Id, waveSignal1).Result;

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

            var waveSignal2 = (FixedIntervalWaveSignal)myCoreApi.CreateSignal("FixedWave-double", "ws2", @"StartTime=-2&SampleInterval=0.5");
            var c           = myCoreApi.AddOneToExperimentAsync(exp1.Id, waveSignal2).Result;

            waveSignal2.PutDataAsync("", data).Wait();
            waveSignal2.PutDataAsync("", data).Wait();
            waveSignal2.PutDataAsync("", data).Wait();
            await waveSignal2.DisposeAsync();

            string code        = " return  JDBC.Signal(\"/exp1/ws1\")+ JDBC.Signal(\"/exp1/ws2\");";
            var    waveSignal3 = (FixedIntervalWaveSignal)myCoreApi.CreateSignal("Expression", "ws3", "");

            waveSignal3.AddExtraInformation("expression", code);
            myCoreApi.AddOneToExperimentAsync(exp1.Id, waveSignal3).Wait();

            var readBack1 = ((List <double>)waveSignal3.GetDataAsync(@"start=-0.6&end=3.7&decimation=3", "array").Result).ToArray();

            double[] expectedData1 = { 6, 12, 18, 4 };//{ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 }; //int[] expectedData = { 3, 6, 9, 2 };
            CollectionAssert.AreEqual(expectedData1, readBack1);

            string code2 = @"  var a = JDBC.Signal(""/exp1/ws1"") + 2;
            var b = JDBC.Signal(""/exp1/ws2"") + 3;
            var c = a + b; 
            return c;";

            waveSignal3.ModifyExtraInformation("expression", code2);
            myCoreApi.CoreService.SaveAsync(waveSignal3).Wait();
            var readBack2 = ((List <double>)waveSignal3.GetDataAsync(@"start=-0.6&end=3.7&decimation=3", "array").Result).ToArray();

            double[] expectedData2 = { 11, 17, 23, 9 };
            CollectionAssert.AreEqual(expectedData2, readBack2);

            string code3 = @"  var a = JDBC.Signal(""/exp1/ws1"") * 2;
            var b = JDBC.Signal(""/exp1/ws2"") + 3;
            var c = a + b; 
            return c;";

            waveSignal3.ModifyExtraInformation("expression", code3);
            myCoreApi.CoreService.SaveAsync(waveSignal3).Wait();
            var readBack3 = ((List <double>)waveSignal3.GetDataAsync(@"start=-0.6&end=3.7&decimation=3", "array").Result).ToArray();

            double[] expectedData3 = { 12, 21, 30, 9 };
            CollectionAssert.AreEqual(expectedData3, readBack3);

            string code4 = @"  var a = JDBC.Signal(""/exp1/ws1"") * 2;  //int[] expectedData = { 3, 6, 9, 2 };
            var b = JDBC.Signal(""/exp1/ws2"") + Math.Sin(Math.PI/2);
            var c = a + b;
            return c;";

            waveSignal3.ModifyExtraInformation("expression", code4);
            myCoreApi.CoreService.SaveAsync(waveSignal3).Wait();
            var readBack4 = ((List <double>)waveSignal3.GetDataAsync(@"start=-0.6&end=3.7&decimation=3", "array").Result).ToArray();

            double[] expectedData4 = { 10, 19, 28, 7 };
            CollectionAssert.AreEqual(expectedData4, readBack4);

            string code5 = @"  var a = JDBC.Signal(""/exp1/ws1"") * 2;  //int[] expectedData = { 3, 6, 9, 2 };
            double[] b={-3,-6,-9,-2};
            var c = a + b;
            return c;";

            waveSignal3.ModifyExtraInformation("expression", code5);
            myCoreApi.CoreService.SaveAsync(waveSignal3).Wait();
            var readBack5 = ((List <double>)waveSignal3.GetDataAsync(@"start=-0.6&end=3.7&decimation=3", "array").Result).ToArray();

            double[] expectedData5 = { 3, 6, 9, 2 };
            CollectionAssert.AreEqual(expectedData5, readBack5);

            string code6       = " return  JDBC.Signal(\"/exp1/ws1\")+ JDBC.Signal(\"/exp1/ws2\");";
            var    waveSignal4 = (FixedIntervalWaveSignal)myCoreApi.CreateSignal("Expression", "ws4", "");///exp1/ws1

            waveSignal4.AddExtraInformation("expression", code6);
            myCoreApi.AddOneToExperimentAsync(exp1.Id, waveSignal4).Wait();

            var readBack6 = ((List <double>)waveSignal4.GetDataAsync(@"start=-0.6&end=3.7&decimation=3", "array").Result).ToArray();

            double[] expectedData6 = { 6, 12, 18, 4 };//{ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 }; //int[] expectedData = { 3, 6, 9, 2 };
            CollectionAssert.AreEqual(expectedData6, readBack6);
        }
Пример #7
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);
        }