| Eliza Margaretha | 38a9466 | 2014-11-20 13:48:00 +0000 | [diff] [blame] | 1 | package de.ids_mannheim.korap.response; |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 2 | |
| 3 | import java.io.*; |
| 4 | |
| 5 | import de.ids_mannheim.korap.response.Messages; |
| 6 | import de.ids_mannheim.korap.response.Notifications; |
| Nils Diewald | 0881e24 | 2015-02-27 17:31:01 +0000 | [diff] [blame] | 7 | import de.ids_mannheim.korap.response.Response; |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 8 | |
| 9 | import com.fasterxml.jackson.databind.ObjectMapper; |
| 10 | import com.fasterxml.jackson.databind.JsonNode; |
| Akron | 91c6011 | 2015-09-24 22:05:40 +0200 | [diff] [blame] | 11 | import com.fasterxml.jackson.databind.node.ObjectNode; |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 12 | |
| 13 | import static org.junit.Assert.*; |
| 14 | import org.junit.Test; |
| 15 | import org.junit.Ignore; |
| 16 | import org.junit.runner.RunWith; |
| 17 | import org.junit.runners.JUnit4; |
| 18 | |
| 19 | @RunWith(JUnit4.class) |
| 20 | public class TestResponse { |
| 21 | |
| 22 | ObjectMapper mapper = new ObjectMapper(); |
| 23 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 24 | |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 25 | @Test |
| 26 | public void testResponse () throws IOException { |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 27 | Response resp = new Response(); |
| Akron | 74992bc | 2015-08-05 22:30:57 +0200 | [diff] [blame] | 28 | JsonNode respJson = mapper.readTree(resp.toJsonString()); |
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 29 | assertEquals( |
| 30 | "http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld", |
| 31 | respJson.at("/@context").asText()); |
| Akron | 74992bc | 2015-08-05 22:30:57 +0200 | [diff] [blame] | 32 | assertEquals("", respJson.at("/meta").asText()); |
| 33 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 34 | resp.setVersion("0.24"); |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 35 | resp.setNode("Tanja"); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 36 | assertEquals("0.24", resp.getVersion()); |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 37 | assertEquals("Tanja", resp.getNode()); |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 38 | |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 39 | assertFalse(resp.hasWarnings()); |
| 40 | assertFalse(resp.hasMessages()); |
| 41 | assertFalse(resp.hasErrors()); |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 42 | |
| Akron | 74992bc | 2015-08-05 22:30:57 +0200 | [diff] [blame] | 43 | respJson = mapper.readTree(resp.toJsonString()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 44 | assertEquals("0.24", respJson.at("/meta/version").asText()); |
| 45 | assertEquals("Tanja", respJson.at("/meta/node").asText()); |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 46 | |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 47 | resp.setName("Index"); |
| 48 | respJson = mapper.readTree(resp.toJsonString()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 49 | assertEquals("Index-0.24", respJson.at("/meta/version").asText()); |
| 50 | assertEquals("Tanja", respJson.at("/meta/node").asText()); |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 51 | |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 52 | resp.setBenchmark("took a while"); |
| 53 | resp.setListener("localhost:3000"); |
| 54 | respJson = mapper.readTree(resp.toJsonString()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 55 | assertEquals("localhost:3000", respJson.at("/meta/listener").asText()); |
| 56 | assertEquals("took a while", respJson.at("/meta/benchmark").asText()); |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 57 | }; |
| 58 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 59 | |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 60 | @Test |
| 61 | public void testResponseNotifications () throws IOException { |
| Nils Diewald | 0881e24 | 2015-02-27 17:31:01 +0000 | [diff] [blame] | 62 | Response resp = new Response(); |
| Akron | 74992bc | 2015-08-05 22:30:57 +0200 | [diff] [blame] | 63 | JsonNode respJson = mapper.readTree(resp.toJsonString()); |
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 64 | assertEquals( |
| 65 | "http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld", |
| 66 | respJson.at("/@context").asText()); |
| Akron | 74992bc | 2015-08-05 22:30:57 +0200 | [diff] [blame] | 67 | assertEquals("", respJson.at("/meta").asText()); |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 68 | resp.setVersion("0.24"); |
| 69 | resp.setNode("Tanja"); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 70 | assertEquals("0.24", resp.getVersion()); |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 71 | assertEquals("Tanja", resp.getNode()); |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 72 | |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 73 | assertFalse(resp.hasWarnings()); |
| 74 | assertFalse(resp.hasMessages()); |
| 75 | assertFalse(resp.hasErrors()); |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 76 | |
| Akron | 74992bc | 2015-08-05 22:30:57 +0200 | [diff] [blame] | 77 | respJson = mapper.readTree(resp.toJsonString()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 78 | assertEquals("0.24", respJson.at("/meta/version").asText()); |
| 79 | assertEquals("Tanja", respJson.at("/meta/node").asText()); |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 80 | |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 81 | resp.addWarning(1, "Fehler 1"); |
| 82 | resp.addWarning(2, "Fehler 2"); |
| 83 | resp.addWarning(3, "Fehler 3"); |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 84 | |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 85 | resp.addError(4, "Fehler 4"); |
| Nils Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 86 | |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 87 | respJson = mapper.readTree(resp.toJsonString()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 88 | assertEquals("0.24", respJson.at("/meta/version").asText()); |
| 89 | assertEquals("Tanja", respJson.at("/meta/node").asText()); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 90 | |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 91 | 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 Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 96 | |
| Akron | bb5d173 | 2015-06-22 01:22:40 +0200 | [diff] [blame] | 97 | |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 98 | // TODO: Skip this for the moment and refactor later |
| 99 | @Ignore |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 100 | public void testResponseDeserialzation () throws IOException { |
| 101 | String jsonResponse = "{\"version\":\"0.38\"}"; |
| Nils Diewald | 0881e24 | 2015-02-27 17:31:01 +0000 | [diff] [blame] | 102 | Response kresp = mapper.readValue(jsonResponse, Response.class); |
| Nils Diewald | c99ed5b | 2015-01-21 22:08:53 +0000 | [diff] [blame] | 103 | |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 104 | assertEquals("0.38", kresp.getVersion()); |
| 105 | assertNull(kresp.getName()); |
| 106 | assertEquals(jsonResponse, kresp.toJsonString()); |
| 107 | |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 108 | jsonResponse = "{\"meta\":{\"version\":\"seaweed-0.49\"}}"; |
| Nils Diewald | 0881e24 | 2015-02-27 17:31:01 +0000 | [diff] [blame] | 109 | kresp = mapper.readValue(jsonResponse, Response.class); |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 110 | assertEquals("0.49", kresp.getVersion()); |
| 111 | assertEquals("seaweed", kresp.getName()); |
| 112 | assertTrue(kresp.toJsonString().contains("seaweed-0.49")); |
| 113 | |
| 114 | jsonResponse = "{\"version\":\"seaweed-\"}"; |
| Nils Diewald | 0881e24 | 2015-02-27 17:31:01 +0000 | [diff] [blame] | 115 | kresp = mapper.readValue(jsonResponse, Response.class); |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 116 | assertEquals("seaweed-", kresp.getVersion()); |
| 117 | assertNull(kresp.getName()); |
| 118 | assertTrue(kresp.toJsonString().contains("seaweed-")); |
| 119 | |
| 120 | jsonResponse = "{\"timeExceeded\":true}"; |
| Nils Diewald | 0881e24 | 2015-02-27 17:31:01 +0000 | [diff] [blame] | 121 | kresp = mapper.readValue(jsonResponse, Response.class); |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 122 | assertTrue(kresp.hasTimeExceeded()); |
| 123 | assertTrue(kresp.hasWarnings()); |
| 124 | |
| 125 | jsonResponse = "{\"benchmark\":\"40.5s\", \"foo\":\"bar\"}"; |
| Nils Diewald | 0881e24 | 2015-02-27 17:31:01 +0000 | [diff] [blame] | 126 | kresp = mapper.readValue(jsonResponse, Response.class); |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 127 | assertEquals("40.5s", kresp.getBenchmark()); |
| 128 | |
| 129 | jsonResponse = "{\"listener\":\"10.0.10.14:678\", \"foo\":\"bar\"}"; |
| Nils Diewald | 0881e24 | 2015-02-27 17:31:01 +0000 | [diff] [blame] | 130 | kresp = mapper.readValue(jsonResponse, Response.class); |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 131 | assertEquals("10.0.10.14:678", kresp.getListener()); |
| 132 | |
| 133 | jsonResponse = "{\"node\":\"tanja\", \"foo\":\"bar\"}"; |
| Nils Diewald | 0881e24 | 2015-02-27 17:31:01 +0000 | [diff] [blame] | 134 | kresp = mapper.readValue(jsonResponse, Response.class); |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 135 | assertEquals("tanja", kresp.getNode()); |
| 136 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 137 | jsonResponse = "{\"node\":\"tanja\", \"version\":\"seaweed-0.49\", " |
| 138 | + " \"benchmark\":\"40.5s\", \"listener\":\"10.0.10.14:678\"," |
| 139 | + "\"timeExceeded\":true }"; |
| Nils Diewald | 0881e24 | 2015-02-27 17:31:01 +0000 | [diff] [blame] | 140 | kresp = mapper.readValue(jsonResponse, Response.class); |
| Nils Diewald | 94870ae | 2014-12-09 14:35:29 +0000 | [diff] [blame] | 141 | 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 Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 149 | 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 Diewald | 0881e24 | 2015-02-27 17:31:01 +0000 | [diff] [blame] | 155 | kresp = mapper.readValue(jsonResponse, Response.class); |
| Nils Diewald | 44d5fa1 | 2015-01-15 21:31:52 +0000 | [diff] [blame] | 156 | assertTrue(kresp.hasWarnings()); |
| 157 | assertTrue(kresp.hasErrors()); |
| 158 | assertFalse(kresp.hasMessages()); |
| 159 | assertEquals(kresp.getError(0).getMessage(), "This is a single error"); |
| Nils Diewald | c99ed5b | 2015-01-21 22:08:53 +0000 | [diff] [blame] | 160 | |
| 161 | // THIS MAY BREAK! |
| 162 | assertEquals(kresp.getWarning(0).getMessage(), "This is a warning"); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 163 | assertEquals(kresp.getWarning(1).getMessage(), |
| 164 | "This is a second warning"); |
| Nils Diewald | c99ed5b | 2015-01-21 22:08:53 +0000 | [diff] [blame] | 165 | assertEquals(kresp.getWarning(2).getMessage(), "Response time exceeded"); |
| Nils Diewald | 44d5fa1 | 2015-01-15 21:31:52 +0000 | [diff] [blame] | 166 | 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 Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 172 | }; |
| Akron | 91c6011 | 2015-09-24 22:05:40 +0200 | [diff] [blame] | 173 | |
| Akron | 4299355 | 2016-02-04 13:24:24 +0100 | [diff] [blame] | 174 | |
| Akron | 91c6011 | 2015-09-24 22:05:40 +0200 | [diff] [blame] | 175 | @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 Diewald | c471b18 | 2014-11-19 22:51:15 +0000 | [diff] [blame] | 188 | }; |