cbbeb66b5b
* added cargo config file to explicitly specify build target * wip * Config option to disable topology refreshing * extracted common parsing code * helper trait for working on wasm topology * wasm topology parsing * restored (slightly modified) old js-example * wip * Moved message preparation into a trait * wip * long-winded way of sending test packet * standalone NymNodeTester * finishing the test upon receiving all packets even if timeout wasnt reached * initial round of cleanup * sending multiple test packets in normal NymClient * javascript-side cleanup * starting mixnode test on btn click * Improved NymNodeTester constructors * improved error handling and constructors * tester utils error handling * further cleanup + using BTreeMap for NymTopology mixnodes * handling missed errors * splitting up 'test_node' * split up and cleaned up generation of test result * clippy + fixed example * post rebase fixes * another broken test * prevent running multiple parallel tests * cargo fmt * Added nym- prefix to node tester utils
50 lines
1.6 KiB
Rust
50 lines
1.6 KiB
Rust
// Copyright 2023 - Nym Technologies SA <contact@nymtech.net>
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
use crate::MixId;
|
|
use nym_sphinx::chunking::ChunkingError;
|
|
use nym_sphinx::receiver::MessageRecoveryError;
|
|
use nym_topology::NymTopologyError;
|
|
use thiserror::Error;
|
|
|
|
#[derive(Debug, Error)]
|
|
pub enum NetworkTestingError {
|
|
#[error(transparent)]
|
|
SerializationFailure(#[from] serde_json::Error),
|
|
|
|
#[error("could not recover received test message: {source}")]
|
|
MalformedTestMessageReceived { source: serde_json::Error },
|
|
|
|
#[error(transparent)]
|
|
InvalidTopology(#[from] NymTopologyError),
|
|
|
|
#[error("The specified mixnode (id: {mix_id}) doesn't exist")]
|
|
NonExistentMixnode { mix_id: MixId },
|
|
|
|
#[error("The specified mixnode (identity: {mix_identity}) doesn't exist")]
|
|
NonExistentMixnodeIdentity { mix_identity: String },
|
|
|
|
#[error("The specified gateway (id: {gateway_identity}) doesn't exist")]
|
|
NonExistentGateway { gateway_identity: String },
|
|
|
|
#[error("The provided test message is too long to fit in a single sphinx packet")]
|
|
TestMessageTooLong,
|
|
|
|
#[error(
|
|
"could not recover underlying data from the received packet since it was malformed: {source}"
|
|
)]
|
|
MalformedPacketReceived {
|
|
#[from]
|
|
source: MessageRecoveryError,
|
|
},
|
|
|
|
#[error("Received ack packet could not be recovered")]
|
|
UnrecoverableAck,
|
|
|
|
#[error("could not recover ack FragmentIdentifier: {source}")]
|
|
MalformedAckIdentifier { source: ChunkingError },
|
|
|
|
#[error("received a packet that could not be reconstructed into a full message with a single fragment")]
|
|
NonReconstructablePacket,
|
|
}
|