This commit is contained in:
Christien Rioux 2024-03-09 22:38:31 -05:00
parent 9bccb59f77
commit 7a1e6f96e6
5 changed files with 14 additions and 31 deletions

View File

@ -60,6 +60,7 @@ pub use typed_signature::*;
use super::*; use super::*;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
#[allow(clippy::enum_variant_names)]
pub(in crate::rpc_processor) enum QuestionContext { pub(in crate::rpc_processor) enum QuestionContext {
GetValue(ValidateGetValueContext), GetValue(ValidateGetValueContext),
SetValue(ValidateSetValueContext), SetValue(ValidateSetValueContext),

View File

@ -58,9 +58,10 @@ impl RPCOperationWatchValueQ {
count: u32, count: u32,
watch_id: Option<u64>, watch_id: Option<u64>,
) -> Vec<u8> { ) -> Vec<u8> {
let subkeys_len = subkeys.ranges_len(); let subkeys_ranges_len = subkeys.ranges_len();
let mut sig_data = Vec::with_capacity(PUBLIC_KEY_LENGTH + 4 + (subkeys_len * 8) + 8 + 8); let mut sig_data =
Vec::with_capacity(PUBLIC_KEY_LENGTH + 4 + (subkeys_ranges_len * 8) + 8 + 8);
sig_data.extend_from_slice(&key.kind.0); sig_data.extend_from_slice(&key.kind.0);
sig_data.extend_from_slice(&key.value.bytes); sig_data.extend_from_slice(&key.value.bytes);
for sk in subkeys.ranges() { for sk in subkeys.ranges() {

View File

@ -252,14 +252,14 @@ impl RPCProcessor {
log_dht!(debug "{}", debug_string_answer); log_dht!(debug "{}", debug_string_answer);
} }
// Make GetValue answer // Make InspectValue answer
let inspect_value_a = RPCOperationInspectValueA::new( let inspect_value_a = RPCOperationInspectValueA::new(
inspect_result_seqs, inspect_result_seqs,
closer_to_key_peers, closer_to_key_peers,
inspect_result_descriptor.map(|x| (*x).clone()), inspect_result_descriptor.map(|x| (*x).clone()),
)?; )?;
// Send GetValue answer // Send InspectValue answer
self.answer(msg, RPCAnswer::new(RPCAnswerDetail::InspectValueA(Box::new(inspect_value_a)))) self.answer(msg, RPCAnswer::new(RPCAnswerDetail::InspectValueA(Box::new(inspect_value_a))))
.await .await
} }

View File

@ -114,7 +114,7 @@ impl StorageManager {
} }
// If we have a prior seqs list, merge in the new seqs // If we have a prior seqs list, merge in the new seqs
if ctx.seqs.len() == 0 { if ctx.seqs.is_empty() {
ctx.seqs = iva.answer.seqs.clone(); ctx.seqs = iva.answer.seqs.clone();
// One node has shown us the newest sequence numbers so far // One node has shown us the newest sequence numbers so far
ctx.value_nodes = vec![next_node]; ctx.value_nodes = vec![next_node];
@ -157,7 +157,7 @@ impl StorageManager {
let check_done = |_closest_nodes: &[NodeRef]| { let check_done = |_closest_nodes: &[NodeRef]| {
// If we have reached sufficient consensus, return done // If we have reached sufficient consensus, return done
let ctx = context.lock(); let ctx = context.lock();
if ctx.seqs.len() > 0 if !ctx.seqs.is_empty()
&& ctx.descriptor.is_some() && ctx.descriptor.is_some()
&& ctx.value_nodes.len() >= consensus_count && ctx.value_nodes.len() >= consensus_count
{ {

View File

@ -62,10 +62,7 @@ pub async fn test_create_delete_dht_record_simple(api: VeilidAPI) {
.unwrap(); .unwrap();
let rec = rc let rec = rc
.create_dht_record( .create_dht_record(DHTSchema::dflt(1).unwrap(), Some(CRYPTO_KIND_VLD0))
DHTSchema::DFLT(DHTSchemaDFLT { o_cnt: 1 }),
Some(CRYPTO_KIND_VLD0),
)
.await .await
.unwrap(); .unwrap();
@ -82,10 +79,7 @@ pub async fn test_get_dht_value_nonexistent(api: VeilidAPI) {
.unwrap(); .unwrap();
let rec = rc let rec = rc
.create_dht_record( .create_dht_record(DHTSchema::dflt(1).unwrap(), Some(CRYPTO_KIND_VLD0))
DHTSchema::DFLT(DHTSchemaDFLT { o_cnt: 1 }),
Some(CRYPTO_KIND_VLD0),
)
.await .await
.unwrap(); .unwrap();
let dht_key = *rec.key(); let dht_key = *rec.key();
@ -104,10 +98,7 @@ pub async fn test_set_get_dht_value(api: VeilidAPI) {
.unwrap(); .unwrap();
let rec = rc let rec = rc
.create_dht_record( .create_dht_record(DHTSchema::dflt(2).unwrap(), Some(CRYPTO_KIND_VLD0))
DHTSchema::DFLT(DHTSchemaDFLT { o_cnt: 2 }),
Some(CRYPTO_KIND_VLD0),
)
.await .await
.unwrap(); .unwrap();
let dht_key = *rec.key(); let dht_key = *rec.key();
@ -159,10 +150,7 @@ pub async fn test_open_writer_dht_value(api: VeilidAPI) {
.unwrap(); .unwrap();
let rec = rc let rec = rc
.create_dht_record( .create_dht_record(DHTSchema::dflt(2).unwrap(), Some(CRYPTO_KIND_VLD0))
DHTSchema::DFLT(DHTSchemaDFLT { o_cnt: 2 }),
Some(CRYPTO_KIND_VLD0),
)
.await .await
.unwrap(); .unwrap();
let key = *rec.key(); let key = *rec.key();
@ -252,10 +240,7 @@ pub async fn test_open_writer_dht_value(api: VeilidAPI) {
assert_eq!(rec.key().kind, key.kind); assert_eq!(rec.key().kind, key.kind);
assert_eq!(rec.owner(), owner); assert_eq!(rec.owner(), owner);
assert_eq!(rec.owner_secret().unwrap(), secret); assert_eq!(rec.owner_secret().unwrap(), secret);
assert!(matches!( assert_eq!(rec.schema(), &DHTSchema::dflt(2).unwrap());
rec.schema().clone(),
DHTSchema::DFLT(DHTSchemaDFLT { o_cnt: 2 })
));
//Verify subkey 1 can be set before it is get but newer is available online //Verify subkey 1 can be set before it is get but newer is available online
let set_dht_test_value_1_result = rc.set_dht_value(key, 1, test_data_3.clone(), None).await; let set_dht_test_value_1_result = rc.set_dht_value(key, 1, test_data_3.clone(), None).await;
@ -301,11 +286,7 @@ pub async fn test_open_writer_dht_value(api: VeilidAPI) {
assert_eq!(rec.key().kind, key.kind); assert_eq!(rec.key().kind, key.kind);
assert_eq!(rec.owner(), owner); assert_eq!(rec.owner(), owner);
assert_eq!(rec.owner_secret(), None); assert_eq!(rec.owner_secret(), None);
let schema = rec.schema().clone(); assert_eq!(rec.schema(), &DHTSchema::dflt(2).unwrap());
assert!(matches!(
schema,
DHTSchema::DFLT(DHTSchemaDFLT { o_cnt: 2 })
));
// Verify subkey 1 can NOT be set because we have the wrong writer // Verify subkey 1 can NOT be set because we have the wrong writer
let set_dht_test_value_0_result = rc.set_dht_value(key, 1, test_value_1.clone(), None).await; let set_dht_test_value_0_result = rc.set_dht_value(key, 1, test_value_1.clone(), None).await;