private LeveldbTimelineStateStore InitAndStartTimelineServiceStateStoreService()
 {
     store = new LeveldbTimelineStateStore();
     store.Init(conf);
     store.Start();
     return((LeveldbTimelineStateStore)store);
 }
        public virtual void TestCheckVersion()
        {
            LeveldbTimelineStateStore store = InitAndStartTimelineServiceStateStoreService();
            // default version
            Version defaultVersion = store.GetCurrentVersion();

            NUnit.Framework.Assert.AreEqual(defaultVersion, store.LoadVersion());
            // compatible version
            Version compatibleVersion = Version.NewInstance(defaultVersion.GetMajorVersion(),
                                                            defaultVersion.GetMinorVersion() + 2);

            store.StoreVersion(compatibleVersion);
            NUnit.Framework.Assert.AreEqual(compatibleVersion, store.LoadVersion());
            store.Stop();
            // overwrite the compatible version
            store = InitAndStartTimelineServiceStateStoreService();
            NUnit.Framework.Assert.AreEqual(defaultVersion, store.LoadVersion());
            // incompatible version
            Version incompatibleVersion = Version.NewInstance(defaultVersion.GetMajorVersion(
                                                                  ) + 1, defaultVersion.GetMinorVersion());

            store.StoreVersion(incompatibleVersion);
            store.Stop();
            try
            {
                InitAndStartTimelineServiceStateStoreService();
                NUnit.Framework.Assert.Fail("Incompatible version, should expect fail here.");
            }
            catch (ServiceStateException e)
            {
                NUnit.Framework.Assert.IsTrue("Exception message mismatch", e.Message.Contains("Incompatible version for timeline state store"
                                                                                               ));
            }
        }