Package fr.norsys.mapper.jndi

Source Code of fr.norsys.mapper.jndi.JNDISourceCleanTest

package fr.norsys.mapper.jndi;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import junit.framework.TestCase;
import fr.norsys.mapper.core.MapperException;
import fr.norsys.mapper.manager.MapperManager;
import fr.norsys.mapper.xml.XMLConfigurator;
import fr.norsys.mockldap.TestDirContextFactory;

/**
* This class tests the cleanup process of the manager. This class configures a
* manager with one source and one mapper and creates lot of instances of the
* mapper without releasing them. It then checks that memory is properly cleaned
* up.
*
* @author nono
*
*/
public class JNDISourceCleanTest extends TestCase {

  private MapperManager mgr;

  protected void setUp() throws Exception {
    super.setUp();
    XMLConfigurator xc = new XMLConfigurator();
    this.mgr = new MapperManager();
    // parse XML configuration file
    xc.parse(Thread.currentThread().getContextClassLoader()
        .getResourceAsStream("jndi-sample.xml"));
    // configure manager
    xc.configure(this.mgr);
    this.mgr.set("ldifsource", "canam-personnes-sample.ldif");
    this.mgr.setConfigured();
    this.mgr.start();
  }

  public void test01Cleanup() throws MapperException, IOException {
    long[] data = new long[100];
    for (int i = 0; i < 1000000; i++) {
      // execute query
      SearchMapper sm = (SearchMapper) this.mgr.getMapper("telAndMail");
      /* populate input */
      Map input = new HashMap();
      input.put("nom", "FOURCADE");
      input.put("prenom", "Sandrine");
      List ret = sm.search(input, null);
      assertEquals(1,ret.size());
      if (i % 10000 == 0) {
        System.gc();
        data[i % 10000] = Runtime.getRuntime().totalMemory();
      }
    }
    System.err.println("Context count :" +TestDirContextFactory.getCount());
    /* print data to file */
    File f = new File("jndi-cleaner.data");
    PrintWriter pw = new PrintWriter(new FileWriter(f));
    int l = data.length;
    for (int i = 0; i < 100; i++)
      pw.println(data[i]);
    pw.flush();
    pw.close();
  }

  protected void tearDown() throws Exception {
    super.tearDown();
    this.mgr.stop();
  }

}
TOP

Related Classes of fr.norsys.mapper.jndi.JNDISourceCleanTest

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.