コード例 #1
0
        public async Task Setup()
        {
            await DBTestHelpers.DeleteDB();

            MRUSettingsCache.ResetCache();
            MRUListUpdateStream.Reset();
        }
コード例 #2
0
        public async Task UpdateMachineMRUWithNoChangeRemoteMRUList()
        {
            // If something happens that causes an update to a remote MRU, we should
            // not generate a change to the rest of the world.

            // Write out an MRU list to a machine, and start up everything.
            GenerateOtherMachineMRU("MACHINE2", 10);

            int count = 0;

            MRUListUpdateStream.GetMRUListStream()
            .Subscribe(_ => count++);

            await TestUtils.SpinWaitAreEqual(1, () => count);

            // Now, redo the update for machine 2, so we write the same data back.
            // Wait, and see what happens.
            var mrus = MRUSettingsCache.GetFromMachine("MACHINE2");

            MRUSettingsCache.UpdateForMachine("MACHINE2", mrus);

            await TestUtils.SpinWait(() => count != 1, 500, false);

            Assert.AreEqual(1, count);

            // Write it to a new machine
            MRUSettingsCache.UpdateForMachine("MACHINE1", mrus);
            await TestUtils.SpinWait(() => count != 1, 500, false);

            Assert.AreEqual(1, count);
        }
コード例 #3
0
        public void NewDoesNotDeleteOld()
        {
            var mrus = GenerateMRUs(5);

            MRUSettingsCache.UpdateForMachine("MACHINE1", mrus);
            MRUSettingsCache.UpdateForMachine("MACHINE2", mrus);
            var rtn = MRUSettingsCache.GetFromMachine("MACHINE1");

            Assert.AreEqual(5, rtn.Length);
        }
コード例 #4
0
        public void MergedListCommonItems()
        {
            var mrus = GenerateMRUs();

            MRUSettingsCache.UpdateForMachine("MACHINE1", mrus);
            MRUSettingsCache.UpdateForMachine("MACHINE2", mrus);
            var rtn = MRUSettingsCache.GetAllMachineMRUMeetings();

            Assert.AreEqual(10, rtn.Length);
        }
コード例 #5
0
        public void SingleListInCache()
        {
            var mrus = GenerateMRUs();

            MRUSettingsCache.UpdateForMachine("MACHINE1", mrus);
            var rtn = MRUSettingsCache.GetAllMachineMRUMeetings();

            Assert.AreEqual(10, rtn.Length);
            Assert.AreEqual(mrus[0].IDRef, rtn[0].IDRef);
        }
コード例 #6
0
        public void UpdateSpecificCache()
        {
            var mrus = GenerateMRUs(5, 0);

            MRUSettingsCache.UpdateForMachine("MACHINE1", mrus);
            mrus = GenerateMRUs(10, 100);
            MRUSettingsCache.UpdateForMachine("MACHINE1", mrus);
            var rtn = MRUSettingsCache.GetFromMachine("MACHINE1");

            Assert.AreEqual(10, rtn.Length);
            Assert.AreEqual(100, rtn[0].Id);
        }
コード例 #7
0
        public async Task MRUUpdateCreatesRemoteFile()
        {
            var dummyCache = await GetFirstMRUList();

            await LoadDB(1);

            await TestUtils.SpinWait(() => MRUSettingsCache.GetAllMachineMRUMeetings().Length == 1, 1000, throwIfTimeout : false);

            var result = MRUSettingsCache.GetAllMachineMRUMeetings();

            Assert.AreEqual(1, result.Length);
        }
コード例 #8
0
        public async Task CreationOfMachineTriggersUpdateNotification()
        {
            int counter = 0;

            MRUSettingsCache.RemoteMachineCacheUpdate
            .Subscribe(_ => counter++);

            var mrus = GenerateMRUs();

            MRUSettingsCache.UpdateForMachine("MACHINE1", mrus);

            await TestUtils.SpinWait(() => counter == 1, 1000);
        }
コード例 #9
0
        public void SetSpecificCache()
        {
            var mrus = GenerateMRUs();

            MRUSettingsCache.UpdateForMachine("MACHINE1", mrus);
            var rtn = MRUSettingsCache.GetFromMachine("MACHINE1");

            Assert.AreEqual(mrus.Length, rtn.Length);
            foreach (var dual in mrus.Zip(rtn, (m, r) => Tuple.Create(m, r)))
            {
                Assert.AreEqual(dual.Item1.Id, dual.Item2.Id);
                Assert.AreEqual(dual.Item1.IDRef, dual.Item2.IDRef);
                Assert.AreEqual(dual.Item1.LastLookedAt, dual.Item2.LastLookedAt);
                Assert.AreEqual(dual.Item1.StartTime, dual.Item2.StartTime);
                Assert.AreEqual(dual.Item1.Title, dual.Item2.Title);
            }
        }
コード例 #10
0
        public async Task MachineFileWritten()
        {
            // Write out to a local machine file.
            MRUListUpdateStream.MachineName = "ThisTestMachine";

            // Prime and get the system up and running
            var dummyCache = await GetFirstMRUList();

            // Load in 10, see if they were cached correctly.
            await LoadDB(10);

            await TestUtils.SpinWait(() => MRUSettingsCache.GetFromMachine("ThisTestMachine") != null, 1000);

            var mrus = MRUSettingsCache.GetFromMachine("ThisTestMachine");

            Assert.IsNotNull(mrus);
            Assert.AreEqual(10, mrus.Length);
        }
コード例 #11
0
        public void MergedListKeepRightOne()
        {
            var l1 = new IWalker.MRU[] {
                new IWalker.MRU {
                    Id = 10, IDRef = "hiref", Title = "this is it", StartTime = DateTime.Now, LastLookedAt = DateTime.Parse("1/20/2010")
                }
            };
            var l2 = new IWalker.MRU[] {
                new IWalker.MRU {
                    Id = 10, IDRef = "hiref", Title = "this is not it", StartTime = DateTime.Now, LastLookedAt = DateTime.Parse("1/20/2011")
                }
            };

            MRUSettingsCache.UpdateForMachine("M1", l1);
            MRUSettingsCache.UpdateForMachine("M2", l2);

            var l = MRUSettingsCache.GetAllMachineMRUMeetings();

            Assert.AreEqual(1, l.Length);
            Assert.AreEqual("this is not it", l[0].Title);
        }
コード例 #12
0
        public void GetBackSpecificCacheEmpty()
        {
            var mrus = MRUSettingsCache.GetFromMachine("MACHINE1");

            Assert.IsNull(mrus);
        }
コード例 #13
0
 public void ResetCache()
 {
     MRUSettingsCache.ResetCache();
 }
コード例 #14
0
        public void EmptyCache()
        {
            var mrus = MRUSettingsCache.GetAllMachineMRUMeetings();

            Assert.AreEqual(0, mrus.Length);
        }
コード例 #15
0
 /// <summary>
 /// Fill up another machine file
 /// </summary>
 /// <param name="machineName"></param>
 /// <param name="numberOfMRUs"></param>
 private void GenerateOtherMachineMRU(string machineName, int numberOfMRUs)
 {
     MRUSettingsCache.UpdateForMachine(machineName, GenerateMRUs().Take(numberOfMRUs).ToArray());
 }