1
0
Fork 0
mirror of https://github.com/chrislusf/seaweedfs synced 2024-05-20 10:20:00 +02:00

add unit test of Extended key

This commit is contained in:
stillmoon 2024-04-10 16:46:48 +08:00
parent ccae573cb1
commit 0dea68783b

View file

@ -1,12 +1,24 @@
package seaweedfs.client;
import com.google.protobuf.ByteString;
import java.awt.image.DataBuffer;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
import org.junit.Assert;
import org.junit.Test;
import seaweedfs.client.FilerProto.Entry;
import seaweedfs.client.FilerProto.FuseAttributes;
public class SeaweedFilerTest {
private static FilerClient filerClient = new FilerClient("localhost", 18888);
public static void main(String[] args){
FilerClient filerClient = new FilerClient("localhost", 18888);
List<FilerProto.Entry> entries = filerClient.listEntries("/");
for (FilerProto.Entry entry : entries) {
@ -29,4 +41,49 @@ public class SeaweedFilerTest {
System.out.println("/ should exists");
}
}
@Test
public void testExtendedKey() throws IOException {
String content = "hello";
String location = "/hello.txt";
HashMap<String, String> metadata = new HashMap<>();
// The storage format of key is Seaweed-mime, and the reading format is mime.
metadata.put("mime", "text/plain");
// The user-specified key "Seaweed-" prefix does not take effect
// The storage format of key is Seaweed-name1, and the reading format is name1
metadata.put("Seaweed-name1", "value1");
long ts = System.currentTimeMillis() / 1000;
String dir = SeaweedOutputStream.getParentDirectory(location);
String name = SeaweedOutputStream.getFileName(location);
FuseAttributes.Builder attributes = FuseAttributes.newBuilder()
.setMtime(ts)
.setCrtime(ts)
.setFileMode(755);
Entry.Builder entry = Entry.newBuilder()
.setName(name)
.setIsDirectory(false)
.setAttributes(attributes.build());
// put metadata
for (Map.Entry<String, String> metadataEntry : metadata.entrySet()) {
entry.putExtended(metadataEntry.getKey(),
ByteString.copyFromUtf8(metadataEntry.getValue()));
}
try (SeaweedOutputStream outputStream = new SeaweedOutputStream(filerClient, location, entry, 0,
1024, "")) {
outputStream.write(content.getBytes());
}
Entry getEntry = filerClient.lookupEntry(dir, name);
Assert.assertNotNull(getEntry);
Map<String, ByteString> extendedMap = getEntry.getExtendedMap();
HashSet<String> expectKeys = new HashSet<String>() {{
add("mime");
add("name1");
}};
Assert.assertEquals(expectKeys, extendedMap.keySet());
filerClient.deleteEntry(dir, name, true, false, true);
}
}