Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pallets/band/src/benchmarking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,15 +84,15 @@ benchmarks! {
let relayer = relayer::<T>();
}: _(RawOrigin::Root, vec![relayer.clone()])
verify {
assert_eq!(Band::<T>::trusted_relayers().unwrap().contains(&relayer), true);
assert!(Band::<T>::trusted_relayers().unwrap().contains(&relayer));
}

remove_relayers {
let relayer = relayer::<T>();
Band::<T>::add_relayers(RawOrigin::Root.into(), vec![relayer.clone()])?;
}: _(RawOrigin::Root, vec![relayer.clone()])
verify {
assert_eq!(Band::<T>::trusted_relayers().unwrap().contains(&relayer), false);
assert!(!Band::<T>::trusted_relayers().unwrap().contains(&relayer));
}

set_dynamic_fee_parameters {
Expand Down
48 changes: 21 additions & 27 deletions pallets/band/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@
// USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#![cfg_attr(not(feature = "std"), no_std)]
// TODO #167: fix clippy warnings
#![allow(clippy::all)]

use common::prelude::FixedWrapper;
use common::{fixed, fixed_wrapper, Balance, DataFeed, Fixed, OnNewSymbolsRelayed, Oracle, Rate};
Expand Down Expand Up @@ -452,7 +450,7 @@ pub mod pallet {
TrustedRelayers::<T, I>::mutate(|option_relayers| match option_relayers {
Some(relayers) => {
let to_remove = BTreeSet::from_iter(account_ids);
if to_remove.is_subset(&relayers) {
if to_remove.is_subset(relayers) {
for account in &to_remove {
relayers.remove(account);
}
Expand Down Expand Up @@ -530,30 +528,26 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
))
.collect()?;
let now = frame_system::Pallet::<T>::block_number();
let new_symbols = fallible_iterator::convert(
converted_rates
.iter()
.map(|symbol_rate| Ok::<_, DispatchError>(symbol_rate)),
)
.fold(
BTreeSet::new(),
|mut new_symbols_acc, (symbol, rate_value)| {
let new_rate = BandRate {
value: *rate_value,
last_updated: resolve_time,
request_id,
dynamic_fee: fixed!(0),
last_updated_block: now,
};
SymbolRates::<T, I>::mutate(symbol, |option_old_rate| {
if option_old_rate.is_none() {
new_symbols_acc.insert(symbol.clone());
}
f(option_old_rate, new_rate, symbol)
})?;
Ok(new_symbols_acc)
},
)?;
let new_symbols =
fallible_iterator::convert(converted_rates.iter().map(Ok::<_, DispatchError>)).fold(
BTreeSet::new(),
|mut new_symbols_acc, (symbol, rate_value)| {
let new_rate = BandRate {
value: *rate_value,
last_updated: resolve_time,
request_id,
dynamic_fee: fixed!(0),
last_updated_block: now,
};
SymbolRates::<T, I>::mutate(symbol, |option_old_rate| {
if option_old_rate.is_none() {
new_symbols_acc.insert(symbol.clone());
}
f(option_old_rate, new_rate, symbol)
})?;
Ok(new_symbols_acc)
},
)?;

T::OnNewSymbolsRelayedHook::on_new_symbols_relayed(Oracle::BandChainFeed, new_symbols)?;

Expand Down
40 changes: 16 additions & 24 deletions pallets/band/src/migrations.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,15 +118,14 @@ pub mod v1 {

SymbolRatesV1::<T>::translate::<Option<BandRateV0>, _>(|_symbol, band_rate| {
weight = weight.saturating_add(T::DbWeight::get().reads_writes(1, 1));
match band_rate {
Some(band_rate) => Some(Some(BandRateV1 {
band_rate.map(|band_rate| {
Some(BandRateV1 {
value: band_rate.value,
last_updated: band_rate.last_updated,
request_id: band_rate.request_id,
dynamic_fee: fixed!(0),
})),
None => None,
}
})
})
});

StorageVersion::new(1).put::<Pallet<T>>();
Expand Down Expand Up @@ -224,16 +223,15 @@ pub mod v2 {
symbol,
true,
);
match band_rate {
Some(band_rate) => Some(Some(BandRateV2 {
band_rate.map(|band_rate| {
Some(BandRateV2 {
value: band_rate.value,
last_updated: band_rate.last_updated,
last_updated_block: now,
request_id: band_rate.request_id,
dynamic_fee: fixed!(0),
})),
None => None,
}
})
})
});

StorageVersion::new(2).put::<Pallet<T>>();
Expand Down Expand Up @@ -281,13 +279,10 @@ pub mod v2 {
let rates_vec = vec!["USD", "RUB"];
rates_vec.iter().cloned().for_each(|symbol| {
assert_eq!(SymbolRatesV1::<Runtime>::get(symbol), None);
assert_eq!(
SymbolCheckBlock::<Runtime>::get(
1 + GetRateStaleBlockPeriod::get(),
symbol
),
false,
);
assert!(!SymbolCheckBlock::<Runtime>::get(
1 + GetRateStaleBlockPeriod::get(),
symbol
));
SymbolRatesV1::<Runtime>::insert(symbol, Some(sample_rate.clone()));
});

Expand All @@ -299,13 +294,10 @@ pub mod v2 {
.expect("Expected to get rate for the specified symbol")
.last_updated_block;
assert_eq!(last_updated_block, 1);
assert_eq!(
SymbolCheckBlock::<Runtime>::get(
1 + GetRateStaleBlockPeriod::get(),
symbol
),
true,
);
assert!(SymbolCheckBlock::<Runtime>::get(
1 + GetRateStaleBlockPeriod::get(),
symbol
));
}
assert_eq!(Pallet::<Runtime>::on_chain_storage_version(), 2);
});
Expand Down
37 changes: 15 additions & 22 deletions pallets/band/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ fn add_and_remove_relayers_should_forbid_non_root_call() {
);

assert_noop!(
Band::remove_relayers(RuntimeOrigin::signed(11), relayers.clone()),
Band::remove_relayers(RuntimeOrigin::signed(11), relayers),
BadOrigin
);

Expand All @@ -93,8 +93,7 @@ fn add_and_remove_relayers_should_forbid_non_root_call() {
fn add_relayers_should_check_if_relayer_was_already_added() {
new_test_ext().execute_with(|| {
let relayers = vec![1, 2, 3, 4, 5];
Band::add_relayers(RuntimeOrigin::root(), relayers.clone())
.expect("Failed to add relayers");
Band::add_relayers(RuntimeOrigin::root(), relayers).expect("Failed to add relayers");

assert_noop!(
Band::add_relayers(RuntimeOrigin::root(), vec![1]),
Expand All @@ -107,8 +106,7 @@ fn add_relayers_should_check_if_relayer_was_already_added() {
fn remove_relayers_should_check_if_no_such_relayer_exists() {
new_test_ext().execute_with(|| {
let relayers = vec![1, 2, 3, 4, 5];
Band::add_relayers(RuntimeOrigin::root(), relayers.clone())
.expect("Failed to add relayers");
Band::add_relayers(RuntimeOrigin::root(), relayers).expect("Failed to add relayers");

assert_noop!(
Band::remove_relayers(RuntimeOrigin::root(), vec![6]),
Expand All @@ -121,8 +119,7 @@ fn remove_relayers_should_check_if_no_such_relayer_exists() {
fn add_relayers_should_ignore_duplicates() {
new_test_ext().execute_with(|| {
let relayers = vec![1, 2, 3, 4, 5, 3, 5, 4];
Band::add_relayers(RuntimeOrigin::root(), relayers.clone())
.expect("Failed to add relayers");
Band::add_relayers(RuntimeOrigin::root(), relayers).expect("Failed to add relayers");

assert_eq!(
Band::trusted_relayers().expect("Expected initialized relayers"),
Expand All @@ -135,8 +132,7 @@ fn add_relayers_should_ignore_duplicates() {
fn remove_relayers_should_ignore_duplicates() {
new_test_ext().execute_with(|| {
let relayers = vec![1, 2, 3, 4, 5];
Band::add_relayers(RuntimeOrigin::root(), relayers.clone())
.expect("Failed to add relayers");
Band::add_relayers(RuntimeOrigin::root(), relayers).expect("Failed to add relayers");

Band::remove_relayers(RuntimeOrigin::root(), vec![1, 2, 3, 2, 1, 1, 3])
.expect("Failed to remove relayers");
Expand Down Expand Up @@ -524,17 +520,14 @@ fn check_block_symbol_should_work() {
)
.expect("Failed to relay rates");

assert_eq!(
SymbolCheckBlock::<Runtime>::get(1 + GetRateStaleBlockPeriod::get(), "USD".to_owned()),
true
);
assert!(SymbolCheckBlock::<Runtime>::get(
1 + GetRateStaleBlockPeriod::get(),
"USD".to_owned()
));

<Band as Hooks<BlockNumberFor<Runtime>>>::on_initialize(601);

assert_eq!(
SymbolCheckBlock::<Runtime>::get(601u64, "USD".to_owned()),
false
)
assert!(!SymbolCheckBlock::<Runtime>::get(601u64, "USD".to_owned()))
})
}

Expand All @@ -556,25 +549,25 @@ fn set_invalid_dynamic_fee_parameters_should_fail() {
new_test_ext().execute_with(|| {
let parameters = FeeCalculationParameters::new(fixed!(-0.1), fixed!(0), fixed!(0));
assert_eq!(
Band::set_dynamic_fee_parameters(RuntimeOrigin::root(), parameters.clone(),),
Band::set_dynamic_fee_parameters(RuntimeOrigin::root(), parameters),
Err(Error::<Runtime>::InvalidDynamicFeeParameters.into())
);

let parameters = FeeCalculationParameters::new(fixed!(0), fixed!(-1), fixed!(0));
assert_eq!(
Band::set_dynamic_fee_parameters(RuntimeOrigin::root(), parameters.clone(),),
Band::set_dynamic_fee_parameters(RuntimeOrigin::root(), parameters),
Err(Error::<Runtime>::InvalidDynamicFeeParameters.into())
);

let parameters = FeeCalculationParameters::new(fixed!(0), fixed!(0), fixed!(-1));
assert_eq!(
Band::set_dynamic_fee_parameters(RuntimeOrigin::root(), parameters.clone(),),
Band::set_dynamic_fee_parameters(RuntimeOrigin::root(), parameters),
Err(Error::<Runtime>::InvalidDynamicFeeParameters.into())
);

let parameters = FeeCalculationParameters::new(fixed!(1), fixed!(0), fixed!(0));
assert_eq!(
Band::set_dynamic_fee_parameters(RuntimeOrigin::root(), parameters.clone(),),
Band::set_dynamic_fee_parameters(RuntimeOrigin::root(), parameters),
Err(Error::<Runtime>::InvalidDynamicFeeParameters.into())
);
})
Expand All @@ -585,7 +578,7 @@ fn should_calculate_dynamic_fee() {
new_test_ext().execute_with(|| {
let parameters = FeeCalculationParameters::new(fixed!(0.1), fixed!(0.01), fixed!(0.05));

Band::set_dynamic_fee_parameters(RuntimeOrigin::root(), parameters.clone())
Band::set_dynamic_fee_parameters(RuntimeOrigin::root(), parameters)
.expect("Expected to set the dynamic fee calculation parameters");

let relayer = 1;
Expand Down