Example #1
0
        static void _PurgeLuaScriptOnFinalize(string script)
        {
            var first     = LuaScript.Prepare(script);
            var fromCache = LuaScript.Prepare(script);

            Assert.IsTrue(object.ReferenceEquals(first, fromCache));
            Assert.AreEqual(1, LuaScript.GetCachedScriptCount());
        }
Example #2
0
        private static void PurgeLuaScriptOnFinalizeImpl(string script)
        {
            var first     = LuaScript.Prepare(script);
            var fromCache = LuaScript.Prepare(script);

            Assert.True(ReferenceEquals(first, fromCache));
            Assert.Equal(1, LuaScript.GetCachedScriptCount());
        }
Example #3
0
        public void PurgeLuaScriptOnFinalize()
        {
            const string Script = "redis.call('set', @PurgeLuaScriptOnFinalizeKey, @PurgeLuaScriptOnFinalizeValue)";

            LuaScript.PurgeCache();
            Assert.Equal(0, LuaScript.GetCachedScriptCount());

            // This has to be a separate method to guarantee that the created LuaScript objects go out of scope,
            //   and are thus available to be GC'd
            PurgeLuaScriptOnFinalizeImpl(Script);
            CollectGarbage();

            Assert.Equal(0, LuaScript.GetCachedScriptCount());

            LuaScript.Prepare(Script);
            Assert.Equal(1, LuaScript.GetCachedScriptCount());
        }
Example #4
0
        public void PurgeLuaScriptOnFinalize()
        {
            const string Script = "redis.call('set', @PurgeLuaScriptOnFinalizeKey, @PurgeLuaScriptOnFinalizeValue)";

            LuaScript.PurgeCache();
            Assert.AreEqual(0, LuaScript.GetCachedScriptCount());

            // This has to be a separate method to guarantee that the created LuaScript objects go out of scope,
            //   and are thus available to be GC'd
            _PurgeLuaScriptOnFinalize(Script);

            GC.Collect(2, GCCollectionMode.Forced, blocking: true);
            GC.WaitForPendingFinalizers();

            Assert.AreEqual(0, LuaScript.GetCachedScriptCount());

            var shouldBeNew = LuaScript.Prepare(Script);

            Assert.AreEqual(1, LuaScript.GetCachedScriptCount());
        }