Package siena.base.test

Source Code of siena.base.test.BaseMassTest

package siena.base.test;

import static siena.Json.map;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import junit.framework.TestCase;
import siena.PersistenceManager;
import siena.base.test.model.Address;
import siena.base.test.model.Contact;
import siena.base.test.model.MassEntity;

public abstract class BaseMassTest extends TestCase {
 
  private PersistenceManager pm;

  protected static final int NB_ENTITIES = 10000;
 
  public abstract PersistenceManager createPersistenceManager(List<Class<?>> classes) throws Exception;
 
  public void testMassFetch() {   
    List<MassEntity> ents = pm.createQuery(MassEntity.class).fetch();
    assertNotNull(ents);
    assertEquals(NB_ENTITIES, ents.size());
  }

  public void testMassDelete() {
    int res = pm.createQuery(MassEntity.class).delete();
    assertEquals(NB_ENTITIES, res);
   
    List<MassEntity> ents = pm.createQuery(MassEntity.class).fetch();
    assertNotNull(ents);
    assertEquals(0, ents.size());
  }

  public void testMassIter() {
    Iterable<MassEntity> it = pm.createQuery(MassEntity.class).iter();

    assertNotNull(it);
    int i=0;
    for(MassEntity ent: it){
      assertNotNull(ent);
      i++;
    }
   
    assertEquals(NB_ENTITIES, i);
  }
 
  protected void massInsert() {
    // massive data injection
    int _int = 0;
    short _short = 0;
    byte _byte = 0;
    long _long = 0;
    float _float = 0f;
    double _double = 0d;
    char[] longstr = new char[501];
    Arrays.fill(longstr, 'x');
       
    for(int i=0; i<NB_ENTITIES; i++){
      MassEntity ent = new MassEntity();
      ent.typeByte = _byte; // incremented later in function
      ent.typeShort = _short++;
      ent.typeInt = _int++;
      ent.typeLong = _long++;
      ent.typeFloat = _float++;
      ent.typeDouble = _double++;
      ent.typeDate = new Date();
      ent.typeString = "str_"+i;
      ent.typeLargeString = new String(longstr);
      ent.typeJson = map().put("foo_"+i, "bar_"+i);
      ent.addresses = new ArrayList<Address>();
      ent.addresses.add(new Address("addr_"+i+"_0", "town_"+i+"_0"));
      ent.addresses.add(new Address("addr_"+i+"_1", "town_"+i+"_1"));
      ent.contacts = new HashMap<String, Contact>();
      ent.contacts.put("id_"+i,
          new Contact("Somebody_"+i, Arrays.asList("foo_"+i, "bar_"+i)));
     
      // Blob
      byte[] blob = new byte[5000];
      Arrays.fill(blob, _byte++);
      ent.typeBlob = blob;
     
      pm.insert(ent);     
    }
  }
 
  protected void massDelete() {
    pm.createQuery(MassEntity.class).delete();
  }
 
  @Override
  protected void setUp() throws Exception {
    super.setUp();
    List<Class<?>> classes = new ArrayList<Class<?>>();
    classes.add(MassEntity.class);
    pm = createPersistenceManager(classes);
    massInsert();     
  }

    @Override
    public void tearDown() throws Exception {
      massDelete();     

        super.tearDown();
    }
}
TOP

Related Classes of siena.base.test.BaseMassTest

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.