mirror of https://github.com/apache/druid.git
Add simple unit tests for QueryResource
This commit is contained in:
parent
4338af0e3f
commit
458236c8fd
|
@ -0,0 +1,153 @@
|
||||||
|
/*
|
||||||
|
* Druid - a distributed column store.
|
||||||
|
* Copyright (C) 2012, 2013, 2014 Metamarkets Group Inc.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.druid.server;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.metamx.common.guava.Sequence;
|
||||||
|
import com.metamx.common.guava.Sequences;
|
||||||
|
import com.metamx.emitter.service.ServiceEmitter;
|
||||||
|
import io.druid.jackson.DefaultObjectMapper;
|
||||||
|
import io.druid.query.Query;
|
||||||
|
import io.druid.query.QueryRunner;
|
||||||
|
import io.druid.query.QuerySegmentWalker;
|
||||||
|
import io.druid.query.SegmentDescriptor;
|
||||||
|
import io.druid.server.initialization.ServerConfig;
|
||||||
|
import io.druid.server.log.NoopRequestLogger;
|
||||||
|
import io.druid.server.metrics.NoopServiceEmitter;
|
||||||
|
import org.easymock.EasyMock;
|
||||||
|
import org.joda.time.Interval;
|
||||||
|
import org.joda.time.Period;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.ws.rs.core.MediaType;
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class QueryResourceTest
|
||||||
|
{
|
||||||
|
private static final ObjectMapper jsonMapper = new DefaultObjectMapper();
|
||||||
|
public static final ServerConfig serverConfig = new ServerConfig(){
|
||||||
|
@Override
|
||||||
|
public int getNumThreads(){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Period getMaxIdleTime(){
|
||||||
|
return Period.seconds(1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
private final HttpServletRequest testServletRequest = EasyMock.createMock(HttpServletRequest.class);
|
||||||
|
public static final QuerySegmentWalker testSegmentWalker = new QuerySegmentWalker()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public <T> QueryRunner<T> getQueryRunnerForIntervals(
|
||||||
|
Query<T> query, Iterable<Interval> intervals
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return new QueryRunner<T>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public Sequence<T> run(
|
||||||
|
Query<T> query, Map<String, Object> responseContext
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return Sequences.<T>empty();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> QueryRunner<T> getQueryRunnerForSegments(
|
||||||
|
Query<T> query, Iterable<SegmentDescriptor> specs
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return getQueryRunnerForIntervals(null, null);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final ServiceEmitter noopServiceEmitter = new NoopServiceEmitter();
|
||||||
|
@BeforeClass
|
||||||
|
public static void staticSetup(){
|
||||||
|
com.metamx.emitter.EmittingLogger.registerEmitter(noopServiceEmitter);
|
||||||
|
}
|
||||||
|
@Before
|
||||||
|
public void setup()
|
||||||
|
{
|
||||||
|
EasyMock.expect(testServletRequest.getContentType()).andReturn(MediaType.APPLICATION_JSON);
|
||||||
|
EasyMock.expect(testServletRequest.getRemoteAddr()).andReturn("localhost").anyTimes();
|
||||||
|
EasyMock.replay(testServletRequest);
|
||||||
|
}
|
||||||
|
private static final String simpleTimeSeriesQuery = "{\n"
|
||||||
|
+ " \"queryType\": \"timeseries\",\n"
|
||||||
|
+ " \"dataSource\": \"mmx_metrics\",\n"
|
||||||
|
+ " \"granularity\": \"hour\",\n"
|
||||||
|
+ " \"intervals\": [\n"
|
||||||
|
+ " \"2014-12-17/2015-12-30\"\n"
|
||||||
|
+ " ],\n"
|
||||||
|
+ " \"aggregations\": [\n"
|
||||||
|
+ " {\n"
|
||||||
|
+ " \"type\": \"count\",\n"
|
||||||
|
+ " \"name\": \"rows\"\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ " ]\n"
|
||||||
|
+ "}";
|
||||||
|
@Test
|
||||||
|
public void testGoodQuery() throws IOException
|
||||||
|
{
|
||||||
|
QueryResource queryResource = new QueryResource(
|
||||||
|
serverConfig,
|
||||||
|
jsonMapper,
|
||||||
|
jsonMapper,
|
||||||
|
testSegmentWalker,
|
||||||
|
new NoopServiceEmitter(),
|
||||||
|
new NoopRequestLogger(),
|
||||||
|
new QueryManager()
|
||||||
|
);
|
||||||
|
Response respone = queryResource.doPost(new ByteArrayInputStream(simpleTimeSeriesQuery.getBytes("UTF-8")), null /*pretty*/, testServletRequest);
|
||||||
|
Assert.assertNotNull(respone);
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testBadQuery() throws IOException
|
||||||
|
{
|
||||||
|
|
||||||
|
QueryResource queryResource = new QueryResource(
|
||||||
|
serverConfig,
|
||||||
|
jsonMapper,
|
||||||
|
jsonMapper,
|
||||||
|
testSegmentWalker,
|
||||||
|
new NoopServiceEmitter(),
|
||||||
|
new NoopRequestLogger(),
|
||||||
|
new QueryManager()
|
||||||
|
);
|
||||||
|
Response respone = queryResource.doPost(new ByteArrayInputStream("Meka Leka Hi Meka Hiney Ho".getBytes("UTF-8")), null /*pretty*/, testServletRequest);
|
||||||
|
Assert.assertNotNull(respone);
|
||||||
|
Assert.assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), respone.getStatus());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue