Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.marklogic.client.document.*;
import com.marklogic.client.impl.DocumentWriteOperationImpl;
import com.marklogic.client.io.DocumentMetadataHandle;
import com.marklogic.client.io.Format;
import com.marklogic.client.io.JacksonHandle;
import com.marklogic.client.io.StringHandle;
import com.marklogic.client.io.*;
import com.marklogic.client.test.Common;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -156,7 +153,7 @@ void noRangeIndexForFieldWithEval() {
@Test
void customTimestampKeyName() {
filter = IncrementalWriteFilter.newBuilder()
.hashKeyName("incrementalWriteHash")
.hashKeyName("myWriteHash")
.timestampKeyName("myTimestamp")
.build();

Expand All @@ -165,8 +162,9 @@ void customTimestampKeyName() {
DocumentMetadataHandle metadata = Common.client.newDocumentManager().readMetadata("/incremental/test/doc-1.xml",
new DocumentMetadataHandle());

assertNotNull(metadata.getMetadataValues().get("myWriteHash"));
assertNotNull(metadata.getMetadataValues().get("myTimestamp"));
assertNotNull(metadata.getMetadataValues().get("incrementalWriteHash"));
assertFalse(metadata.getMetadataValues().containsKey("incrementalWriteHash"));
assertFalse(metadata.getMetadataValues().containsKey("incrementalWriteTimestamp"));
}

Expand All @@ -190,6 +188,46 @@ void nullIsIgnoredForKeyNames() {
assertNotNull(metadata.getMetadataValues().get("incrementalWriteTimestamp"));
}

@Test
void textDocument() {
final DocumentWriteOperation writeOp = new DocumentWriteOperationImpl("/incremental/test/doc.txt", METADATA,
new StringHandle("Hello world"));

docs.add(writeOp);
writeDocs(docs);
assertEquals(1, writtenCount.get());
assertEquals(0, skippedCount.get());

// Write the same text document again
docs = new ArrayList<>();
docs.add(writeOp);
writeDocs(docs);
assertEquals(1, writtenCount.get());
assertEquals(1, skippedCount.get(), "This is a sanity check to verify that text files work as expected. " +
"Exclusions can't yet be specified for them since we only support JSON Pointer and XPath so far. It may " +
"be worth supporting regex-based exclusions for text files in the future.");
}

@Test
void binaryDocument() {
byte[] binaryContent = "Binary content example".getBytes();
final DocumentWriteOperation writeOp = new DocumentWriteOperationImpl("/incremental/test/doc.bin", METADATA,
new BytesHandle(binaryContent).withFormat(Format.BINARY));

docs.add(writeOp);
writeDocs(docs);
assertEquals(1, writtenCount.get());
assertEquals(0, skippedCount.get());

// Write the same binary document again
docs = new ArrayList<>();
docs.add(writeOp);
writeDocs(docs);
assertEquals(1, writtenCount.get());
assertEquals(1, skippedCount.get(), "Another sanity check to make sure that binary documents work as " +
"expected. Exclusions cannot be specified for them.");
}

private void verifyIncrementalWriteWorks() {
writeTenDocuments();
verifyDocumentsHasHashInMetadataKey();
Expand Down
9 changes: 9 additions & 0 deletions test-app/src/main/ml-config/databases/content-database.json
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,15 @@
"fast-phrase-searches": false,
"fast-case-sensitive-searches": false,
"fast-diacritic-sensitive-searches": false
},
{
"field-name": "myWriteHash",
"metadata": "",
"stemmed-searches": "off",
"word-searches": false,
"fast-phrase-searches": false,
"fast-case-sensitive-searches": false,
"fast-diacritic-sensitive-searches": false
}
],
"range-field-index": [
Expand Down