コード例 #1
0
ファイル: tests.py プロジェクト: pekoslaw/gronoize
        def testStandardApiVkey(self):
            """Test dzialania danych powiazanych kluczemwersji
            """
            vkey = self.key_prefix + "StandardApi.vkey.vkey"
            key1 = self.key_prefix + "StandardApi.timeout.k1"
            key2 = self.key_prefix + "StandardApi.timeout.k2"
            data = "vkey-test"
            self.to_delete.extend([key1, key2, vkey])

            # Wrzucamy dane do obu kluczy (z vkey) i pobieramy je
            put(key1, data, 0, vkey, False)
            put(key2, data, 0, vkey, False)

            for key in (key1, key2):
                gdata = get(key, False)
                self.assertEqual(data, gdata, u"Problem z danymi w memoize. key=%s, %s != %s" % (key, data, gdata))

            # Sprawdzamy czy dane wrzucone do cache dobrze zostaly zapisane
            gdata = _get(key1, False)
            #self.assertTrue(isinstance(gdata, tuple), u"Dane w cache powinny miec krotke przy vkey. gdata=%s" % str(gdata)) # Wcale ze nie
            self.assertTrue(isinstance(gdata, dict), u"Dane w cache powinny byc w slowniku przy vkey. gdata=%s" % str(gdata))
            gdata = get(key1, False)
            self.assertEqual(data, gdata, u"Problem z danymi w memoize. gdata=%s" % str(gdata))

            # incalidujemy klucz wersi i sprawdzamy czy invalidowalo klucze
            invalidatev(vkey)
            self.assertNotEqual(data, get(key1, False), u"Dane w cache salej sa mimo invalidate")
            self.assertNotEqual(data, get(key2, False), u"Dane w cache salej sa mimo invalidate")
コード例 #2
0
ファイル: tests.py プロジェクト: pekoslaw/gronoize
        def testStandardApiNone(self):
            """Test sprawdzajacy wrzucanie None do cache
            """
            key = self.key_prefix + "StandardApi.none"
            self.to_delete.append(key)

            # Wrzucamy none i sprawdamy czy odpowie mi MEMCACHE_NONE
            put(key, None)
            gdata = get(key)
            self.assertEqual(gdata, MEMCACHE_NONE, u"Dane w cache inne niz oczekiwalismy.")
コード例 #3
0
ファイル: tests.py プロジェクト: pekoslaw/gronoize
        def testLocalcacheClear(self):
            """Test czyszczenia lokalnego cache"""
            key = self.key_prefix + "localcache.k1"
            test_data = 'test-localclear'
            put(key, test_data, l1=True)
            data = localcache_get(key)

            self.assertEqual(data['value'] if isinstance(data, dict) else data, test_data, "Dane w lokalnym keszu sa rozne od danych wejsciowych %s=%s" % (data, test_data))

            localcache_clear()
            data = localcache_get(key)
            self.assertEqual(data, None, "Nie dziala czyszczenie lokalnego cache")
コード例 #4
0
ファイル: tests.py プロジェクト: pekoslaw/gronoize
        def testStandardApiBase(self):
            """Test dla funkcji put i get bez zadnych dodatkowych ustawien
            """
            key = self.key_prefix + "StandardApi.Base"
            self.to_delete.append(key)
            data = "proba"

            # Sprawdzenie czy po wrzuceinu do cache otrzymam dane spowrotem (bez cache lokalnego)
            put(key, data, 0, None, False)
            gdata = get(key, False)
            self.assertEqual(data, gdata, u"Blad zwracanych danych z memoize: %s != %s" % (data, gdata))

            # Ten sam test tylko z cache lokaklnym
            put(key, data)
            gdata = get(key)
            self.assertEqual(data, gdata, u"Blad zwracanych danych z memoize: %s != %s" % (data, gdata))
