blob: c8cf6916fc9c8bced1c325af14e03c9e4c76953b [file] [log] [blame]
Eliza Margaretha38a94662014-11-20 13:48:00 +00001package de.ids_mannheim.korap.response;
Nils Diewaldc471b182014-11-19 22:51:15 +00002
3import java.io.*;
4
5import de.ids_mannheim.korap.response.Messages;
6import de.ids_mannheim.korap.response.Notifications;
Nils Diewald0881e242015-02-27 17:31:01 +00007import de.ids_mannheim.korap.response.Response;
Nils Diewaldc471b182014-11-19 22:51:15 +00008
9import com.fasterxml.jackson.databind.ObjectMapper;
10import com.fasterxml.jackson.databind.JsonNode;
Akron91c60112015-09-24 22:05:40 +020011import com.fasterxml.jackson.databind.node.ObjectNode;
Nils Diewaldc471b182014-11-19 22:51:15 +000012
13import static org.junit.Assert.*;
14import org.junit.Test;
15import org.junit.Ignore;
16import org.junit.runner.RunWith;
17import org.junit.runners.JUnit4;
18
19@RunWith(JUnit4.class)
20public class TestResponse {
21
22 ObjectMapper mapper = new ObjectMapper();
23
Nils Diewaldbb33da22015-03-04 16:24:25 +000024
Nils Diewaldc471b182014-11-19 22:51:15 +000025 @Test
26 public void testResponse () throws IOException {
Nils Diewaldbb33da22015-03-04 16:24:25 +000027 Response resp = new Response();
Akron74992bc2015-08-05 22:30:57 +020028 JsonNode respJson = mapper.readTree(resp.toJsonString());
Akron09ae3732015-08-13 20:56:20 +020029 assertEquals(
30 "http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
31 respJson.at("/@context").asText());
Akron74992bc2015-08-05 22:30:57 +020032 assertEquals("", respJson.at("/meta").asText());
33
Nils Diewaldbb33da22015-03-04 16:24:25 +000034 resp.setVersion("0.24");
Nils Diewald94870ae2014-12-09 14:35:29 +000035 resp.setNode("Tanja");
Nils Diewaldbb33da22015-03-04 16:24:25 +000036 assertEquals("0.24", resp.getVersion());
Nils Diewald94870ae2014-12-09 14:35:29 +000037 assertEquals("Tanja", resp.getNode());
Nils Diewaldc471b182014-11-19 22:51:15 +000038
Nils Diewald94870ae2014-12-09 14:35:29 +000039 assertFalse(resp.hasWarnings());
40 assertFalse(resp.hasMessages());
41 assertFalse(resp.hasErrors());
Nils Diewaldc471b182014-11-19 22:51:15 +000042
Akron74992bc2015-08-05 22:30:57 +020043 respJson = mapper.readTree(resp.toJsonString());
Akrond504f212015-06-20 00:27:54 +020044 assertEquals("0.24", respJson.at("/meta/version").asText());
45 assertEquals("Tanja", respJson.at("/meta/node").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +000046
Nils Diewald94870ae2014-12-09 14:35:29 +000047 resp.setName("Index");
48 respJson = mapper.readTree(resp.toJsonString());
Akrond504f212015-06-20 00:27:54 +020049 assertEquals("Index-0.24", respJson.at("/meta/version").asText());
50 assertEquals("Tanja", respJson.at("/meta/node").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +000051
Nils Diewald94870ae2014-12-09 14:35:29 +000052 resp.setBenchmark("took a while");
53 resp.setListener("localhost:3000");
54 respJson = mapper.readTree(resp.toJsonString());
Akrond504f212015-06-20 00:27:54 +020055 assertEquals("localhost:3000", respJson.at("/meta/listener").asText());
56 assertEquals("took a while", respJson.at("/meta/benchmark").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +000057 };
58
Nils Diewaldbb33da22015-03-04 16:24:25 +000059
Nils Diewaldc471b182014-11-19 22:51:15 +000060 @Test
61 public void testResponseNotifications () throws IOException {
Nils Diewald0881e242015-02-27 17:31:01 +000062 Response resp = new Response();
Akron74992bc2015-08-05 22:30:57 +020063 JsonNode respJson = mapper.readTree(resp.toJsonString());
Akron09ae3732015-08-13 20:56:20 +020064 assertEquals(
65 "http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
66 respJson.at("/@context").asText());
Akron74992bc2015-08-05 22:30:57 +020067 assertEquals("", respJson.at("/meta").asText());
Nils Diewald94870ae2014-12-09 14:35:29 +000068 resp.setVersion("0.24");
69 resp.setNode("Tanja");
Nils Diewaldbb33da22015-03-04 16:24:25 +000070 assertEquals("0.24", resp.getVersion());
Nils Diewald94870ae2014-12-09 14:35:29 +000071 assertEquals("Tanja", resp.getNode());
Nils Diewaldc471b182014-11-19 22:51:15 +000072
Nils Diewald94870ae2014-12-09 14:35:29 +000073 assertFalse(resp.hasWarnings());
74 assertFalse(resp.hasMessages());
75 assertFalse(resp.hasErrors());
Nils Diewaldc471b182014-11-19 22:51:15 +000076
Akron74992bc2015-08-05 22:30:57 +020077 respJson = mapper.readTree(resp.toJsonString());
Akrond504f212015-06-20 00:27:54 +020078 assertEquals("0.24", respJson.at("/meta/version").asText());
79 assertEquals("Tanja", respJson.at("/meta/node").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +000080
Nils Diewald94870ae2014-12-09 14:35:29 +000081 resp.addWarning(1, "Fehler 1");
82 resp.addWarning(2, "Fehler 2");
83 resp.addWarning(3, "Fehler 3");
Nils Diewaldc471b182014-11-19 22:51:15 +000084
Nils Diewald94870ae2014-12-09 14:35:29 +000085 resp.addError(4, "Fehler 4");
Nils Diewaldc471b182014-11-19 22:51:15 +000086
Nils Diewald94870ae2014-12-09 14:35:29 +000087 respJson = mapper.readTree(resp.toJsonString());
Akrond504f212015-06-20 00:27:54 +020088 assertEquals("0.24", respJson.at("/meta/version").asText());
89 assertEquals("Tanja", respJson.at("/meta/node").asText());
Nils Diewaldbb33da22015-03-04 16:24:25 +000090
Nils Diewald94870ae2014-12-09 14:35:29 +000091 assertEquals("Fehler 1", respJson.at("/warnings/0/1").asText());
92 assertEquals("Fehler 2", respJson.at("/warnings/1/1").asText());
93 assertEquals("Fehler 3", respJson.at("/warnings/2/1").asText());
94 assertEquals("Fehler 4", respJson.at("/errors/0/1").asText());
95 };
Nils Diewaldc471b182014-11-19 22:51:15 +000096
Akronbb5d1732015-06-22 01:22:40 +020097
Akrond504f212015-06-20 00:27:54 +020098 // TODO: Skip this for the moment and refactor later
99 @Ignore
Nils Diewald94870ae2014-12-09 14:35:29 +0000100 public void testResponseDeserialzation () throws IOException {
101 String jsonResponse = "{\"version\":\"0.38\"}";
Nils Diewald0881e242015-02-27 17:31:01 +0000102 Response kresp = mapper.readValue(jsonResponse, Response.class);
Nils Diewaldc99ed5b2015-01-21 22:08:53 +0000103
Nils Diewald94870ae2014-12-09 14:35:29 +0000104 assertEquals("0.38", kresp.getVersion());
105 assertNull(kresp.getName());
106 assertEquals(jsonResponse, kresp.toJsonString());
107
Akrond504f212015-06-20 00:27:54 +0200108 jsonResponse = "{\"meta\":{\"version\":\"seaweed-0.49\"}}";
Nils Diewald0881e242015-02-27 17:31:01 +0000109 kresp = mapper.readValue(jsonResponse, Response.class);
Nils Diewald94870ae2014-12-09 14:35:29 +0000110 assertEquals("0.49", kresp.getVersion());
111 assertEquals("seaweed", kresp.getName());
112 assertTrue(kresp.toJsonString().contains("seaweed-0.49"));
113
114 jsonResponse = "{\"version\":\"seaweed-\"}";
Nils Diewald0881e242015-02-27 17:31:01 +0000115 kresp = mapper.readValue(jsonResponse, Response.class);
Nils Diewald94870ae2014-12-09 14:35:29 +0000116 assertEquals("seaweed-", kresp.getVersion());
117 assertNull(kresp.getName());
118 assertTrue(kresp.toJsonString().contains("seaweed-"));
119
120 jsonResponse = "{\"timeExceeded\":true}";
Nils Diewald0881e242015-02-27 17:31:01 +0000121 kresp = mapper.readValue(jsonResponse, Response.class);
Nils Diewald94870ae2014-12-09 14:35:29 +0000122 assertTrue(kresp.hasTimeExceeded());
123 assertTrue(kresp.hasWarnings());
124
125 jsonResponse = "{\"benchmark\":\"40.5s\", \"foo\":\"bar\"}";
Nils Diewald0881e242015-02-27 17:31:01 +0000126 kresp = mapper.readValue(jsonResponse, Response.class);
Nils Diewald94870ae2014-12-09 14:35:29 +0000127 assertEquals("40.5s", kresp.getBenchmark());
128
129 jsonResponse = "{\"listener\":\"10.0.10.14:678\", \"foo\":\"bar\"}";
Nils Diewald0881e242015-02-27 17:31:01 +0000130 kresp = mapper.readValue(jsonResponse, Response.class);
Nils Diewald94870ae2014-12-09 14:35:29 +0000131 assertEquals("10.0.10.14:678", kresp.getListener());
132
133 jsonResponse = "{\"node\":\"tanja\", \"foo\":\"bar\"}";
Nils Diewald0881e242015-02-27 17:31:01 +0000134 kresp = mapper.readValue(jsonResponse, Response.class);
Nils Diewald94870ae2014-12-09 14:35:29 +0000135 assertEquals("tanja", kresp.getNode());
136
Nils Diewaldbb33da22015-03-04 16:24:25 +0000137 jsonResponse = "{\"node\":\"tanja\", \"version\":\"seaweed-0.49\", "
138 + " \"benchmark\":\"40.5s\", \"listener\":\"10.0.10.14:678\","
139 + "\"timeExceeded\":true }";
Nils Diewald0881e242015-02-27 17:31:01 +0000140 kresp = mapper.readValue(jsonResponse, Response.class);
Nils Diewald94870ae2014-12-09 14:35:29 +0000141 assertEquals("0.49", kresp.getVersion());
142 assertEquals("seaweed", kresp.getName());
143 assertEquals("40.5s", kresp.getBenchmark());
144 assertEquals("10.0.10.14:678", kresp.getListener());
145 assertEquals("tanja", kresp.getNode());
146 assertTrue(kresp.hasTimeExceeded());
147 assertTrue(kresp.hasWarnings());
148
Nils Diewaldbb33da22015-03-04 16:24:25 +0000149 jsonResponse = "{\"warnings\":[[123,\"This is a warning\"],"
150 + "[124,\"This is a second warning\"]],"
151 + "\"errors\":[[125,\"This is a single error\"]], "
152 + " \"node\":\"tanja\", \"version\":\"seaweed-0.49\", "
153 + " \"benchmark\":\"40.5s\", \"listener\":\"10.0.10.14:678\","
154 + "\"timeExceeded\":true }";
Nils Diewald0881e242015-02-27 17:31:01 +0000155 kresp = mapper.readValue(jsonResponse, Response.class);
Nils Diewald44d5fa12015-01-15 21:31:52 +0000156 assertTrue(kresp.hasWarnings());
157 assertTrue(kresp.hasErrors());
158 assertFalse(kresp.hasMessages());
159 assertEquals(kresp.getError(0).getMessage(), "This is a single error");
Nils Diewaldc99ed5b2015-01-21 22:08:53 +0000160
161 // THIS MAY BREAK!
162 assertEquals(kresp.getWarning(0).getMessage(), "This is a warning");
Nils Diewaldbb33da22015-03-04 16:24:25 +0000163 assertEquals(kresp.getWarning(1).getMessage(),
164 "This is a second warning");
Nils Diewaldc99ed5b2015-01-21 22:08:53 +0000165 assertEquals(kresp.getWarning(2).getMessage(), "Response time exceeded");
Nils Diewald44d5fa12015-01-15 21:31:52 +0000166 assertEquals("0.49", kresp.getVersion());
167 assertEquals("seaweed", kresp.getName());
168 assertEquals("40.5s", kresp.getBenchmark());
169 assertEquals("10.0.10.14:678", kresp.getListener());
170 assertEquals("tanja", kresp.getNode());
171 assertTrue(kresp.hasTimeExceeded());
Nils Diewaldc471b182014-11-19 22:51:15 +0000172 };
Akron91c60112015-09-24 22:05:40 +0200173
Akron42993552016-02-04 13:24:24 +0100174
Akron91c60112015-09-24 22:05:40 +0200175 @Test
176 public void testResponseJSONadd () throws IOException {
177 Response resp = new Response();
178 ObjectNode jNode = mapper.createObjectNode();
179 jNode.put("Hui", "works");
180 resp.addJsonNode("test", jNode);
181 JsonNode respJson = mapper.readTree(resp.toJsonString());
182
183 assertEquals(
184 "http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
185 respJson.at("/@context").asText());
186 assertEquals("works", respJson.at("/test/Hui").asText());
187 };
Nils Diewaldc471b182014-11-19 22:51:15 +0000188};