Exemplo n.º 1
0
    def testMulti(self):
        assert_pformat_equal(len(LocalSyncCache.CACHES), 0)
        c1 = LocalSyncCache(id="test1")
        assert_pformat_equal(len(LocalSyncCache.CACHES), 1)
        c2 = LocalSyncCache(id="test1", unique_ids=False)
        assert_pformat_equal(len(LocalSyncCache.CACHES), 2)
        c1["c1"] = "foo"
        c2["c2"] = "bar"
        assert_pformat_equal(c1, {"c1": "foo"})
        assert_pformat_equal(c2, {"c2": "bar"})

        c1.check_state()
        c2.check_state()

        assert_pformat_equal(c1, {"c1": "foo"})
        assert_pformat_equal(c2, {"c2": "bar"})

        c1.clear()
        assert_pformat_equal(c1, {})

        # In a "new request" all the same caches should be cleared
        c2.check_state()
        assert_pformat_equal(c2, {})

        cache_information = LocalSyncCache.get_cache_information()
        assert_pformat_equal(len(cache_information), 2)
Exemplo n.º 2
0
    def testMulti(self):
        self.assertEqual(len(LocalSyncCache.CACHES), 0)
        c1 = LocalSyncCache(id="test1")
        self.assertEqual(len(LocalSyncCache.CACHES), 1)
        c2 = LocalSyncCache(id="test1", unique_ids=False)
        self.assertEqual(len(LocalSyncCache.CACHES), 2)
        c1["c1"] = "foo"
        c2["c2"] = "bar"
        self.assertEqual(c1, {'c1': 'foo'})
        self.assertEqual(c2, {'c2': 'bar'})

        c1.check_state()
        c2.check_state()

        self.assertEqual(c1, {'c1': 'foo'})
        self.assertEqual(c2, {'c2': 'bar'})

        c1.clear()
        self.assertEqual(c1, {})

        # In a "new request" all the same caches should be cleared
        c2.check_state()
        self.assertEqual(c2, {})

        cache_information = LocalSyncCache.get_cache_information()
        self.assertEqual(len(cache_information), 2)
Exemplo n.º 3
0
    def testMulti(self):
        self.assertEqual(len(LocalSyncCache.CACHES), 0)
        c1 = LocalSyncCache(id="test1")
        self.assertEqual(len(LocalSyncCache.CACHES), 1)
        c2 = LocalSyncCache(id="test1", unique_ids=False)
        self.assertEqual(len(LocalSyncCache.CACHES), 2)
        c1["c1"] = "foo"
        c2["c2"] = "bar"
        self.assertEqual(c1, {'c1': 'foo'})
        self.assertEqual(c2, {'c2': 'bar'})

        c1.check_state()
        c2.check_state()

        self.assertEqual(c1, {'c1': 'foo'})
        self.assertEqual(c2, {'c2': 'bar'})

        c1.clear()
        self.assertEqual(c1, {})

        # In a "new request" all the same caches should be cleared
        c2.check_state()
        self.assertEqual(c2, {})

        cache_information = LocalSyncCache.get_cache_information()
        self.assertEqual(len(cache_information), 2)
Exemplo n.º 4
0
    def testMulti(self):
        assert_pformat_equal(len(LocalSyncCache.CACHES), 0)
        c1 = LocalSyncCache(id="test1")
        assert_pformat_equal(len(LocalSyncCache.CACHES), 1)
        c2 = LocalSyncCache(id="test1", unique_ids=False)
        assert_pformat_equal(len(LocalSyncCache.CACHES), 2)
        c1["c1"] = "foo"
        c2["c2"] = "bar"
        assert_pformat_equal(c1, {"c1": "foo"})
        assert_pformat_equal(c2, {"c2": "bar"})

        c1.check_state()
        c2.check_state()

        assert_pformat_equal(c1, {"c1": "foo"})
        assert_pformat_equal(c2, {"c2": "bar"})

        c1.clear()
        assert_pformat_equal(c1, {})

        # In a "new request" all the same caches should be cleared
        c2.check_state()
        assert_pformat_equal(c2, {})

        cache_information = LocalSyncCache.get_cache_information()
        assert_pformat_equal(len(cache_information), 2)
