From 736e5c3ec7c61742a4acbe07468521081fd7b90f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 26 Oct 2020 08:18:05 +0000 Subject: [PATCH] Fix BigTable reward type encoding (bp #13142) (#13146) * Fix reward type encoding (cherry picked from commit 0a89bb4d3c2e1145a827c677fbecba51ba645458) * Don't reuse BPF target build artifacts (cherry picked from commit 41a56e14fc3defaccb9eafb5a62f58adbdd5c0f0) Co-authored-by: Michael Vines --- .buildkite/hooks/pre-command | 5 +++++ storage-bigtable/src/convert.rs | 37 +++++++++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index f7151acc35..3e0491d64f 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -31,4 +31,9 @@ export CARGO_TARGET_CACHE=$HOME/cargo-target-cache/"$CHANNEL"-"$BUILDKITE_LABEL" mkdir -p "$CARGO_TARGET_CACHE"/target rsync -a --delete --link-dest="$CARGO_TARGET_CACHE" "$CARGO_TARGET_CACHE"/target . + + # Don't reuse BPF target build artifacts due to incremental build issues with + # `std: + # "found possibly newer version of crate `std` which `xyz` depends on + rm -rf target/bpfel-unknown-unknown ) diff --git a/storage-bigtable/src/convert.rs b/storage-bigtable/src/convert.rs index 542a5cbf68..e41e28805e 100644 --- a/storage-bigtable/src/convert.rs +++ b/storage-bigtable/src/convert.rs @@ -46,8 +46,8 @@ impl From for Reward { 0 => None, 1 => Some(RewardType::Fee), 2 => Some(RewardType::Rent), - 3 => Some(RewardType::Voting), - 4 => Some(RewardType::Staking), + 3 => Some(RewardType::Staking), + 4 => Some(RewardType::Voting), _ => None, }, } @@ -313,3 +313,36 @@ impl From for CompiledInstruction { } } } + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_reward_type_encode() { + let mut reward = Reward { + pubkey: "invalid".to_string(), + lamports: 123, + post_balance: 321, + reward_type: None, + }; + let gen_reward: generated::Reward = reward.clone().into(); + assert_eq!(reward, gen_reward.into()); + + reward.reward_type = Some(RewardType::Fee); + let gen_reward: generated::Reward = reward.clone().into(); + assert_eq!(reward, gen_reward.into()); + + reward.reward_type = Some(RewardType::Rent); + let gen_reward: generated::Reward = reward.clone().into(); + assert_eq!(reward, gen_reward.into()); + + reward.reward_type = Some(RewardType::Voting); + let gen_reward: generated::Reward = reward.clone().into(); + assert_eq!(reward, gen_reward.into()); + + reward.reward_type = Some(RewardType::Staking); + let gen_reward: generated::Reward = reward.clone().into(); + assert_eq!(reward, gen_reward.into()); + } +}