[#32] Provide a pool of clients to grpc
Signed-off-by: Ori Bruk <o.bruk@yadro.com>
This commit is contained in:
parent
3c3ed76727
commit
e9e9480701
56 changed files with 1712 additions and 59 deletions
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>frostfs-sdk-java</artifactId>
|
||||
<version>0.1.0</version>
|
||||
<version>0.2.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>models</artifactId>
|
||||
|
@ -21,17 +21,17 @@
|
|||
<dependency>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>cryptography</artifactId>
|
||||
<version>0.1.0</version>
|
||||
<version>0.2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>protos</artifactId>
|
||||
<version>0.1.0</version>
|
||||
<version>0.2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>exceptions</artifactId>
|
||||
<version>0.1.0</version>
|
||||
<version>0.2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package info.frostfs.sdk.constants;
|
||||
|
||||
public class AppConst {
|
||||
public static final String RESERVED_PREFIX = "__SYSTEM__";
|
||||
|
||||
public static final int DEFAULT_MAJOR_VERSION = 2;
|
||||
public static final int DEFAULT_MINOR_VERSION = 13;
|
||||
public static final int BYTE_SHIFT = 10;
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
package info.frostfs.sdk.constants;
|
||||
|
||||
import static info.frostfs.sdk.constants.AppConst.RESERVED_PREFIX;
|
||||
|
||||
public class AttributeConst {
|
||||
public static final String DISABLE_HOMOMORPHIC_HASHING_ATTRIBUTE = RESERVED_PREFIX + "DISABLE_HOMOMORPHIC_HASHING";
|
||||
|
||||
private AttributeConst() {
|
||||
}
|
||||
}
|
|
@ -1,9 +1,10 @@
|
|||
package info.frostfs.sdk.constants;
|
||||
|
||||
import static info.frostfs.sdk.constants.AppConst.RESERVED_PREFIX;
|
||||
|
||||
public class XHeaderConst {
|
||||
public static final String RESERVED_XHEADER_PREFIX = "__SYSTEM__";
|
||||
public static final String XHEADER_NETMAP_EPOCH = RESERVED_XHEADER_PREFIX + "NETMAP_EPOCH";
|
||||
public static final String XHEADER_NETMAP_LOOKUP_DEPTH = RESERVED_XHEADER_PREFIX + "NETMAP_LOOKUP_DEPTH";
|
||||
public static final String XHEADER_NETMAP_EPOCH = RESERVED_PREFIX + "NETMAP_EPOCH";
|
||||
public static final String XHEADER_NETMAP_LOOKUP_DEPTH = RESERVED_PREFIX + "NETMAP_LOOKUP_DEPTH";
|
||||
|
||||
private XHeaderConst() {
|
||||
}
|
||||
|
|
|
@ -6,6 +6,8 @@ import info.frostfs.sdk.enums.BasicAcl;
|
|||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
@Getter
|
||||
|
@ -15,6 +17,7 @@ public class Container {
|
|||
private BasicAcl basicAcl;
|
||||
private PlacementPolicy placementPolicy;
|
||||
private Version version;
|
||||
private Map<String, String> attributes = new HashMap<>();
|
||||
|
||||
public Container(BasicAcl basicAcl, PlacementPolicy placementPolicy) {
|
||||
this.nonce = UUID.randomUUID();
|
||||
|
|
|
@ -7,9 +7,13 @@ import info.frostfs.sdk.enums.BasicAcl;
|
|||
import info.frostfs.sdk.exceptions.ProcessFrostFSException;
|
||||
import info.frostfs.sdk.mappers.netmap.PlacementPolicyMapper;
|
||||
import info.frostfs.sdk.mappers.netmap.VersionMapper;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static info.frostfs.sdk.UuidExtension.asBytes;
|
||||
import static info.frostfs.sdk.UuidExtension.asUuid;
|
||||
import static info.frostfs.sdk.constants.AttributeConst.DISABLE_HOMOMORPHIC_HASHING_ATTRIBUTE;
|
||||
import static info.frostfs.sdk.constants.ErrorConst.UNKNOWN_ENUM_VALUE_TEMPLATE;
|
||||
import static java.util.Objects.isNull;
|
||||
|
||||
|
@ -22,11 +26,23 @@ public class ContainerMapper {
|
|||
return null;
|
||||
}
|
||||
|
||||
return Types.Container.newBuilder()
|
||||
var containerGrpc = Types.Container.newBuilder()
|
||||
.setBasicAcl(container.getBasicAcl().value)
|
||||
.setPlacementPolicy(PlacementPolicyMapper.toGrpcMessage(container.getPlacementPolicy()))
|
||||
.setNonce(ByteString.copyFrom(asBytes(container.getNonce())))
|
||||
.build();
|
||||
.setNonce(ByteString.copyFrom(asBytes(container.getNonce())));
|
||||
|
||||
container.getAttributes().putIfAbsent(DISABLE_HOMOMORPHIC_HASHING_ATTRIBUTE, Boolean.TRUE.toString());
|
||||
var attributes = container.getAttributes().entrySet().stream()
|
||||
.map(entry ->
|
||||
Types.Container.Attribute.newBuilder()
|
||||
.setKey(entry.getKey())
|
||||
.setValue(entry.getValue())
|
||||
.build()
|
||||
)
|
||||
.collect(Collectors.toList());
|
||||
containerGrpc.addAllAttributes(attributes);
|
||||
|
||||
return containerGrpc.build();
|
||||
}
|
||||
|
||||
public static Container toModel(Types.Container containerGrpc) {
|
||||
|
@ -41,9 +57,17 @@ public class ContainerMapper {
|
|||
);
|
||||
}
|
||||
|
||||
|
||||
var container = new Container(basicAcl, PlacementPolicyMapper.toModel(containerGrpc.getPlacementPolicy()));
|
||||
container.setNonce(asUuid(containerGrpc.getNonce().toByteArray()));
|
||||
container.setVersion(VersionMapper.toModel(containerGrpc.getVersion()));
|
||||
|
||||
if (CollectionUtils.isNotEmpty(containerGrpc.getAttributesList())) {
|
||||
var attributes = containerGrpc.getAttributesList().stream()
|
||||
.collect(Collectors.toMap(Types.Container.Attribute::getKey, Types.Container.Attribute::getValue));
|
||||
container.setAttributes(attributes);
|
||||
}
|
||||
|
||||
return container;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import java.util.UUID;
|
|||
|
||||
import static info.frostfs.sdk.UuidExtension.asBytes;
|
||||
import static info.frostfs.sdk.UuidExtension.asUuid;
|
||||
import static info.frostfs.sdk.constants.AttributeConst.DISABLE_HOMOMORPHIC_HASHING_ATTRIBUTE;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class ContainerMapperTest {
|
||||
|
@ -24,6 +25,8 @@ public class ContainerMapperTest {
|
|||
//Given
|
||||
var placementPolicy = new PlacementPolicy(new Replica[]{new Replica(1)}, true);
|
||||
var container = new Container(BasicAcl.PUBLIC_RW, placementPolicy);
|
||||
container.getAttributes().put("key1", "val1");
|
||||
container.getAttributes().put(DISABLE_HOMOMORPHIC_HASHING_ATTRIBUTE, "false");
|
||||
|
||||
//When
|
||||
var result = ContainerMapper.toGrpcMessage(container);
|
||||
|
@ -42,6 +45,11 @@ public class ContainerMapperTest {
|
|||
container.getPlacementPolicy().getReplicas()[0].getSelector(),
|
||||
result.getPlacementPolicy().getReplicasList().get(0).getSelector()
|
||||
);
|
||||
|
||||
assertEquals("key1", result.getAttributes(0).getKey());
|
||||
assertEquals("val1", result.getAttributes(0).getValue());
|
||||
assertEquals(DISABLE_HOMOMORPHIC_HASHING_ATTRIBUTE, result.getAttributes(1).getKey());
|
||||
assertEquals("false", result.getAttributes(1).getValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -69,11 +77,23 @@ public class ContainerMapperTest {
|
|||
.addReplicas(replica)
|
||||
.build();
|
||||
|
||||
var attribute1 = Types.Container.Attribute.newBuilder()
|
||||
.setKey("key1")
|
||||
.setValue("val1")
|
||||
.build();
|
||||
|
||||
var attribute2 = Types.Container.Attribute.newBuilder()
|
||||
.setKey("key2")
|
||||
.setValue("val2")
|
||||
.build();
|
||||
|
||||
var container = Types.Container.newBuilder()
|
||||
.setBasicAcl(basicAcl.value)
|
||||
.setNonce(ByteString.copyFrom(asBytes(UUID.randomUUID())))
|
||||
.setVersion(version)
|
||||
.setPlacementPolicy(placementPolicy)
|
||||
.addAttributes(attribute1)
|
||||
.addAttributes(attribute2)
|
||||
.build();
|
||||
|
||||
//When
|
||||
|
@ -95,6 +115,9 @@ public class ContainerMapperTest {
|
|||
);
|
||||
assertEquals(version.getMajor(), result.getVersion().getMajor());
|
||||
assertEquals(version.getMinor(), result.getVersion().getMinor());
|
||||
|
||||
assertEquals(attribute1.getValue(), result.getAttributes().get(attribute1.getKey()));
|
||||
assertEquals(attribute2.getValue(), result.getAttributes().get(attribute2.getKey()));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue