package test.nvarghese.beowulf.common.webtest.scs.jobs; import java.net.UnknownHostException; import org.bson.types.ObjectId; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import com.google.code.morphia.Datastore; import com.google.code.morphia.Morphia; import com.mongodb.Mongo; import com.nvarghese.beowulf.common.webtest.CategorizerType; import com.nvarghese.beowulf.common.webtest.JobStatus; import com.nvarghese.beowulf.common.webtest.scs.jobs.CategorizationJobDAO; import com.nvarghese.beowulf.common.webtest.scs.jobs.CategorizationJobDocument; public class CategorizationJobDAOTest { private Datastore ds; @BeforeClass public void initialize() throws UnknownHostException { Mongo mongo = new Mongo("localhost:10001"); ds = new Morphia().createDatastore(mongo, "webscancatjobs"); } @Test(dataProvider = "feedCategorizationJobDocument") public void testCreateCategorizationJobDocument(CategorizationJobDocument categJobDocument) { CategorizationJobDAO jobDAO = new CategorizationJobDAO(ds); ObjectId id = jobDAO.createCategorizationJobDocument(categJobDocument); Assert.assertNotNull(id); CategorizationJobDocument loadedCategorizationJobDocument = jobDAO.getCategorizationJobDocument(id); Assert.assertEquals(loadedCategorizationJobDocument.getWebScanObjId(), categJobDocument.getWebScanObjId()); } @Test(dependsOnMethods = { "testCreateCategorizationJobDocument" }) public void testIsInProgressJobsPresent() { CategorizationJobDAO jobDAO = new CategorizationJobDAO(ds); boolean present = jobDAO.isInProgressJobsPresent(); Assert.assertTrue(present); } @Test(dependsOnMethods = { "testIsInProgressJobsPresent" }) public void testCountOfJobs() { CategorizationJobDAO jobDAO = new CategorizationJobDAO(ds); long completedJobs = jobDAO.getCountOfCompletedJobs(); long errorJobs = jobDAO.getCountOfErrorOrTerminatedJobs(); long inprogressJobs = jobDAO.getCountOfInProgressJobs(); Assert.assertEquals(completedJobs, 2); Assert.assertEquals(inprogressJobs, 4); Assert.assertEquals(errorJobs, 1); } @DataProvider(/* parallel=false */) public Object[][] feedCategorizationJobDocument() { return new Object[][] { { provideDummyCategorizationJobDocument(JobStatus.WAITING) }, { provideDummyCategorizationJobDocument(JobStatus.COMPLETED) }, { provideDummyCategorizationJobDocument(JobStatus.COMPLETED) }, { provideDummyCategorizationJobDocument(JobStatus.PROCESSING) }, { provideDummyCategorizationJobDocument(JobStatus.PROCESSING) }, { provideDummyCategorizationJobDocument(JobStatus.WAITING) }, { provideDummyCategorizationJobDocument(JobStatus.TERMINATED) } }; } private CategorizationJobDocument provideDummyCategorizationJobDocument(JobStatus jobStatus) { CategorizationJobDocument doc = new CategorizationJobDocument(); doc.setCategorizerType(CategorizerType.MULTI_SET); doc.setTxnObjId(new ObjectId()); doc.setWebScanObjId(new ObjectId()); doc.setJobStatus(jobStatus); return doc; } @AfterClass public void cleanup() { ds.getDB().dropDatabase(); } }