Fix consensus test code.
This commit is contained in:
parent
22c4298bee
commit
af05939d74
@ -25,6 +25,7 @@ use substate::*;
|
|||||||
use tests::helpers::*;
|
use tests::helpers::*;
|
||||||
use ethjson;
|
use ethjson;
|
||||||
use trace::{Tracer, NoopTracer};
|
use trace::{Tracer, NoopTracer};
|
||||||
|
use trace::{VMTracer, NoopVMTracer};
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
struct CallCreate {
|
struct CallCreate {
|
||||||
@ -48,32 +49,35 @@ impl From<ethjson::vm::Call> for CallCreate {
|
|||||||
|
|
||||||
/// Tiny wrapper around executive externalities.
|
/// Tiny wrapper around executive externalities.
|
||||||
/// Stores callcreates.
|
/// Stores callcreates.
|
||||||
struct TestExt<'a, T> where T: 'a + Tracer {
|
struct TestExt<'a, T, V> where T: 'a + Tracer, V: 'a + VMTracer {
|
||||||
ext: Externalities<'a, T>,
|
ext: Externalities<'a, T, V>,
|
||||||
callcreates: Vec<CallCreate>,
|
callcreates: Vec<CallCreate>,
|
||||||
contract_address: Address
|
contract_address: Address
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, T> TestExt<'a, T> where T: 'a + Tracer {
|
impl<'a, T, V> TestExt<'a, T, V> where T: 'a + Tracer, V: 'a + VMTracer {
|
||||||
fn new(state: &'a mut State,
|
fn new(
|
||||||
info: &'a EnvInfo,
|
state: &'a mut State,
|
||||||
engine: &'a Engine,
|
info: &'a EnvInfo,
|
||||||
vm_factory: &'a Factory,
|
engine: &'a Engine,
|
||||||
depth: usize,
|
vm_factory: &'a Factory,
|
||||||
origin_info: OriginInfo,
|
depth: usize,
|
||||||
substate: &'a mut Substate,
|
origin_info: OriginInfo,
|
||||||
output: OutputPolicy<'a, 'a>,
|
substate: &'a mut Substate,
|
||||||
address: Address,
|
output: OutputPolicy<'a, 'a>,
|
||||||
tracer: &'a mut T) -> Self {
|
address: Address,
|
||||||
|
tracer: &'a mut T,
|
||||||
|
vm_tracer: &'a mut V,
|
||||||
|
) -> Self {
|
||||||
TestExt {
|
TestExt {
|
||||||
contract_address: contract_address(&address, &state.nonce(&address)),
|
contract_address: contract_address(&address, &state.nonce(&address)),
|
||||||
ext: Externalities::new(state, info, engine, vm_factory, depth, origin_info, substate, output, tracer),
|
ext: Externalities::new(state, info, engine, vm_factory, depth, origin_info, substate, output, tracer, vm_tracer),
|
||||||
callcreates: vec![]
|
callcreates: vec![]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, T> Ext for TestExt<'a, T> where T: Tracer {
|
impl<'a, T, V> Ext for TestExt<'a, T, V> where T: Tracer, V: VMTracer {
|
||||||
fn storage_at(&self, key: &H256) -> H256 {
|
fn storage_at(&self, key: &H256) -> H256 {
|
||||||
self.ext.storage_at(key)
|
self.ext.storage_at(key)
|
||||||
}
|
}
|
||||||
@ -186,6 +190,7 @@ fn do_json_test_for(vm_type: &VMType, json_data: &[u8]) -> Vec<String> {
|
|||||||
|
|
||||||
let mut substate = Substate::new();
|
let mut substate = Substate::new();
|
||||||
let mut tracer = NoopTracer;
|
let mut tracer = NoopTracer;
|
||||||
|
let mut vm_tracer = NoopVMTracer;
|
||||||
let mut output = vec![];
|
let mut output = vec![];
|
||||||
|
|
||||||
// execute
|
// execute
|
||||||
@ -201,6 +206,7 @@ fn do_json_test_for(vm_type: &VMType, json_data: &[u8]) -> Vec<String> {
|
|||||||
OutputPolicy::Return(BytesRef::Flexible(&mut output), None),
|
OutputPolicy::Return(BytesRef::Flexible(&mut output), None),
|
||||||
params.address.clone(),
|
params.address.clone(),
|
||||||
&mut tracer,
|
&mut tracer,
|
||||||
|
&mut vm_tracer,
|
||||||
);
|
);
|
||||||
let evm = vm_factory.create();
|
let evm = vm_factory.create();
|
||||||
let res = evm.exec(params, &mut ex);
|
let res = evm.exec(params, &mut ex);
|
||||||
|
Loading…
Reference in New Issue
Block a user