/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.monitor; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; import static org.geoserver.monitor.MonitorTestData.assertCovered; import static org.geoserver.monitor.MonitorTestData.assertCoveredInOrder; import static org.geoserver.monitor.MonitorTestData.toDate; import static org.junit.Assert.assertFalse; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import org.geoserver.monitor.Query.Comparison; import org.geoserver.monitor.Query.SortOrder; import org.geoserver.monitor.RequestData.Status; import org.junit.Test; public abstract class MonitorDAOTestSupport{ protected static MonitorTestData testData; protected static MonitorDAO dao; protected static void setUpData() throws Exception { testData = new MonitorTestData(dao); testData.setup(); } @Test public void testUpdate() throws Exception { RequestData data = dao.getRequest(1); data.setPath("/one_updated"); dao.update(data); data = dao.getRequest(1); assertEquals("/one_updated", data.getPath()); data.getResources().add("one_layer"); dao.update(data); data = dao.getRequest(1); assertEquals(1, data.getResources().size()); assertEquals("one_layer", data.getResources().get(0)); } @Test public void testGetRequests() throws Exception { List<RequestData> requests = dao.getRequests(); assertEquals(testData.getData().size(), requests.size()); //assertCovered(requests, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); assertCovered(requests, range(1,20)); } int[] range(int low, int high) { int[] nums = new int[high - low + 1]; for (int i = 0; i < nums.length; i++) { nums[i] = low + i; } return nums; } @Test public void testGetRequestsVisitor() throws Exception { final List<RequestData> datas = new ArrayList(); dao.getRequests(new Query().filter("path", "/seven", Comparison.EQ), new RequestDataVisitor() { public void visit(RequestData data, Object... aggregates) { datas.add(data); } }); assertCoveredInOrder(datas, 7); } @Test public void testGetRequestById() throws Exception { assertTrue(dao.getRequest(8) != null); assertEquals("/eight", dao.getRequest(8).getPath()); } @Test public void testGetRequestsSorted() throws Exception { assertCoveredInOrder(dao.getRequests(new Query().filter("id", 11l, Comparison.LT) .sort("path", SortOrder.ASC)), 8, 5, 4, 9, 1, 7, 6, 10, 3, 2); } @Test public void testGetRequestsBetween() throws Exception { List<RequestData> datas = dao.getRequests(new Query().between( toDate("2010-07-23T15:55:00"), toDate("2010-07-23T16:17:00"))); assertCoveredInOrder(datas, 6, 5, 4); } @Test public void testGetRequestsBetween2() throws Exception { //test that the query is inclusive, and test sorting List<RequestData> datas = dao.getRequests(new Query().between( toDate("2010-07-23T15:56:44"), toDate("2010-07-23T16:16:44")) .sort("startTime", SortOrder.ASC)); assertCoveredInOrder(datas, 4, 5, 6); } @Test public void testGetRequestsPaged() throws Exception { List<RequestData> datas = dao.getRequests( new Query().page(5l, 2l).sort("startTime", SortOrder.ASC)); assertCoveredInOrder(datas, 6, 7); } @Test public void testGetRequestsFilter() throws Exception { assertCoveredInOrder( dao.getRequests(new Query().filter("path", "/seven", Comparison.EQ)), 7); } @Test public void testGetRequestsFilterNull() throws Exception { assertEquals(0, dao.getRequests(new Query().filter("path", null, Comparison.EQ)).size()); assertEquals(testData.getData().size(), dao.getRequests(new Query().filter("path", null, Comparison.NEQ)).size()); } @Test public void testGetRequestsFilterIN() throws Exception { List<RequestData> datas = dao.getRequests( new Query().filter("path", Arrays.asList("/two", "/seven"), Comparison.IN )); assertCovered(datas, 2, 7); } @Test public void testGetRequestsFilterIN2() throws Exception { List<RequestData> datas = dao.getRequests( new Query().filter( "status", Arrays.asList(Status.RUNNING, Status.WAITING), Comparison.IN )); assertCovered(datas, 1, 2, 5, 6, 10, 11, 12, 15, 16, 20); } @Test public void testGetCount() throws Exception { assertEquals(4, dao.getCount(new Query().filter("path","/foo", Comparison.EQ))); } @Test public void testGetIterator() throws Exception { Iterator<RequestData> it = dao.getIterator( new Query().filter("path", Arrays.asList("/two", "/seven"), Comparison.IN )); assertTrue(it.hasNext()); RequestData data = it.next(); assertEquals("/two", data.getPath()); assertTrue(it.hasNext()); data = it.next(); assertEquals("/seven", data.getPath()); assertFalse(it.hasNext()); } }