Esempio n. 1
0
        public void DatasetAutoSaveAsync()
        {
            var datasetPath = Path.Join(StorePath, "autosave.pds");

            GenerateTestStore("base1", StorePath);
            GenerateTestStore("base2", StorePath);
            var dataset = new Dataset("autosave", datasetPath, autoSave: true);

            dataset.AddSessionFromPsiStore("base1", StorePath, "s1");
            dataset.AddSessionFromPsiStore("base2", StorePath, "s2");
            Assert.AreEqual(1, dataset.Sessions[0].Partitions.Count());
            Assert.AreEqual(1, dataset.Sessions[1].Partitions.Count());
            Task.Run(async() =>
            {
                await dataset.CreateDerivedPartitionAsync(
                    (_, importer, exporter) =>
                {
                    importer.OpenStream <int>("Root").Select(x => x * x).Write("RootSquared", exporter);
                },
                    "derived",
                    true,
                    "derived-store");
            }).Wait();  // wait for the async function to finish

            // open the dataset file as a different dataset and validate information
            var sameDataset = Dataset.Load(datasetPath);

            Assert.AreEqual(2, sameDataset.Sessions.Count);
            Assert.AreEqual(2, sameDataset.Sessions[0].Partitions.Count());
            Assert.AreEqual(2, sameDataset.Sessions[1].Partitions.Count());
            Assert.AreEqual("derived", sameDataset.Sessions[1].Partitions[1].Name);
            Assert.AreEqual("derived-store", sameDataset.Sessions[1].Partitions[1].StoreName);
        }
Esempio n. 2
0
        public void DatasetAddSession()
        {
            var dataset = new Dataset();

            Assert.AreEqual(0, dataset.Sessions.Count);
            Assert.IsTrue(dataset.OriginatingTimeInterval.IsEmpty);

            // generate a test store
            GenerateTestStore("PsiStore", StorePath);

            // add a session
            var session0 = dataset.AddSessionFromPsiStore("PsiStore", StorePath, "Session_0");

            Assert.AreEqual(1, dataset.Sessions.Count);
            Assert.AreEqual("Session_0", dataset.Sessions[0].Name);

            // verify originating time interval
            Assert.AreEqual(session0.OriginatingTimeInterval.Left, dataset.OriginatingTimeInterval.Left);
            Assert.AreEqual(session0.OriginatingTimeInterval.Right, dataset.OriginatingTimeInterval.Right);

            // generate a new store with a different originating time interval than the first
            GenerateTestStore("NewStore", StorePath);

            // add a second session with a different name
            var session1 = dataset.AddSessionFromPsiStore("NewStore", StorePath, "Session_1");

            Assert.AreEqual(2, dataset.Sessions.Count);
            Assert.AreEqual("Session_0", dataset.Sessions[0].Name);
            Assert.AreEqual("Session_1", dataset.Sessions[1].Name);

            // verify new originating time interval
            Assert.AreEqual(session0.OriginatingTimeInterval.Left, dataset.OriginatingTimeInterval.Left);
            Assert.AreEqual(session1.OriginatingTimeInterval.Right, dataset.OriginatingTimeInterval.Right);
        }
Esempio n. 3
0
        public void DatasetAppend()
        {
            var dataset = new Dataset();

            Assert.AreEqual(0, dataset.Sessions.Count);

            // generate a test store
            GenerateTestStore("PsiStore", StorePath);

            // add a session
            var session0 = dataset.AddSessionFromPsiStore("PsiStore", StorePath, "Session_0");

            Assert.AreEqual(1, dataset.Sessions.Count);
            Assert.AreEqual("Session_0", dataset.Sessions[0].Name);

            // verify originating time interval
            Assert.AreEqual(session0.OriginatingTimeInterval.Left, dataset.OriginatingTimeInterval.Left);
            Assert.AreEqual(session0.OriginatingTimeInterval.Right, dataset.OriginatingTimeInterval.Right);

            // generate a new store with a different originating time interval than the first
            GenerateTestStore("NewStore", StorePath);

            // create a second dataset from the new store and append it to the first
            var dataset1 = new Dataset();
            var session1 = dataset1.AddSessionFromPsiStore("NewStore", StorePath, "Session_1");

            dataset.Append(dataset1);
            Assert.AreEqual(2, dataset.Sessions.Count);
            Assert.AreEqual("Session_0", dataset.Sessions[0].Name);
            Assert.AreEqual("Session_1", dataset.Sessions[1].Name);

            // verify new originating time interval
            Assert.AreEqual(session0.OriginatingTimeInterval.Left, dataset.OriginatingTimeInterval.Left);
            Assert.AreEqual(session1.OriginatingTimeInterval.Right, dataset.OriginatingTimeInterval.Right);
        }
