From f7a337c3c9b169868a6f911270e9d288dc968636 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Wed, 17 Aug 2022 08:19:27 +0200 Subject: Add session id to response for prepare and activate requests Adding session id, as documented in the API docs --- .../http/v2/response/SessionActiveResponse.java | 1 + .../SessionPrepareAndActivateResponse.java | 1 + .../http/v2/response/SessionPrepareResponse.java | 1 + .../server/http/v2/SessionActiveHandlerTest.java | 5 ++++- .../server/http/v2/SessionPrepareHandlerTest.java | 23 ++++++++-------------- 5 files changed, 15 insertions(+), 16 deletions(-) (limited to 'configserver') diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionActiveResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionActiveResponse.java index 55e640d4ec7..0c8c8946cbc 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionActiveResponse.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionActiveResponse.java @@ -18,6 +18,7 @@ public class SessionActiveResponse extends SlimeJsonResponse { Cursor root = metaData.get(); root.setString("tenant", tenantName.value()); + root.setString("session-id", Long.toString(sessionId)); root.setString("message", message); root.setString("url", "http://" + request.getHost() + ":" + request.getPort() + "/application/v2/tenant/" + tenantName + diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareAndActivateResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareAndActivateResponse.java index e436675fb59..617df3868ab 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareAndActivateResponse.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareAndActivateResponse.java @@ -25,6 +25,7 @@ public class SessionPrepareAndActivateResponse extends SlimeJsonResponse { Cursor root = slime.get(); root.setString("tenant", tenantName.value()); + root.setString("session-id", Long.toString(result.sessionId())); root.setString("url", "http://" + request.getHost() + ":" + request.getPort() + "/application/v2/tenant/" + tenantName + "/application/" + applicationId.application().value() + diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareResponse.java index 563f50d0012..ac745f833f9 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareResponse.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareResponse.java @@ -31,6 +31,7 @@ public class SessionPrepareResponse extends SlimeJsonResponse { Cursor root = deployLog.get().type() != Type.NIX ? deployLog.get() : deployLog.setObject(); root.setString("tenant", tenantName.value()); + root.setString("session-id", Long.toString(sessionId)); root.setString("activate", "http://" + request.getHost() + ":" + request.getPort() + "/application/v2/tenant/" + tenantName.value() + "/session/" + sessionId + "/active"); root.setString("message", "Session " + sessionId + " for tenant '" + tenantName.value() + "' prepared."); diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java index 8638a29cf75..1c71ef0b7fb 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java @@ -155,7 +155,10 @@ public class SessionActiveHandlerTest { private void assertActivationMessageOK(ActivateRequest activateRequest, String message) throws IOException { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); new JsonFormat(true).encode(byteArrayOutputStream, activateRequest.getMetaData().getSlime()); - assertTrue(message.contains("\"tenant\":\"" + tenantName + "\",\"message\":\"Session " + activateRequest.getSessionId() + activatedMessage)); + long sessionId = activateRequest.getSessionId(); + assertTrue(message.contains("\"tenant\":\"" + tenantName)); + assertTrue(message.contains("\"session-id\":\"" + sessionId)); + assertTrue(message.contains("\"message\":\"Session " + sessionId + activatedMessage)); assertTrue(message.contains("/application/v2/tenant/" + tenantName + "/application/" + appName + "/environment/" + "prod" + diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java index 66da009946e..2b07cffffce 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java @@ -61,7 +61,6 @@ public class SessionPrepareHandlerTest extends SessionHandlerTest { private ConfigserverConfig configserverConfig; private String preparedMessage = " prepared.\"}"; - private String tenantMessage = ""; private TenantRepository tenantRepository; @Rule @@ -90,7 +89,6 @@ public class SessionPrepareHandlerTest extends SessionHandlerTest { .build(); pathPrefix = "/application/v2/tenant/" + tenant + "/session/"; preparedMessage = " for tenant '" + tenant + "' prepared.\""; - tenantMessage = ",\"tenant\":\"" + tenant + "\""; } @Test @@ -123,13 +121,16 @@ public class SessionPrepareHandlerTest extends SessionHandlerTest { } @Test - public void require_that_activate_url_is_returned_on_success() throws Exception { + public void require_that_response_has_all_fields() throws Exception { long sessionId = createSession(applicationId()); HttpResponse response = request(HttpRequest.Method.PUT, sessionId); assertNotNull(response); assertEquals(OK, response.getStatus()); - assertResponseContains(response, "\"activate\":\"http://foo:1337" + pathPrefix + sessionId + - "/active\",\"message\":\"Session " + sessionId + preparedMessage); + assertResponseContains(response, "\"activate\":\"http://foo:1337" + pathPrefix + sessionId + "/active\""); + assertResponseContains(response, "\"message\":\"Session " + sessionId + preparedMessage); + assertResponseContains(response, "\"tenant\":\"" + tenant + "\""); + assertResponseContains(response, "\"session-id\":\"" + sessionId + "\""); + assertResponseContains(response, "\"log\":[]"); } @Test @@ -185,15 +186,6 @@ public class SessionPrepareHandlerTest extends SessionHandlerTest { "Session 9999 was not found"); } - @Test - public void require_that_tenant_is_in_response() throws Exception { - long sessionId = createSession(applicationId()); - HttpResponse response = request(HttpRequest.Method.PUT, sessionId); - assertNotNull(response); - assertEquals(OK, response.getStatus()); - assertResponseContains(response, tenantMessage); - } - @Test public void require_that_preparing_with_multiple_tenants_work() throws Exception { SessionHandler handler = createHandler(); @@ -307,7 +299,8 @@ public class SessionPrepareHandlerTest extends SessionHandlerTest { } private static void assertResponseContains(HttpResponse response, String string) throws IOException { - assertTrue(SessionHandlerTest.getRenderedString(response).contains(string)); + String s = SessionHandlerTest.getRenderedString(response); + assertTrue(s, s.contains(string)); } private static void assertResponseNotContains(HttpResponse response, String string) throws IOException { -- cgit v1.2.3