public void TestSnapshotTaker()
        {
            // create some logs...
            Add(30);
            _engine.HandsOffOutputLog();
            Add(20);

            TimeSpan      period = TimeSpan.FromSeconds(3);
            SnapshotTaker taker  = new SnapshotTaker(_engine, period);

            // Let's wait for a snapshot to be taken
            Thread.Sleep(TimeSpan.FromSeconds(5));
            AssertEquals(1, _engine.PrevalenceBase.GetFiles("*.snapshot").Length);

            // more log files...
            Add(20);

            // a second snapshot...
            Thread.Sleep(TimeSpan.FromSeconds(2));

            // ok, we're done.
            taker.Dispose();

            // Let's make sure no more snapshots will be
            // taken...
            Thread.Sleep(period + TimeSpan.FromSeconds(1));

            AssertEquals(2, _engine.PrevalenceBase.GetFiles("*.snapshot").Length);

            // sanity check
            CrashRecover();
            AssertTotal(70);
        }
        public void TestCleanUpAllFilesPolicy()
        {
            // some log files...
            Add(20);                // 1st log file
            CrashRecover();
            Add(30);                // 2nd log file
            _engine.TakeSnapshot(); // 1st snapshot
            Add(10);                // 3rd log file
            _engine.TakeSnapshot(); // 2nd snapshot
            Add(20);                // 4rd log file

            FileInfo[] files = CleanUpAllFilesPolicy.Default.SelectFiles(_engine);

            AssertEquals(4, files.Length);
            AssertEquals(FormatCommandLogName(1), files[0].Name);
            AssertEquals(FormatCommandLogName(2), files[1].Name);
            AssertEquals(FormatSnapshotName(2), files[2].Name);
            AssertEquals(FormatCommandLogName(3), files[3].Name);

            SnapshotTaker taker = new SnapshotTaker(_engine, TimeSpan.FromMilliseconds(200), CleanUpAllFilesPolicy.Default);

            Thread.Sleep(300);
            taker.Dispose();

            // sanity check
            CrashRecover();
            AssertTotal(80);
        }
        public void TestCleanUpOldFilesPolicy()
        {
            // some log files...
            Add(20);                // 1st log file - 0001.commandlog
            CrashRecover();
            Add(30);                // 2nd log file - 0002.commandlog
            _engine.TakeSnapshot(); // 1st snapshot - 0002.snapshot
            Thread.Sleep(TimeSpan.FromMilliseconds(2500));
            Add(10);                // 3rd log file - 0003.commandlog

            // remove files older than 2 seconds...
            ICleanUpPolicy policy = new OldFilesCleanUpPolicy(TimeSpan.FromSeconds(2));
            SnapshotTaker  taker  = new SnapshotTaker(_engine, TimeSpan.FromMilliseconds(250), policy);

            Thread.Sleep(TimeSpan.FromMilliseconds(400));
            // 2nd snasphot taken - 0003.snapshot
            taker.Dispose();

            FileInfo[] files = _engine.PrevalenceBase.GetFiles("*.*");
            Array.Sort(files, FileNameComparer.Default);

            AssertEquals(2, files.Length);
            AssertEquals("3rd command log", FormatCommandLogName(3), files[0].Name);
            AssertEquals("2nd snapshot", FormatSnapshotName(3), files[1].Name);

            // sanity check
            CrashRecover();
            AssertTotal(60);
        }
        private void CreateSnapshotTaker(PrevalenceEngine engine, float snapshotPeriod)
        {
            TimeSpan       period = TimeSpan.FromHours(snapshotPeriod);
            ICleanUpPolicy policy = (ICleanUpPolicy)Kernel[PrevalenceFacility.CleanupPolicyComponentPropertyKey];

            SnapshotTaker taker = new SnapshotTaker(engine, period, policy);

            Kernel.AddComponentInstance(PrevalenceFacility.SnapShotTakerComponentPropertyKey, taker);
        }
Exemplo n.º 5
0
 private void SetupEngine()
 {
     engine = PrevalenceActivator.CreateTransparentEngine(typeof(CacheSystem), dataDir);
     system = engine.PrevalentSystem as CacheSystem;
     taker  = new SnapshotTaker(engine, TimeSpan.FromMinutes(5), CleanUpAllFilesPolicy.Default);
 }