MsgPack and BSON Response writer.
This commit is contained in:
+120
@@ -0,0 +1,120 @@
|
||||
package ch.psi.daq.test.queryrest.controller;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Test;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.test.web.servlet.MvcResult;
|
||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
|
||||
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import ch.psi.daq.common.time.TimeUtils;
|
||||
import ch.psi.daq.domain.DataEvent;
|
||||
import ch.psi.daq.domain.backend.Backend;
|
||||
import ch.psi.daq.domain.config.DomainConfig;
|
||||
import ch.psi.daq.domain.json.ChannelEventTableImpl;
|
||||
import ch.psi.daq.domain.query.DAQQuery;
|
||||
import ch.psi.daq.domain.query.mapping.Mapping;
|
||||
import ch.psi.daq.domain.query.operation.QueryField;
|
||||
import ch.psi.daq.domain.query.response.Response;
|
||||
import ch.psi.daq.domain.request.range.RequestRangePulseId;
|
||||
import ch.psi.daq.test.queryrest.AbstractDaqRestTest;
|
||||
|
||||
/**
|
||||
* Tests the {@link DaqController} implementation.
|
||||
*/
|
||||
public abstract class AbstractQueryRestControllerTableTest extends AbstractDaqRestTest {
|
||||
|
||||
public static final String TEST_CHANNEL_01 = "testChannel1";
|
||||
public static final String TEST_CHANNEL_02 = "testChannel2";
|
||||
public static final String TEST_CHANNEL_WAVEFORM_01 = "testChannelWaveform1";
|
||||
public static final String TEST_CHANNEL_WAVEFORM_02 = "testChannelWaveform2";
|
||||
public static final String[] TEST_CHANNEL_NAMES = new String[] {TEST_CHANNEL_01, TEST_CHANNEL_02};
|
||||
|
||||
@Resource(name = DomainConfig.BEAN_NAME_BACKEND_DEFAULT)
|
||||
private Backend backend;
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {}
|
||||
|
||||
protected abstract ObjectMapper getResponseMapper();
|
||||
|
||||
protected abstract Response getResponse();
|
||||
|
||||
@Test
|
||||
public void testPulseRangeQuery() throws Exception {
|
||||
DAQQuery request = new DAQQuery(
|
||||
new RequestRangePulseId(
|
||||
100,
|
||||
101),
|
||||
TEST_CHANNEL_NAMES);
|
||||
request.setMapping(new Mapping());
|
||||
request.addField(QueryField.pulseId);
|
||||
request.addField(QueryField.globalSeconds);
|
||||
request.addField(QueryField.globalMillis);
|
||||
request.addField(QueryField.iocSeconds);
|
||||
request.addField(QueryField.iocMillis);
|
||||
request.addField(QueryField.value);
|
||||
request.setResponse(getResponse());
|
||||
|
||||
String content = mapper.writeValueAsString(request);
|
||||
System.out.println(content);
|
||||
|
||||
MvcResult result = this.mockMvc
|
||||
.perform(MockMvcRequestBuilders
|
||||
.post(DomainConfig.PATH_QUERY)
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(content))
|
||||
.andDo(MockMvcResultHandlers.print())
|
||||
.andExpect(MockMvcResultMatchers.status().isOk())
|
||||
.andReturn();
|
||||
|
||||
byte[] responseBytes = result.getResponse().getContentAsByteArray();
|
||||
System.out.println("ResponseSize: "+responseBytes.length);
|
||||
ChannelEventTableImpl table = getResponseMapper().readValue(responseBytes, ChannelEventTableImpl.class);
|
||||
|
||||
assertEquals(2, table.size());
|
||||
List<DataEvent> events = table.getEvents(0).collect(Collectors.toList());
|
||||
assertEquals(2, events.size());
|
||||
DataEvent event = events.get(0);
|
||||
assertEquals(TEST_CHANNEL_01, event.getChannel());
|
||||
assertEquals(Backend.SF_DATABUFFER, event.getBackend());
|
||||
assertEquals(100, event.getPulseId());
|
||||
assertEquals(TimeUtils.getTime(1, 0), event.getGlobalTime());
|
||||
assertEquals(TimeUtils.getTime(1, 0), event.getIocTime());
|
||||
assertEquals(100, event.getValue(Number.class).longValue());
|
||||
event = events.get(1);
|
||||
assertEquals(TEST_CHANNEL_02, event.getChannel());
|
||||
assertEquals(Backend.SF_DATABUFFER, event.getBackend());
|
||||
assertEquals(100, event.getPulseId());
|
||||
assertEquals(TimeUtils.getTime(1, 0), event.getGlobalTime());
|
||||
assertEquals(TimeUtils.getTime(1, 0), event.getIocTime());
|
||||
assertEquals(100, event.getValue(Number.class).longValue());
|
||||
|
||||
events = table.getEvents(1).collect(Collectors.toList());
|
||||
assertEquals(2, events.size());
|
||||
event = events.get(0);
|
||||
assertEquals(TEST_CHANNEL_01, event.getChannel());
|
||||
assertEquals(Backend.SF_DATABUFFER, event.getBackend());
|
||||
assertEquals(101, event.getPulseId());
|
||||
assertEquals(TimeUtils.getTime(1, 10000000), event.getGlobalTime());
|
||||
assertEquals(TimeUtils.getTime(1, 10000000), event.getIocTime());
|
||||
assertEquals(101, event.getValue(Number.class).longValue());
|
||||
event = events.get(1);
|
||||
assertEquals(TEST_CHANNEL_02, event.getChannel());
|
||||
assertEquals(Backend.SF_DATABUFFER, event.getBackend());
|
||||
assertEquals(101, event.getPulseId());
|
||||
assertEquals(TimeUtils.getTime(1, 10000000), event.getGlobalTime());
|
||||
assertEquals(TimeUtils.getTime(1, 10000000), event.getIocTime());
|
||||
assertEquals(101, event.getValue(Number.class).longValue());
|
||||
}
|
||||
}
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
package ch.psi.daq.test.queryrest.controller;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Test;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.test.web.servlet.MvcResult;
|
||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
|
||||
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import ch.psi.daq.common.time.TimeUtils;
|
||||
import ch.psi.daq.domain.DataEvent;
|
||||
import ch.psi.daq.domain.backend.Backend;
|
||||
import ch.psi.daq.domain.config.DomainConfig;
|
||||
import ch.psi.daq.domain.json.ChannelEventsImpl;
|
||||
import ch.psi.daq.domain.json.ChannelEventsList;
|
||||
import ch.psi.daq.domain.query.DAQQuery;
|
||||
import ch.psi.daq.domain.query.operation.QueryField;
|
||||
import ch.psi.daq.domain.query.response.Response;
|
||||
import ch.psi.daq.domain.request.range.RequestRangePulseId;
|
||||
import ch.psi.daq.test.queryrest.AbstractDaqRestTest;
|
||||
|
||||
/**
|
||||
* Tests the {@link DaqController} implementation.
|
||||
*/
|
||||
public abstract class AbstractQueryRestControllerTest extends AbstractDaqRestTest {
|
||||
|
||||
public static final String TEST_CHANNEL_01 = "testChannel1";
|
||||
public static final String TEST_CHANNEL_02 = "testChannel2";
|
||||
public static final String TEST_CHANNEL_WAVEFORM_01 = "testChannelWaveform1";
|
||||
public static final String[] TEST_CHANNEL_NAMES = new String[] {TEST_CHANNEL_01, TEST_CHANNEL_02};
|
||||
|
||||
@Resource(name = DomainConfig.BEAN_NAME_BACKEND_DEFAULT)
|
||||
private Backend backend;
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {}
|
||||
|
||||
protected abstract ObjectMapper getResponseMapper();
|
||||
|
||||
protected abstract Response getResponse();
|
||||
|
||||
@Test
|
||||
public void testPulseRangeQuery() throws Exception {
|
||||
DAQQuery request = new DAQQuery(
|
||||
new RequestRangePulseId(
|
||||
100,
|
||||
101),
|
||||
TEST_CHANNEL_NAMES);
|
||||
request.addField(QueryField.pulseId);
|
||||
request.addField(QueryField.globalSeconds);
|
||||
request.addField(QueryField.globalMillis);
|
||||
request.addField(QueryField.iocSeconds);
|
||||
request.addField(QueryField.iocMillis);
|
||||
request.addField(QueryField.value);
|
||||
request.setResponse(getResponse());
|
||||
|
||||
String content = mapper.writeValueAsString(request);
|
||||
System.out.println(content);
|
||||
|
||||
MvcResult result = this.mockMvc
|
||||
.perform(MockMvcRequestBuilders
|
||||
.post(DomainConfig.PATH_QUERY)
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(content))
|
||||
.andDo(MockMvcResultHandlers.print())
|
||||
.andExpect(MockMvcResultMatchers.status().isOk())
|
||||
.andReturn();
|
||||
|
||||
byte[] responseBytes = result.getResponse().getContentAsByteArray();
|
||||
System.out.println("ResponseSize: "+responseBytes.length);
|
||||
ChannelEventsList eventsList = getResponseMapper().readValue(responseBytes, ChannelEventsList.class);
|
||||
|
||||
assertEquals(2, eventsList.size());
|
||||
ChannelEventsImpl chEvents = eventsList.get(0);
|
||||
assertEquals(TEST_CHANNEL_01, chEvents.getChannel().getName());
|
||||
assertEquals(Backend.SF_DATABUFFER, chEvents.getChannel().getBackend());
|
||||
List<DataEvent> events = chEvents.getEvents().collect(Collectors.toList());
|
||||
assertEquals(2, events.size());
|
||||
DataEvent event = events.get(0);
|
||||
assertEquals(TEST_CHANNEL_01, event.getChannel());
|
||||
assertEquals(Backend.SF_DATABUFFER, event.getBackend());
|
||||
assertEquals(100, event.getPulseId());
|
||||
assertEquals(TimeUtils.getTime(1, 0), event.getGlobalTime());
|
||||
assertEquals(TimeUtils.getTime(1, 0), event.getIocTime());
|
||||
assertEquals(100, event.getValue(Number.class).longValue());
|
||||
event = events.get(1);
|
||||
assertEquals(TEST_CHANNEL_01, event.getChannel());
|
||||
assertEquals(Backend.SF_DATABUFFER, event.getBackend());
|
||||
assertEquals(101, event.getPulseId());
|
||||
assertEquals(TimeUtils.getTime(1, 10000000), event.getGlobalTime());
|
||||
assertEquals(TimeUtils.getTime(1, 10000000), event.getIocTime());
|
||||
assertEquals(101, event.getValue(Number.class).longValue());
|
||||
|
||||
chEvents = eventsList.get(1);
|
||||
assertEquals(TEST_CHANNEL_02, chEvents.getChannel().getName());
|
||||
assertEquals(Backend.SF_DATABUFFER, chEvents.getChannel().getBackend());
|
||||
events = chEvents.getEvents().collect(Collectors.toList());
|
||||
assertEquals(2, events.size());
|
||||
event = events.get(0);
|
||||
assertEquals(TEST_CHANNEL_02, event.getChannel());
|
||||
assertEquals(Backend.SF_DATABUFFER, event.getBackend());
|
||||
assertEquals(100, event.getPulseId());
|
||||
assertEquals(TimeUtils.getTime(1, 0), event.getGlobalTime());
|
||||
assertEquals(TimeUtils.getTime(1, 0), event.getIocTime());
|
||||
assertEquals(100, event.getValue(Number.class).longValue());
|
||||
event = events.get(1);
|
||||
assertEquals(TEST_CHANNEL_02, event.getChannel());
|
||||
assertEquals(Backend.SF_DATABUFFER, event.getBackend());
|
||||
assertEquals(101, event.getPulseId());
|
||||
assertEquals(TimeUtils.getTime(1, 10000000), event.getGlobalTime());
|
||||
assertEquals(TimeUtils.getTime(1, 10000000), event.getIocTime());
|
||||
assertEquals(101, event.getValue(Number.class).longValue());
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
package ch.psi.daq.test.queryrest.controller;
|
||||
|
||||
import org.junit.After;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import ch.psi.daq.domain.query.response.Response;
|
||||
import ch.psi.daq.queryrest.response.bson.BSONHTTPResponse;
|
||||
|
||||
import de.undercouch.bson4jackson.BsonFactory;
|
||||
|
||||
/**
|
||||
* Tests the {@link DaqController} implementation.
|
||||
*/
|
||||
public class BsonQueryRestControllerTableTest extends AbstractQueryRestControllerTableTest {
|
||||
|
||||
private ObjectMapper responseMapper = new ObjectMapper(new BsonFactory());
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {}
|
||||
|
||||
@Override
|
||||
protected ObjectMapper getResponseMapper(){
|
||||
return responseMapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Response getResponse() {
|
||||
return new BSONHTTPResponse();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package ch.psi.daq.test.queryrest.controller;
|
||||
|
||||
import org.junit.After;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import ch.psi.daq.domain.query.response.Response;
|
||||
import ch.psi.daq.queryrest.response.bson.BSONHTTPResponse;
|
||||
|
||||
import de.undercouch.bson4jackson.BsonFactory;
|
||||
|
||||
/**
|
||||
* Tests the {@link DaqController} implementation.
|
||||
*/
|
||||
public class BsonQueryRestControllerTest extends AbstractQueryRestControllerTest {
|
||||
|
||||
private ObjectMapper responseMapper = new ObjectMapper(new BsonFactory());
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {}
|
||||
|
||||
@Override
|
||||
protected ObjectMapper getResponseMapper(){
|
||||
return responseMapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Response getResponse() {
|
||||
return new BSONHTTPResponse();
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -44,7 +44,7 @@ import ch.psi.daq.test.queryrest.AbstractDaqRestTest;
|
||||
/**
|
||||
* Tests the {@link DaqController} implementation.
|
||||
*/
|
||||
public class QueryRestControllerCsvTest extends AbstractDaqRestTest {
|
||||
public class CSVQueryRestControllerTest extends AbstractDaqRestTest {
|
||||
|
||||
public static final String TEST_CHANNEL = "testChannel";
|
||||
public static final String TEST_CHANNEL_01 = TEST_CHANNEL + "1";
|
||||
+1
-1
@@ -41,7 +41,7 @@ import ch.psi.daq.test.queryrest.AbstractDaqRestTest;
|
||||
/**
|
||||
* Tests the {@link DaqController} implementation.
|
||||
*/
|
||||
public class QueryRestControllerJsonTableTest extends AbstractDaqRestTest {
|
||||
public class JsonQueryRestControllerTableTest extends AbstractDaqRestTest {
|
||||
|
||||
public static final String TEST_CHANNEL_01 = "testChannel1";
|
||||
public static final String TEST_CHANNEL_02 = "testChannel2";
|
||||
+1
-1
@@ -38,7 +38,7 @@ import ch.psi.daq.test.queryrest.AbstractDaqRestTest;
|
||||
/**
|
||||
* Tests the {@link DaqController} implementation.
|
||||
*/
|
||||
public class QueryRestControllerJsonTest extends AbstractDaqRestTest {
|
||||
public class JsonQueryRestControllerTest extends AbstractDaqRestTest {
|
||||
|
||||
public static final String TEST_CHANNEL_01 = "testChannel1";
|
||||
public static final String TEST_CHANNEL_02 = "testChannel2";
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package ch.psi.daq.test.queryrest.controller;
|
||||
|
||||
import org.junit.After;
|
||||
import org.msgpack.jackson.dataformat.MessagePackFactory;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import ch.psi.daq.domain.query.response.Response;
|
||||
import ch.psi.daq.queryrest.response.msgpack.MsgPackHTTPResponse;
|
||||
|
||||
/**
|
||||
* Tests the {@link DaqController} implementation.
|
||||
*/
|
||||
public class MsgPackQueryRestControllerTableTest extends AbstractQueryRestControllerTableTest {
|
||||
|
||||
private ObjectMapper responseMapper = new ObjectMapper(new MessagePackFactory());
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {}
|
||||
|
||||
@Override
|
||||
protected ObjectMapper getResponseMapper(){
|
||||
return responseMapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Response getResponse() {
|
||||
return new MsgPackHTTPResponse();
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package ch.psi.daq.test.queryrest.controller;
|
||||
|
||||
import org.junit.After;
|
||||
import org.msgpack.jackson.dataformat.MessagePackFactory;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import ch.psi.daq.domain.query.response.Response;
|
||||
import ch.psi.daq.queryrest.response.msgpack.MsgPackHTTPResponse;
|
||||
|
||||
/**
|
||||
* Tests the {@link DaqController} implementation.
|
||||
*/
|
||||
public class MsgPackQueryRestControllerTest extends AbstractQueryRestControllerTest {
|
||||
|
||||
private ObjectMapper responseMapper = new ObjectMapper(new MessagePackFactory());
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {}
|
||||
|
||||
@Override
|
||||
protected ObjectMapper getResponseMapper(){
|
||||
return responseMapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Response getResponse() {
|
||||
return new MsgPackHTTPResponse();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user