mirror of
https://gitlab.com/veilid/veilid.git
synced 2025-03-30 17:48:03 -04:00
fix bugs
This commit is contained in:
parent
9bccb59f77
commit
7a1e6f96e6
@ -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),
|
||||||
|
@ -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() {
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user