You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ma...@apache.org on 2023/10/12 06:24:16 UTC
[solr-sandbox] branch main updated: Add serialization unit test. (#66)
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr-sandbox.git
The following commit(s) were added to refs/heads/main by this push:
new a760a4c Add serialization unit test. (#66)
a760a4c is described below
commit a760a4caa266a21460d5976a05242dc756867ab3
Author: Andrzej BiaĆecki <ab...@sigram.com>
AuthorDate: Thu Oct 12 08:24:10 2023 +0200
Add serialization unit test. (#66)
---
crossdc-commons/build.gradle | 16 ++++++++++
.../common/MirroredSolrRequestSerializerTest.java | 36 ++++++++++++++++++++++
gradlew | 0
3 files changed, 52 insertions(+)
diff --git a/crossdc-commons/build.gradle b/crossdc-commons/build.gradle
index 57cb915..b926137 100644
--- a/crossdc-commons/build.gradle
+++ b/crossdc-commons/build.gradle
@@ -40,6 +40,22 @@ dependencies {
}
implementation 'org.apache.kafka:kafka-clients:2.8.1'
implementation 'com.google.guava:guava:14.0'
+ testImplementation 'org.slf4j:slf4j-api:2.0.5'
+ testImplementation 'org.hamcrest:hamcrest:2.2'
+ testImplementation 'junit:junit:4.13.2'
+ testImplementation('org.mockito:mockito-inline:5.2.0')
+
+ testImplementation group: 'org.apache.solr', name: 'solr-core', version: '8.11.2', {
+ exclude group: "org.apache.logging.log4j", module: "*"
+ exclude group: "org.slf4j", module: "*"
+ exclude group: "org.eclipse.jetty", module: "jetty-http"
+ exclude group: "org.eclipse.jetty", module: "jetty-server"
+ exclude group: "org.eclipse.jetty", module: "jetty-servlet"
+ }
+ testImplementation group: 'org.apache.solr', name: 'solr-test-framework', version: '8.11.2', {
+ exclude group: "org.apache.logging.log4j", module: "*"
+ exclude group: "org.slf4j", module: "*"
+ }
}
jar.enabled = false
diff --git a/crossdc-commons/src/test/java/org/apache/solr/crossdc/common/MirroredSolrRequestSerializerTest.java b/crossdc-commons/src/test/java/org/apache/solr/crossdc/common/MirroredSolrRequestSerializerTest.java
new file mode 100644
index 0000000..da6478f
--- /dev/null
+++ b/crossdc-commons/src/test/java/org/apache/solr/crossdc/common/MirroredSolrRequestSerializerTest.java
@@ -0,0 +1,36 @@
+package org.apache.solr.crossdc.common;
+
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.TestUtil;
+import org.apache.solr.client.solrj.request.UpdateRequest;
+import org.apache.solr.common.SolrInputDocument;
+import org.junit.Test;
+
+import java.util.Arrays;
+
+public class MirroredSolrRequestSerializerTest extends LuceneTestCase {
+
+ private static final byte[] EMPTY_ARR = new byte[3];
+
+ @Test
+ public void testSerializationBufferOptimization() throws Exception {
+ MirroredSolrRequestSerializer serializer = new MirroredSolrRequestSerializer();
+ UpdateRequest req = new UpdateRequest();
+ SolrInputDocument doc = new SolrInputDocument();
+ req.add(doc);
+ for (int i = 0; i < 100; i++) {
+ // very small docs produce trailing zeroes due to the optimization in ExposedByteArrayOutputStream
+ String fieldValue = TestUtil.randomRealisticUnicodeString(random(), i * 100, i * 100);
+ doc.setField("test", fieldValue);
+ MirroredSolrRequest mirroredRequest = new MirroredSolrRequest(req);
+ byte[] data = serializer.serialize("test", mirroredRequest);
+ if (Arrays.equals(Arrays.copyOfRange(data, data.length - EMPTY_ARR.length, data.length), EMPTY_ARR)) {
+ System.err.println("TRAILING ZEROES! buf len=" + data.length);
+ }
+ // fortunately deserialization skips these trailing zeroes
+ MirroredSolrRequest deserialized = serializer.deserialize("test", data);
+ String deserValue = (String) ((UpdateRequest) deserialized.getSolrRequest()).getDocuments().get(0).getFieldValue("test");
+ assertEquals(fieldValue, deserValue);
+ }
+ }
+}
diff --git a/gradlew b/gradlew
old mode 100644
new mode 100755