package com.ikokoon.serenity.process;
import static org.junit.Assert.*;
import java.io.File;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import com.ikokoon.serenity.ATest;
import com.ikokoon.serenity.Configuration;
import com.ikokoon.serenity.IConstants;
import com.ikokoon.serenity.model.Afferent;
import com.ikokoon.serenity.model.Efferent;
import com.ikokoon.serenity.model.Line;
import com.ikokoon.serenity.persistence.DataBaseOdb;
import com.ikokoon.serenity.persistence.IDataBase;
import com.ikokoon.target.discovery.Discovery;
import com.ikokoon.toolkit.Executer;
import com.ikokoon.toolkit.Toolkit;
/**
* @author Michael Couck
* @since 10.01.10
* @version 01.00
*/
public class PrunerTest extends ATest implements IConstants {
@Before
public void addPackages() {
Configuration.getConfiguration().includedPackages.clear();
Configuration.getConfiguration().includedPackages.add(Discovery.class.getPackage().getName());
Configuration.getConfiguration().includedPackages.add("edu.umd.cs.findbugs");
}
@Test
@SuppressWarnings("unchecked")
public void execute() {
File sourceOdbDataBaseFile = new File("./src/test/resources/isearch/merge/tag.odb");
File targetOdbDataBaseFile = new File("./src/test/resources/isearch/prune/tag.odb");
if (!targetOdbDataBaseFile.getParentFile().exists()) {
targetOdbDataBaseFile.getParentFile().mkdirs();
}
Toolkit.copyFile(sourceOdbDataBaseFile, targetOdbDataBaseFile);
final IDataBase odbDataBase = IDataBase.DataBaseManager.getDataBase(DataBaseOdb.class, targetOdbDataBaseFile.getAbsolutePath(), null);
// Assert that there are no more afferent and lines in the database
List<Line> lines = odbDataBase.find(Line.class);
assertTrue(lines.size() > 0);
List<Afferent> afferent = odbDataBase.find(Afferent.class);
assertTrue(afferent.size() > 0);
List<Efferent> efferent = odbDataBase.find(Efferent.class);
assertTrue(efferent.size() > 0);
double pruneDuration = Executer.execute(new Executer.IPerform() {
public void execute() {
new Pruner(null, odbDataBase).execute();
}
}, "PrunerTest : ", 1);
logger.warn("Prune duration : " + pruneDuration);
// Assert that there are no more afferent and lines in the database
lines = odbDataBase.find(Line.class);
assertEquals(0, lines.size());
afferent = odbDataBase.find(Afferent.class);
assertEquals(0, afferent.size());
efferent = odbDataBase.find(Efferent.class);
assertEquals(0, efferent.size());
odbDataBase.close();
Toolkit.deleteFile(targetOdbDataBaseFile.getParentFile(), 3);
}
}