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")
def testStandardApiLocalCache(self): """Testujemy obsluge localcache """ key1 = self.key_prefix + "StandardApi.local_cache.k1" key2 = self.key_prefix + "StandardApi.local_cache.k2" vkey = self.key_prefix + "StandardApi.local_cache.vkey" self.to_delete.extend([key1, key2, vkey]) data = "test_local_cache" # Wrzucamy dane do cache lokalnego i pobieramy localcache_put(key1, data) #local_memoize_cache[key1] = data gdata = localcache_get(key1) self.assertEqual(gdata, data, u"Dane w cache sa inne: %s != %s" % (data, gdata)) invalidate(key1) # Wrzucamy dane data = (1, data) localcache_put(vkey, 1) #local_memoize_cache[vkey] = 1 localcache_put(key1, data) #local_memoize_cache[key1] = data localcache_put(key2, data) #local_memoize_cache[key2] = data gdata = localcache_get(key1) self.assertEqual(data[1], gdata[1], u"Dane w cache sa inne: %s != %s" % (data[1], gdata[1])) # invalidujemy vkey invalidatev(vkey) gdata = localcache_get(key1) self.assertNotEqual(data[1], gdata, u"Dane w cache nie zostaly zinvalidowane")
def testDecorate(self): """Test dekoratora klasycznego memoize """ key = self.key_prefix + "memoize.k1" vkey = self.key_prefix + "memoize.vkey" self.to_delete.append(key) # test klasycznego memoize bez zadnych dodatkowych opcji self.data = 2 @memoize(key) def test1(a): self.data += 2 return a**self.data self.assertEqual(test1(2), test1(2), u"dane w cache rozne test1=%s test2=%s" % (test1(2), test1(2))) delete(key) # test klasycznego memoize z vkey self.data=2 @memoize(key, vkey) def test4(a): self.data += 2 return a**self.data gdata = test4(2) invalidatev(vkey) gdata2 = test4(2) self.assertNotEqual(gdata2, gdata, u"Nie zinvalidowalo vkey") # test timeout memoize delete(key, vkey) @memoize(key_function=key, vkey_function=None, timeout=1, allow_none=False, l1=False) def test5(a): self.data += 2 return a**self.data gdata = test5(2) sleep(2) self.assertNotEqual(test5(2), gdata, u"Nie usunieto danych z cache")
memoize DEBUG memoize:127 VMISS (object not in memcache) [2na3], setting to v1235160207 """ test2 = memoize(lambda a, b : "%srazy%s" % (a,b), timeout = 1)(test2) test1(5, 4) # MISS test1(5, 4) # HIT test2(3, 6) # MISS test2(3, 6, __force_cache_invalidate_in_place = True) # Forced MISS test2(3, 6) # HIT test2(3, 6) # HIT test3_1(1,2) # VMISS test3_1(1,3) # VMISS test3_2(2,2) # VMISS test3_2(2,3) # VMISS invalidatev( group_vkey(2,2) ) test3_1(1,2) #vhit test3_1(1,3) #vhit test3_2(2,2) #vmiss test3_2(2,3) #vmiss test3_1(1,2) # vhit test3_1(1,2, __force_cache_invalidate_in_place = True) # vhit test3_1(1,2) # vhit raising(1,2)