コード例 #5
0
ファイル: decorators.py プロジェクト: pekoslaw/gronoize
        def _wrapper(*args, **kwargs):
            add_to_cache = optionaladd

            # 1. Utworzenie kluczy
            key = key_function
            vkey = vkey_function
            time_out = timeout

            # opcjonalny argument MEMOIZE_REFRESH powoduje pominięcie cache
            # przy odczycie i wymuszenie zapisu danych do cache
            refresh = False
            if kwargs.has_key('MEMOIZE_REFRESH'):
                add_to_cache = False
                refresh = kwargs['MEMOIZE_REFRESH']
                del kwargs['MEMOIZE_REFRESH']

            if callable(key_function):
                key = key_function(*args, **kwargs)

            if key is not None:
                if callable(vkey_function):
                    vkey = vkey_function(*args, **kwargs)

                if callable(timeout):
                    time_out = timeout()

                log.debug("KEY %s", key)

                if not refresh:
                    # 2. Pobranie danych z memoize i zwrocenie jesli je mamy
                    result = get(key, l1, use_deepcopy=use_deepcopy)
                    if result is not None or result == MEMCACHE_NONE:
                        if result == MEMCACHE_NONE:
                            return
                        log.debug("Z CACHE")
                        return result

            # 3. Generowanie danych na nowo
            result = f(*args, **kwargs)

            if not allow_none and result is None:
                return

            if key is not None:
                put(key, result, time_out, vkey, l1, add_to_cache)

            return result
コード例 #6
0
ファイル: decorators.py プロジェクト: pekoslaw/gronoize
        def _wrapper(*args, **kwargs):
            add_to_cache = optionaladd

            # 1. Utworzenie kluczy
            key = key_function
            vkey = vkey_function
            time_out = timeout

            # opcjonalny argument MEMOIZE_REFRESH powoduje pominięcie cache
            # przy odczycie i wymuszenie zapisu danych do cache
            refresh = False
            if kwargs.has_key('MEMOIZE_REFRESH'):
                add_to_cache = False
                refresh = kwargs['MEMOIZE_REFRESH']
                del kwargs['MEMOIZE_REFRESH']

            if callable(key_function):
                key = key_function(*args, **kwargs)

            if key is not None:
                if callable(vkey_function):
                    vkey = vkey_function(*args, **kwargs)

                if callable(timeout):
                    time_out = timeout()

                log.debug("KEY %s", key)

                if not refresh:
                    # 2. Pobranie danych z memoize i zwrocenie jesli je mamy
                    result = get(key, l1, use_deepcopy=use_deepcopy)
                    if result is not None or result == MEMCACHE_NONE:
                        if result == MEMCACHE_NONE:
                            return
                        log.debug("Z CACHE")
                        return result

            # 3. Generowanie danych na nowo
            result = f(*args, **kwargs)

            if not allow_none and result is None:
                return

            if key is not None:
                put(key, result, time_out, vkey, l1, add_to_cache)

            return result
コード例 #7
0
ファイル: tests.py プロジェクト: pekoslaw/gronoize
        def testStandardApiTimeout(self):
            """Test dla funkcji put i get z timeout (localcache False bo on nie ma timeout tylko memcache)
            """
            key1 = self.key_prefix + "StandardApi.timeout.k1"
            key2 = self.key_prefix + "StandardApi.timeout.k2"
            self.to_delete.extend([key1, key2])
            data = "proba"

            # dlugi timeout ktorego nie przekroczymy
            put(key1, data, 100, None, False)
            gdata = get(key1, False)
            self.assertEqual(data, gdata, u"Błąd zwracanych danych z memoize. 100 sekund jeszcze chyba nie upłuneło. [data=%s, gdata=%s]" % (data, gdata))

            # przekroczenie timeoutu i sprawdzenei czy invalidowalo dane
            put(key2, data, 1, None, False)
            sleep(2)
            gdata = get(key2, False)
            self.assertNotEqual(data, gdata, u"Memoize zwrócił dane a powinny być już przeterminowane. [data=%s, gdata=%s]" % (data, gdata))
コード例 #8
0
ファイル: tests.py プロジェクト: pekoslaw/gronoize
        def testMany(self):
            keys = [self.key_prefix + "StandardApi.Many.%d" % i for i in range(100)]
            self.to_delete.extend(keys)
            data = "proba"

            # Sprawdzenie czy po wrzuceinu do cache otrzymam dane spowrotem (bez cache lokalnego)
            for key in keys:
                put(key, data, 0, None, False)
            gdata = get_many(keys, False)
            self.assertEqual(len(gdata), len(keys), u"Zwrócono jedynie %d z %d elementów." % (len(data), len(keys)))
            for (k, v) in gdata.iteritems():
                self.assertEqual(data, v, u"Blad zwracanych danych z memoize: %s != %s" % (data, v))

            # Ten sam test tylko z cache lokaklnym
            for key in keys:
                put(key, data)
            gdata = get_many(keys)
            self.assertEqual(len(gdata), len(keys), u"Zwrócono jedynie %d z %d elementów." % (len(data), len(keys)))
            for (k, v) in gdata.iteritems():
                self.assertEqual(data, v, u"Blad zwracanych danych z memoize: %s != %s" % (data, v))