checkpoint
This commit is contained in:
		| @@ -123,18 +123,18 @@ pub async fn test_store_delete_load(ts: TableStore) { | ||||
|     assert_eq!(db.load(2, b"baz").unwrap(), Some(b"QWERTY".to_vec())); | ||||
| } | ||||
|  | ||||
| pub async fn test_frozen(ts: TableStore) { | ||||
| pub async fn test_frozen(vcrypto: CryptoSystemVersion, ts: TableStore) { | ||||
|     trace!("test_frozen"); | ||||
|  | ||||
|     let _ = ts.delete("test"); | ||||
|     let db = ts.open("test", 3).await.expect("should have opened"); | ||||
|     let (dht_key, _) = generate_secret(); | ||||
|     let (dht_key, _) = vcrypto.generate_keypair(); | ||||
|  | ||||
|     assert!(db.store_rkyv(0, b"asdf", &dht_key).await.is_ok()); | ||||
|  | ||||
|     assert_eq!(db.load_rkyv::<TypedKey>(0, b"qwer").unwrap(), None); | ||||
|     assert_eq!(db.load_rkyv::<PublicKey>(0, b"qwer").unwrap(), None); | ||||
|  | ||||
|     let d = match db.load_rkyv::<TypedKey>(0, b"asdf") { | ||||
|     let d = match db.load_rkyv::<PublicKey>(0, b"asdf") { | ||||
|         Ok(x) => x, | ||||
|         Err(e) => { | ||||
|             panic!("couldn't decode: {}", e); | ||||
| @@ -155,12 +155,16 @@ pub async fn test_frozen(ts: TableStore) { | ||||
|  | ||||
| pub async fn test_all() { | ||||
|     let api = startup().await; | ||||
|     let crypto = api.crypto().unwrap(); | ||||
|     let ts = api.table_store().unwrap(); | ||||
|     test_delete_open_delete(ts.clone()).await; | ||||
|     test_store_delete_load(ts.clone()).await; | ||||
|     test_frozen(ts.clone()).await; | ||||
|  | ||||
|     let _ = ts.delete("test").await; | ||||
|     for ck in VALID_CRYPTO_KINDS { | ||||
|         let vcrypto = crypto.get(ck).unwrap(); | ||||
|         test_delete_open_delete(ts.clone()).await; | ||||
|         test_store_delete_load(ts.clone()).await; | ||||
|         test_frozen(vcrypto, ts.clone()).await; | ||||
|         let _ = ts.delete("test").await; | ||||
|     } | ||||
|  | ||||
|     shutdown(api).await; | ||||
| } | ||||
|   | ||||
| @@ -192,9 +192,18 @@ fn config_callback(key: String) -> ConfigCallbackReturn { | ||||
|         "network.client_whitelist_timeout_ms" => Ok(Box::new(300_000u32)), | ||||
|         "network.reverse_connection_receipt_time_ms" => Ok(Box::new(5_000u32)), | ||||
|         "network.hole_punch_receipt_time_ms" => Ok(Box::new(5_000u32)), | ||||
|         "network.node_id" => Ok(Box::new(Option::<TypedKey>::None)), | ||||
|         "network.node_id_secret" => Ok(Box::new(Option::<SecretKey>::None)), | ||||
|         "network.bootstrap" => Ok(Box::new(Vec::<String>::new())), | ||||
|         "network.routing_table.node_ids" => { | ||||
|             let mut nids = BTreeMap::<CryptoKind, VeilidConfigNodeId>::new(); | ||||
|             nids.insert( | ||||
|                 CRYPTO_KIND_VLD0, | ||||
|                 VeilidConfigNodeId { | ||||
|                     node_id: None, | ||||
|                     node_id_secret: None, | ||||
|                 }, | ||||
|             ); | ||||
|             Ok(Box::new(nids)) | ||||
|         } | ||||
|         "network.routing_table.bootstrap" => Ok(Box::new(Vec::<String>::new())), | ||||
|         "network.routing_table.limit_over_attached" => Ok(Box::new(64u32)), | ||||
|         "network.routing_table.limit_fully_attached" => Ok(Box::new(32u32)), | ||||
|         "network.routing_table.limit_attached_strong" => Ok(Box::new(16u32)), | ||||
| @@ -315,14 +324,13 @@ pub async fn test_config() { | ||||
|     assert_eq!(inner.network.client_whitelist_timeout_ms, 300_000u32); | ||||
|     assert_eq!(inner.network.reverse_connection_receipt_time_ms, 5_000u32); | ||||
|     assert_eq!(inner.network.hole_punch_receipt_time_ms, 5_000u32); | ||||
|     assert!(inner.network.node_id.is_none()); | ||||
|     assert!(inner.network.node_id_secret.is_none()); | ||||
|     assert_eq!(inner.network.bootstrap, Vec::<String>::new()); | ||||
|     assert_eq!(inner.network.rpc.concurrency, 2u32); | ||||
|     assert_eq!(inner.network.rpc.queue_size, 1024u32); | ||||
|     assert_eq!(inner.network.rpc.timeout_ms, 10_000u32); | ||||
|     assert_eq!(inner.network.rpc.max_route_hop_count, 4u8); | ||||
|     assert_eq!(inner.network.rpc.default_route_hop_count, 1u8); | ||||
|     assert_eq!(inner.network.routing_table.node_ids.len(), 1); | ||||
|     assert_eq!(inner.network.routing_table.bootstrap, Vec::<String>::new()); | ||||
|     assert_eq!(inner.network.routing_table.limit_over_attached, 64u32); | ||||
|     assert_eq!(inner.network.routing_table.limit_fully_attached, 32u32); | ||||
|     assert_eq!(inner.network.routing_table.limit_attached_strong, 16u32); | ||||
|   | ||||
| @@ -50,64 +50,83 @@ pub async fn test_signed_node_info() { | ||||
|         .await | ||||
|         .expect("startup failed"); | ||||
|  | ||||
|     // Test direct | ||||
|     let node_info = NodeInfo { | ||||
|         network_class: NetworkClass::InboundCapable, | ||||
|         outbound_protocols: ProtocolTypeSet::all(), | ||||
|         address_types: AddressTypeSet::all(), | ||||
|         min_version: 0, | ||||
|         max_version: 0, | ||||
|         dial_info_detail_list: vec![DialInfoDetail { | ||||
|             class: DialInfoClass::Mapped, | ||||
|             dial_info: DialInfo::udp(SocketAddress::default()), | ||||
|         }], | ||||
|     }; | ||||
|     let crypto = api.crypto().unwrap(); | ||||
|     for ck in VALID_CRYPTO_KINDS { | ||||
|         let vcrypto = crypto.get(ck).unwrap(); | ||||
|  | ||||
|     let (pkey, skey) = generate_secret(); | ||||
|         // Test direct | ||||
|         let node_info = NodeInfo { | ||||
|             network_class: NetworkClass::InboundCapable, | ||||
|             outbound_protocols: ProtocolTypeSet::all(), | ||||
|             address_types: AddressTypeSet::all(), | ||||
|             envelope_support: VALID_ENVELOPE_VERSIONS.to_vec(), | ||||
|             crypto_support: VALID_CRYPTO_KINDS.to_vec(), | ||||
|             dial_info_detail_list: vec![DialInfoDetail { | ||||
|                 class: DialInfoClass::Mapped, | ||||
|                 dial_info: DialInfo::udp(SocketAddress::default()), | ||||
|             }], | ||||
|         }; | ||||
|  | ||||
|     let sni = | ||||
|         SignedDirectNodeInfo::with_secret(NodeId::new(pkey.clone()), node_info.clone(), &skey) | ||||
|             .unwrap(); | ||||
|     let _ = SignedDirectNodeInfo::new( | ||||
|         NodeId::new(pkey), | ||||
|         node_info.clone(), | ||||
|         sni.timestamp, | ||||
|         sni.signature.unwrap(), | ||||
|     ) | ||||
|     .unwrap(); | ||||
|         let (pkey, skey) = vcrypto.generate_keypair(); | ||||
|  | ||||
|     // Test relayed | ||||
|     let node_info2 = NodeInfo { | ||||
|         network_class: NetworkClass::OutboundOnly, | ||||
|         outbound_protocols: ProtocolTypeSet::all(), | ||||
|         address_types: AddressTypeSet::all(), | ||||
|         min_version: 0, | ||||
|         max_version: 0, | ||||
|         dial_info_detail_list: vec![DialInfoDetail { | ||||
|             class: DialInfoClass::Blocked, | ||||
|             dial_info: DialInfo::udp(SocketAddress::default()), | ||||
|         }], | ||||
|     }; | ||||
|         let sni = SignedDirectNodeInfo::make_signatures( | ||||
|             crypto.clone(), | ||||
|             vec![TypedKeyPair::new(ck, pkey, skey)], | ||||
|             node_info.clone(), | ||||
|         ) | ||||
|         .unwrap(); | ||||
|         let mut tks: TypedKeySet = TypedKey::new(ck, pkey).into(); | ||||
|         let oldtkslen = tks.len(); | ||||
|         let _ = SignedDirectNodeInfo::new( | ||||
|             crypto.clone(), | ||||
|             &mut tks, | ||||
|             node_info.clone(), | ||||
|             sni.timestamp, | ||||
|             sni.signatures.clone(), | ||||
|         ) | ||||
|         .unwrap(); | ||||
|         assert_eq!(tks.len(), oldtkslen); | ||||
|         assert_eq!(tks.len(), sni.signatures.len()); | ||||
|  | ||||
|     let (pkey2, skey2) = generate_secret(); | ||||
|         // Test relayed | ||||
|         let node_info2 = NodeInfo { | ||||
|             network_class: NetworkClass::OutboundOnly, | ||||
|             outbound_protocols: ProtocolTypeSet::all(), | ||||
|             address_types: AddressTypeSet::all(), | ||||
|             envelope_support: VALID_ENVELOPE_VERSIONS.to_vec(), | ||||
|             crypto_support: VALID_CRYPTO_KINDS.to_vec(), | ||||
|             dial_info_detail_list: vec![DialInfoDetail { | ||||
|                 class: DialInfoClass::Blocked, | ||||
|                 dial_info: DialInfo::udp(SocketAddress::default()), | ||||
|             }], | ||||
|         }; | ||||
|  | ||||
|     let sni2 = SignedRelayedNodeInfo::make_signatures( | ||||
|         NodeId::new(pkey2.clone()), | ||||
|         node_info2.clone(), | ||||
|         NodeId::new(pkey.clone()), | ||||
|         sni.clone(), | ||||
|         &skey2, | ||||
|     ) | ||||
|     .unwrap(); | ||||
|     let _ = SignedRelayedNodeInfo::new( | ||||
|         NodeId::new(pkey2), | ||||
|         node_info2, | ||||
|         NodeId::new(pkey), | ||||
|         sni, | ||||
|         sni2.timestamp, | ||||
|         sni2.signature, | ||||
|     ) | ||||
|     .unwrap(); | ||||
|         let (pkey2, skey2) = vcrypto.generate_keypair(); | ||||
|         let mut tks2: TypedKeySet = TypedKey::new(ck, pkey2).into(); | ||||
|         let oldtks2len = tks2.len(); | ||||
|  | ||||
|         let sni2 = SignedRelayedNodeInfo::make_signatures( | ||||
|             crypto.clone(), | ||||
|             vec![TypedKeyPair::new(ck, pkey2, skey2)], | ||||
|             node_info2.clone(), | ||||
|             tks.clone(), | ||||
|             sni.clone(), | ||||
|         ) | ||||
|         .unwrap(); | ||||
|         let _ = SignedRelayedNodeInfo::new( | ||||
|             crypto.clone(), | ||||
|             &mut tks2, | ||||
|             node_info2, | ||||
|             tks, | ||||
|             sni, | ||||
|             sni2.timestamp, | ||||
|             sni2.signatures.clone(), | ||||
|         ) | ||||
|         .unwrap(); | ||||
|  | ||||
|         assert_eq!(tks2.len(), oldtks2len); | ||||
|         assert_eq!(tks2.len(), sni2.signatures.len()); | ||||
|     } | ||||
|  | ||||
|     api.shutdown().await; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user