Exemplo n.º 5
0
class SiteAliasManager(models.Manager):
    ALIAS_CACHE = None

    def get_from_host(self, current_host):
        if self.ALIAS_CACHE is None:
            # first request after startup / model.save() -> fill the cache
            logger.debug("init LocalSyncCache for SiteAlias cache")
            self.ALIAS_CACHE = LocalSyncCache(id="SiteAliasCache")

        if "string" not in self.ALIAS_CACHE:
            logger.debug("Fill SiteAlias cache")
            self.ALIAS_CACHE["string"] = {}
            self.ALIAS_CACHE["regex"] = []
            queryset = self.all()
            for site_alias in queryset:
                site = site_alias.site
                alias = site_alias.alias

                if site_alias.regex:
                    regex = compile_alias(alias)
                    self.ALIAS_CACHE["regex"].append((regex, site))
                else:
                    self.ALIAS_CACHE["string"][alias.lower()] = site

            self.ALIAS_CACHE["regex"] = tuple(self.ALIAS_CACHE["regex"])
            logger.debug("Alias string cache: %s" %
                         repr(self.ALIAS_CACHE["string"]))
            logger.debug("Alias regex cache: %s" %
                         repr(self.ALIAS_CACHE["regex"]))

        # Try first all string alias:
        try:
            return self.ALIAS_CACHE["string"][current_host]
        except KeyError:
            logger.debug("No site found in string cache for %r" % current_host)

        # Try all regex alias:
        for regex, site in self.ALIAS_CACHE["regex"]:
            match = regex.search(current_host)
            if match is not None:
                return site

        logger.debug("No site found in regex cache for %r" % current_host)
        raise self.model.DoesNotExist("No alias found for %r" % current_host)

    def clear_cache(self):
        if self.ALIAS_CACHE is not None:
            logger.debug("Clear SiteAlias cache")
            self.ALIAS_CACHE.clear()
            logger.debug("Clear DynamicSiteMiddlewareCache cache")
            sites_models.SITE_CACHE.clear()
Exemplo n.º 6
0
class SiteAliasManager(models.Manager):
    ALIAS_CACHE = None

    def get_from_host(self, current_host):
        if self.ALIAS_CACHE is None:
            # first request after startup / model.save() -> fill the cache
            logger.debug("init LocalSyncCache for SiteAlias cache")
            self.ALIAS_CACHE = LocalSyncCache(id="SiteAliasCache")

        if "string" not in self.ALIAS_CACHE:
            logger.debug("Fill SiteAlias cache")
            self.ALIAS_CACHE["string"] = {}
            self.ALIAS_CACHE["regex"] = []
            queryset = self.all()
            for site_alias in queryset:
                site = site_alias.site
                alias = site_alias.alias

                if site_alias.regex:
                    regex = compile_alias(alias)
                    self.ALIAS_CACHE["regex"].append((regex, site))
                else:
                    self.ALIAS_CACHE["string"][alias.lower()] = site

            self.ALIAS_CACHE["regex"] = tuple(self.ALIAS_CACHE["regex"])
            logger.debug("Alias string cache: %s" % repr(self.ALIAS_CACHE["string"]))
            logger.debug("Alias regex cache: %s" % repr(self.ALIAS_CACHE["regex"]))

        # Try first all string alias:
        try:
            return self.ALIAS_CACHE["string"][current_host]
        except KeyError:
            logger.debug("No site found in string cache for %r" % current_host)

        # Try all regex alias:
        for regex, site in self.ALIAS_CACHE["regex"]:
            match = regex.search(current_host)
            if match is not None:
                return site

        logger.debug("No site found in regex cache for %r" % current_host)
        raise self.model.DoesNotExist("No alias found for %r" % current_host)

    def clear_cache(self):
        if self.ALIAS_CACHE is not None:
            logger.debug("Clear SiteAlias cache")
            self.ALIAS_CACHE.clear()
            logger.debug("Clear DynamicSiteMiddlewareCache cache")
            sites_models.SITE_CACHE.clear()
