package eu.dnetlib.data.collective.manager.log;

import static org.junit.Assert.*;

import java.io.IOException;
import java.util.Calendar;
import java.util.List;

import org.apache.lucene.index.CorruptIndexException;
import org.junit.Before;
import org.junit.Test;

public class LogTest {

	private transient String indexDirectory = "/tmp/testlogs/testindex";
	private transient LogInfoService liService;
	private transient Calendar cal_1 = Calendar.getInstance();
	private transient Calendar cal_2 = Calendar.getInstance();
	private transient String id_1 = "id-1";
	private transient String id_2 = "id-2";
		
	@Before
	public void setUp(){
		cal_1.set(2008, 10-1, 5);
		cal_2.set(2009, 12 - 1, 1);		
		liService = new LogInfoService();
		liService.setIndexDirectory(indexDirectory);
		liService.init();
	}
	
	@Test
	public void testWriteReadLogs() throws CorruptIndexException, IOException{
		LogInfo li_1 = new LogInfo();
		long t1 = cal_1.getTimeInMillis();
		System.out.println("t1: " + t1);
		li_1.setTimeStamp(t1);
		li_1.setInstanceId(id_1);		
		liService.persist(li_1);
		List<LogInfo> liList = liService.findLogInfos(id_1, t1, t1);
		assertEquals(1, liList.size());
		assertEquals(0, liList.get(0).getLogProperties().size());
		
		LogInfo li_2 = new LogInfo();
		long t2 = cal_2.getTimeInMillis();
		System.out.println("t2: " + t2);
		li_2.setTimeStamp(t2);
		li_2.setInstanceId(id_2);
		li_2.getLogProperties().setProperty("key-1", "value-1");
		liService.persist(li_2);

		liList = liService.findLogInfos(id_2, t2, t2);
		assertEquals(1, liList.size());
		assertEquals(1, liList.get(0).getLogProperties().size());
		liList = liService.findLogInfos(id_2, 1, 10);
		assertEquals(0, liList.size());		
	}
}
