Package com.googlecode.objectify.test

Source Code of com.googlecode.objectify.test.CachingTests$Cached

/*
*/

package com.googlecode.objectify.test;

import com.google.appengine.api.memcache.MemcacheService;
import com.google.appengine.api.memcache.MemcacheServiceFactory;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.ObjectifyFactory;
import com.googlecode.objectify.annotation.Cache;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import com.googlecode.objectify.test.util.TestBase;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import static com.googlecode.objectify.test.util.TestObjectifyService.fact;
import static com.googlecode.objectify.test.util.TestObjectifyService.ofy;

/**
* @author Jeff Schnitzer <jeff@infohazard.org>
*/
public class CachingTests extends TestBase
{
  /** */
  @SuppressWarnings("unused")
  private static Logger log = Logger.getLogger(CachingTests.class.getName());

  /** */
  @Entity
  static class Uncached {
    @Id Long id;
    String stuff;
  }

  /** */
  @Entity
  @Cache
  static class Cached {
    @Id Long id;
    String stuff;
  }

  /**
   */
  @BeforeMethod
  public void setUpExtra() {
    fact().register(Uncached.class);
    fact().register(Cached.class);
  }

  /** */
  @Test
  public void testHeterogeneousBatch() throws Exception {
    Uncached un1 = new Uncached();
    un1.stuff = "un1 stuff";

    Uncached un2 = new Uncached();
    un2.stuff = "un2 stuff";

    Cached ca1 = new Cached();
    ca1.stuff = "ca1 stuff";

    Cached ca2 = new Cached();
    ca2.stuff = "ca2 stuff";

    List<Object> entities = new ArrayList<>();
    entities.add(un1);
    entities.add(ca1);
    entities.add(un2);
    entities.add(ca2);

    Map<Key<Object>, Object> keys = ofy().save().entities(entities).now();
    ofy().clear();
    Map<Key<Object>, Object> fetched = ofy().load().keys(keys.keySet());

    assert fetched.size() == 4;
    assert fetched.containsKey(Key.create(un1));
    assert fetched.containsKey(Key.create(un2));
    assert fetched.containsKey(Key.create(ca1));
    assert fetched.containsKey(Key.create(ca2));
  }
 
  /** */
  @Entity
  @Cache(expirationSeconds=1)
  static class Expires {
    @Id Long id;
    String stuff;
  }

  /** */
  @Test
  public void cacheExpirationWorks() throws Exception {
    fact().register(Expires.class);
   
    Expires exp = new Expires();
    exp.stuff = "foo";
   
    Key<Expires> key = ofy().save().entity(exp).now();
    ofy().clear();
    ofy().load().key(key).now()// cached now
   
    MemcacheService ms = MemcacheServiceFactory.getMemcacheService(ObjectifyFactory.MEMCACHE_NAMESPACE);
   
    Object thing = ms.get(key.getString());
    assert thing != null;
   
    Thread.sleep(2000);
   
    Object thing2 = ms.get(key.getString());
    assert thing2 == null;
  }
}
TOP

Related Classes of com.googlecode.objectify.test.CachingTests$Cached

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.