Exemplo n.º 7
0
    def testLocalSyncCacheMiddleware(self):
        middleware = LocalSyncCacheMiddleware()

        c1 = LocalSyncCache(id="testLocalSyncCacheMiddleware1")
        c2 = LocalSyncCache(id="testLocalSyncCacheMiddleware1",
                            unique_ids=False)

        c3 = LocalSyncCache(id="testLocalSyncCacheMiddleware2")

        assert_pformat_equal(len(LocalSyncCache.CACHES), 3)

        c1["c1"] = "foo"
        c2["c2"] = "bar"
        c3["foo"] = "bar"

        middleware.process_request(None)

        assert_pformat_equal(c1, {"c1": "foo"})
        assert_pformat_equal(c2, {"c2": "bar"})
        assert_pformat_equal(c3, {"foo": "bar"})

        c1.clear()
        assert_pformat_equal(c1, {})

        # In a "new request" all the same caches should be cleared
        middleware.process_request(None)
        assert_pformat_equal(c2, {})

        # Other caches should be not affected by clear()
        assert_pformat_equal(c3, {"foo": "bar"})

        c1["c1"] = "foo2"
        c2["c2"] = "bar2"

        middleware.process_request(None)

        assert_pformat_equal(c1, {"c1": "foo2"})
        assert_pformat_equal(c2, {"c2": "bar2"})
        assert_pformat_equal(c3, {"foo": "bar"})

        c2.clear()
        assert_pformat_equal(c2, {})

        # In a "new request" all the same caches should be cleared
        middleware.process_request(None)
        assert_pformat_equal(c1, {})

        #        print LocalSyncCache.pformat_cache_information()
        cache_information = LocalSyncCache.get_cache_information()
        assert_pformat_equal(len(cache_information), 3)
        for item in cache_information:
            instance = item["instance"]
            assert_pformat_equal(instance.request_counter, 4)

            if instance.id == "testLocalSyncCacheMiddleware2":
                assert_pformat_equal(instance.own_clear_counter, 0)
                assert_pformat_equal(instance.ext_clear_counter, 0)
                assert_pformat_equal(instance, {"foo": "bar"})
            else:
                assert_pformat_equal(instance.own_clear_counter, 1)
                assert_pformat_equal(instance.ext_clear_counter, 1)
                assert_pformat_equal(instance, {})
Exemplo n.º 8
0
    def testLocalSyncCacheMiddleware(self):
        middleware = LocalSyncCacheMiddleware()

        c1 = LocalSyncCache(id="testLocalSyncCacheMiddleware1")
        c2 = LocalSyncCache(id="testLocalSyncCacheMiddleware1", unique_ids=False)

        c3 = LocalSyncCache(id="testLocalSyncCacheMiddleware2")

        self.assertEqual(len(LocalSyncCache.CACHES), 3)

        c1["c1"] = "foo"
        c2["c2"] = "bar"
        c3["foo"] = "bar"

        middleware.process_request(None)

        self.assertEqual(c1, {'c1': 'foo'})
        self.assertEqual(c2, {'c2': 'bar'})
        self.assertEqual(c3, {'foo': 'bar'})

        c1.clear()
        self.assertEqual(c1, {})

        # In a "new request" all the same caches should be cleared
        middleware.process_request(None)
        self.assertEqual(c2, {})

        # Other caches should be not affected by clear()
        self.assertEqual(c3, {'foo': 'bar'})

        c1["c1"] = "foo2"
        c2["c2"] = "bar2"

        middleware.process_request(None)

        self.assertEqual(c1, {'c1': 'foo2'})
        self.assertEqual(c2, {'c2': 'bar2'})
        self.assertEqual(c3, {'foo': 'bar'})

        c2.clear()
        self.assertEqual(c2, {})

        # In a "new request" all the same caches should be cleared
        middleware.process_request(None)
        self.assertEqual(c1, {})

#        print LocalSyncCache.pformat_cache_information()
        cache_information = LocalSyncCache.get_cache_information()
        self.assertEqual(len(cache_information), 3)
        for item in cache_information:
            instance = item["instance"]
            self.assertEqual(instance.request_counter, 4)

            if instance.id == "testLocalSyncCacheMiddleware2":
                self.assertEqual(instance.own_clear_counter, 0)
                self.assertEqual(instance.ext_clear_counter, 0)
                self.assertEqual(instance, {'foo': 'bar'})
            else:
                self.assertEqual(instance.own_clear_counter, 1)
                self.assertEqual(instance.ext_clear_counter, 1)
                self.assertEqual(instance, {})