Skip to content
This repository has been archived by the owner on May 16, 2024. It is now read-only.

Commit

Permalink
fix(topology): cluster_id constraint is added for the 'get_v_nodes_by…
Browse files Browse the repository at this point in the history
…_node' method
  • Loading branch information
yahortsaryk committed Aug 10, 2023
1 parent 2cc609b commit a13fe8a
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 14 deletions.
45 changes: 36 additions & 9 deletions bucket/ddc_bucket/tests/test_cluster.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,10 @@ fn cluster_create_ok() {
// Check cluster Storage nodes

let node0 = ctx.contract.node_get(ctx.node_key0)?;
let v_nodes0 = ctx.contract.get_v_nodes_by_node(ctx.node_key0);
let v_nodes0 = ctx
.contract
.get_v_nodes_by_node(ctx.cluster_id, ctx.node_key0)
.unwrap();
let v_nodes0_len: u32 = v_nodes0.len().try_into().unwrap();

assert_eq!(
Expand All @@ -59,7 +62,10 @@ fn cluster_create_ok() {
);

let node1 = ctx.contract.node_get(ctx.node_key1)?;
let v_nodes1 = ctx.contract.get_v_nodes_by_node(ctx.node_key1);
let v_nodes1 = ctx
.contract
.get_v_nodes_by_node(ctx.cluster_id, ctx.node_key1)
.unwrap();
let v_nodes1_len: u32 = v_nodes1.len().try_into().unwrap();

assert_eq!(
Expand All @@ -79,7 +85,10 @@ fn cluster_create_ok() {
);

let node2 = ctx.contract.node_get(ctx.node_key2)?;
let v_nodes2 = ctx.contract.get_v_nodes_by_node(ctx.node_key2);
let v_nodes2 = ctx
.contract
.get_v_nodes_by_node(ctx.cluster_id, ctx.node_key2)
.unwrap();
let v_nodes2_len: u32 = v_nodes2.len().try_into().unwrap();

assert_eq!(
Expand Down Expand Up @@ -1132,11 +1141,20 @@ fn cluster_replace_node_ok() {
"a v_node must be replaced"
);

let mut v_nodes0 = ctx.contract.get_v_nodes_by_node(ctx.node_key0.clone());
let mut v_nodes0 = ctx
.contract
.get_v_nodes_by_node(ctx.cluster_id, ctx.node_key0.clone())
.unwrap();
v_nodes0.sort();
let mut v_nodes1 = ctx.contract.get_v_nodes_by_node(ctx.node_key1.clone());
let mut v_nodes1 = ctx
.contract
.get_v_nodes_by_node(ctx.cluster_id, ctx.node_key1.clone())
.unwrap();
v_nodes1.sort();
let mut v_nodes2 = ctx.contract.get_v_nodes_by_node(ctx.node_key2.clone());
let mut v_nodes2 = ctx
.contract
.get_v_nodes_by_node(ctx.cluster_id, ctx.node_key2.clone())
.unwrap();
v_nodes2.sort();

assert_eq!(
Expand Down Expand Up @@ -1313,11 +1331,20 @@ fn cluster_reset_node_ok() {
"a v_node must be replaced"
);

let mut v_nodes0 = ctx.contract.get_v_nodes_by_node(ctx.node_key0.clone());
let mut v_nodes0 = ctx
.contract
.get_v_nodes_by_node(ctx.cluster_id, ctx.node_key0.clone())
.unwrap();
v_nodes0.sort();
let mut v_nodes1 = ctx.contract.get_v_nodes_by_node(ctx.node_key1.clone());
let mut v_nodes1 = ctx
.contract
.get_v_nodes_by_node(ctx.cluster_id, ctx.node_key1.clone())
.unwrap();
v_nodes1.sort();
let mut v_nodes2 = ctx.contract.get_v_nodes_by_node(ctx.node_key2.clone());
let mut v_nodes2 = ctx
.contract
.get_v_nodes_by_node(ctx.cluster_id, ctx.node_key2.clone())
.unwrap();
v_nodes2.sort();

assert_eq!(
Expand Down
16 changes: 13 additions & 3 deletions bucket/ddc_bucket/topology/messages.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,25 @@
//! The public interface to manage Nodes.

use crate::ddc_bucket::{ClusterId, DdcBucket, NodeKey, Result, VNodeToken};
use crate::ddc_bucket::{ClusterId, DdcBucket, Error::*, NodeKey, Result, VNodeToken};
use ink_prelude::vec::Vec;

impl DdcBucket {
pub fn message_get_v_nodes_by_cluster(&self, cluster_id: ClusterId) -> Vec<VNodeToken> {
self.topology.get_v_nodes_by_cluster(cluster_id)
}

pub fn message_get_v_nodes_by_node(&self, node_key: NodeKey) -> Vec<VNodeToken> {
self.topology.get_v_nodes_by_node(node_key)
pub fn message_get_v_nodes_by_node(
&self,
cluster_id: ClusterId,
node_key: NodeKey,
) -> Result<Vec<VNodeToken>> {
let node = self.nodes.get(node_key)?;

if node.cluster_id != Some(cluster_id) {
return Err(NodeIsNotAddedToCluster(cluster_id));
}

Ok(self.topology.get_v_nodes_by_node(node_key))
}

pub fn message_get_node_by_v_node(
Expand Down
8 changes: 6 additions & 2 deletions bucket/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1685,8 +1685,12 @@ pub mod ddc_bucket {
}

#[ink(message)]
pub fn get_v_nodes_by_node(&self, node_key: NodeKey) -> Vec<VNodeToken> {
self.message_get_v_nodes_by_node(node_key)
pub fn get_v_nodes_by_node(
&self,
cluster_id: ClusterId,
node_key: NodeKey,
) -> Result<Vec<VNodeToken>> {
self.message_get_v_nodes_by_node(cluster_id, node_key)
}

#[ink(message)]
Expand Down

0 comments on commit a13fe8a

Please sign in to comment.