summaryrefslogtreecommitdiffstats
path: root/configserver/src/test/java
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2021-09-10 11:13:09 +0200
committerHarald Musum <musum@yahooinc.com>2021-09-10 11:13:09 +0200
commitf8347a1f41341bd87adf40416a7afa2177d01408 (patch)
treed926b94578ac11685093082b53c21d1ef6c0f439 /configserver/src/test/java
parent01513fb2bef0d0b3021ede9857604b3d8b19cf31 (diff)
Add checksum types in response based on types in request
Return response with same type as in request, except when both are empty, then return both types. Note: No clients have started sending requests with only xxhash64 checksum yet.
Diffstat (limited to 'configserver/src/test/java')
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactoryTest.java56
2 files changed, 55 insertions, 5 deletions
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
index 41af0296534..28d50a5396e 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
@@ -26,6 +26,7 @@ import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.config.GetConfigRequest;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.protocol.ConfigResponse;
import com.yahoo.vespa.config.protocol.DefContent;
import com.yahoo.vespa.config.protocol.VespaVersion;
@@ -810,6 +811,9 @@ public class ApplicationRepositoryTest {
@Override
public String getRequestDefMd5() { return ""; }
+ @Override
+ public PayloadChecksums configPayloadChecksums() { return PayloadChecksums.empty(); }
+
}, Optional.empty());
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactoryTest.java
index 747a0ad3241..b164c3e5cd5 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactoryTest.java
@@ -1,11 +1,16 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.yahoo.vespa.config.ConfigPayload;
+import com.yahoo.vespa.config.PayloadChecksum;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.protocol.CompressionType;
import com.yahoo.vespa.config.protocol.ConfigResponse;
+import com.yahoo.vespa.config.protocol.Payload;
import org.junit.Test;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
import static org.junit.Assert.assertEquals;
/**
@@ -13,22 +18,63 @@ import static org.junit.Assert.assertEquals;
*/
public class ConfigResponseFactoryTest {
+ private static final ConfigPayload payload = ConfigPayload.fromString("{ \"field1\": 11, \"field2\": 11 }");
+
+ private static final PayloadChecksums payloadChecksums = PayloadChecksums.fromPayload(Payload.from(payload));
+ private static final PayloadChecksums payloadChecksumsEmpty = PayloadChecksums.empty();
+ private static final PayloadChecksums payloadChecksumsOnlyMd5 =
+ PayloadChecksums.from(PayloadChecksum.fromPayload(Payload.from(payload), MD5));
+ private static final PayloadChecksums payloadChecksumsOnlyXxhash64 =
+ PayloadChecksums.from(PayloadChecksum.fromPayload(Payload.from(payload), XXHASH64));
+
@Test
public void testUncompressedFactory() {
UncompressedConfigResponseFactory responseFactory = new UncompressedConfigResponseFactory();
- ConfigResponse response = responseFactory.createResponse(ConfigPayload.empty().toUtf8Array(true), 3, false);
+ ConfigResponse response = responseFactory.createResponse(payload.toUtf8Array(true), 3, false, payloadChecksums);
assertEquals(CompressionType.UNCOMPRESSED, response.getCompressionInfo().getCompressionType());
assertEquals(3L,response.getGeneration());
- assertEquals(2, response.getPayload().getByteLength());
+ assertEquals(25, response.getPayload().getByteLength());
+ assertEquals(payloadChecksums, response.getPayloadChecksums());
}
@Test
public void testLZ4CompressedFactory() {
+ // Both checksums in request
+ {
+ ConfigResponse response = createResponse(payloadChecksums);
+ assertEquals(payloadChecksums, response.getPayloadChecksums());
+ }
+
+ // No checksums in request (empty checksums), both checksums should be in response
+ {
+ ConfigResponse response = createResponse(payloadChecksumsEmpty);
+ assertEquals(payloadChecksums.getForType(MD5), response.getPayloadChecksums().getForType(MD5));
+ assertEquals(payloadChecksums.getForType(XXHASH64), response.getPayloadChecksums().getForType(XXHASH64));
+ }
+
+ // Only md5 checksums in request
+ {
+ ConfigResponse response = createResponse(payloadChecksumsOnlyMd5);
+ assertEquals(payloadChecksumsOnlyMd5.getForType(MD5), response.getPayloadChecksums().getForType(MD5));
+ assertEquals(payloadChecksumsOnlyMd5.getForType(XXHASH64), response.getPayloadChecksums().getForType(XXHASH64));
+ }
+
+ // Only xxhash64 checksums in request
+ {
+ ConfigResponse response = createResponse(payloadChecksumsOnlyXxhash64);
+ assertEquals(payloadChecksumsOnlyXxhash64.getForType(MD5), response.getPayloadChecksums().getForType(MD5));
+ assertEquals(payloadChecksumsOnlyXxhash64.getForType(XXHASH64), response.getPayloadChecksums().getForType(XXHASH64));
+ }
+ }
+
+ private ConfigResponse createResponse(PayloadChecksums payloadChecksums) {
LZ4ConfigResponseFactory responseFactory = new LZ4ConfigResponseFactory();
- ConfigResponse response = responseFactory.createResponse(ConfigPayload.empty().toUtf8Array(true), 3, false);
+ ConfigResponse response = responseFactory.createResponse(payload.toUtf8Array(true), 3, false, payloadChecksums);
assertEquals(CompressionType.LZ4, response.getCompressionInfo().getCompressionType());
assertEquals(3L, response.getGeneration());
- assertEquals(3, response.getPayload().getByteLength());
+ assertEquals(23, response.getPayload().getByteLength());
+
+ return response;
}
}