Esempio n. 4
0
        public void DatasetRelativePaths()
        {
            var dataset = new Dataset();

            // generate a test store
            GenerateTestStore("PsiStore", StorePath);

            // add a session and assume it loaded correctly if it has a partition containing a stream
            dataset.AddSessionFromPsiStore("PsiStore", StorePath, "Session_0");
            Assert.IsTrue(dataset.Sessions[0].Partitions[0].AvailableStreams.Count() > 0);

            // save dataset with relative store paths
            string datasetFile = Path.Combine(StorePath, "dataset.pds");

            dataset.Save(datasetFile, true);

            // create Temp sub-folder
            var tempFolder = Path.Combine(StorePath, "Temp");

            Directory.CreateDirectory(tempFolder);

            // move both the dataset file and data stores into the sub-folder
            Directory.Move(Path.Combine(StorePath, "PsiStore.0000"), Path.Combine(tempFolder, "PsiStore.0000"));
            string newDatasetFile = Path.Combine(tempFolder, "dataset.pds");

            File.Move(datasetFile, newDatasetFile);

            // reload the saved dataset and verify that store paths are still valid
            var newDataset = Dataset.Load(newDatasetFile);

            Assert.IsTrue(newDataset.Sessions[0].Partitions[0].AvailableStreams.Count() > 0);
        }
Esempio n. 5
0
        public void DatasetChangeEvent()
        {
            var sessionEventCalled = false;
            var datasetEventCalled = false;
            var dataset            = new Dataset("autosave");

            GenerateTestStore("base1", StorePath);
            var session1 = dataset.AddSessionFromPsiStore("base1", StorePath, "session1");

            dataset.DatasetChanged += (s, e) =>
            {
                Assert.AreEqual(e, EventArgs.Empty);
                datasetEventCalled = true;
            };
            session1.SessionChanged += (s, e) =>
            {
                Assert.AreEqual(e, EventArgs.Empty);
                sessionEventCalled = true;
            };

            // the following change should cause both events to be called.
            session1.Name = "new name";

            // validate if the events were called.
            Assert.IsTrue(datasetEventCalled);
            Assert.IsTrue(sessionEventCalled);
        }
Esempio n. 6
0
        public void DatasetAddSessionDuplicateName()
        {
            var dataset = new Dataset();
            Assert.AreEqual(0, dataset.Sessions.Count);

            // generate a test store
            GenerateTestStore("PsiStore", StorePath);

            // add a session
            dataset.AddSessionFromPsiStore("PsiStore", StorePath, "Session_0");
            Assert.AreEqual(1, dataset.Sessions.Count);
            Assert.AreEqual("Session_0", dataset.Sessions[0].Name);

            // generate a new store with a different originating time interval than the first
            GenerateTestStore("NewStore", StorePath);

            // add a second session with a duplicate name
            dataset.AddSessionFromPsiStore("NewStore", StorePath, "Session_0"); // should throw
        }
Esempio n. 7
0
        public void DatasetAutoSave()
        {
            var datasetPath = Path.Join(StorePath, "autosave.pds");

            var dataset = new Dataset("autosave", datasetPath, autoSave: true);

            dataset.Name = "autosave-saved";
            GenerateTestStore("store1", StorePath);

            var session1 = dataset.CreateSession("test-session1");
            var session2 = dataset.AddSessionFromPsiStore("store1", StorePath);

            session1.Name = "no-longer-test-session1";

            // open the dataset file as a different dataset and validate information
            var sameDataset = Dataset.Load(datasetPath);

            Assert.AreEqual("autosave-saved", sameDataset.Name);
            Assert.AreEqual(2, sameDataset.Sessions.Count);
            Assert.AreEqual("no-longer-test-session1", sameDataset.Sessions[0].Name);
            Assert.AreEqual(session2.Name, sameDataset.Sessions[1].Name);

            // remove a session and verify changes are saved.
            dataset.RemoveSession(session1);
            sameDataset = Dataset.Load(datasetPath);
            Assert.AreEqual(1, sameDataset.Sessions.Count);
            Assert.AreEqual(session2.Name, sameDataset.Sessions[0].Name);
            Assert.AreEqual(1, sameDataset.Sessions[0].Partitions.Count);
            Assert.AreEqual(session2.OriginatingTimeInterval.Left, sameDataset.Sessions[0].OriginatingTimeInterval.Left);
            Assert.AreEqual(session2.OriginatingTimeInterval.Right, sameDataset.Sessions[0].OriginatingTimeInterval.Right);

            // now we edit the session and we want to make sure the changes stick!
            GenerateTestStore("store3", StorePath);
            session2.AddPsiStorePartition("store3", StorePath);
            sameDataset = Dataset.Load(datasetPath);
            Assert.AreEqual(session2.Name, sameDataset.Sessions[0].Name);
            Assert.AreEqual(2, sameDataset.Sessions[0].Partitions.Count);
            Assert.AreEqual("store3", sameDataset.Sessions[0].Partitions[1].Name);
        }
Esempio n. 8
0
        public void DatasetAppendDuplicateName()
        {
            var dataset = new Dataset();

            Assert.AreEqual(0, dataset.Sessions.Count);

            // generate a test store
            GenerateTestStore("PsiStore", StorePath);

            // add a session
            var session0 = dataset.AddSessionFromPsiStore("PsiStore", StorePath, "Session_0");

            Assert.AreEqual(1, dataset.Sessions.Count);
            Assert.AreEqual("Session_0", dataset.Sessions[0].Name);

            // generate a new store with a different originating time interval than the first
            GenerateTestStore("NewStore", StorePath);

            // create a second dataset with a duplicate session name and append it to the first
            var dataset1 = new Dataset();
            var session1 = dataset1.AddSessionFromPsiStore("NewStore", StorePath, "Session_0");

            dataset.Append(dataset1); // should throw
        }