@@ -950,6 +950,88 @@ async fn test_evm_execute_message_end_to_end_counter(config: impl LineraNetConfi
950950 Ok ( ( ) )
951951}
952952
953+ #[ cfg( with_revm) ]
954+ #[ cfg_attr( feature = "storage-service" , test_case( LocalNetConfig :: new_test( Database :: Service , Network :: Grpc ) ; "storage_test_service_grpc" ) ) ]
955+ #[ cfg_attr( feature = "scylladb" , test_case( LocalNetConfig :: new_test( Database :: ScyllaDb , Network :: Grpc ) ; "scylladb_grpc" ) ) ]
956+ #[ cfg_attr( feature = "dynamodb" , test_case( LocalNetConfig :: new_test( Database :: DynamoDb , Network :: Grpc ) ; "aws_grpc" ) ) ]
957+ #[ cfg_attr( feature = "kubernetes" , test_case( SharedLocalKubernetesNetTestingConfig :: new( Network :: Grpc , BuildArg :: Build ) ; "kubernetes_grpc" ) ) ]
958+ #[ cfg_attr( feature = "remote-net" , test_case( RemoteNetTestingConfig :: new( None ) ; "remote_net_grpc" ) ) ]
959+ #[ test_log:: test( tokio:: test) ]
960+ async fn test_evm_empty_instantiate ( config : impl LineraNetConfig ) -> Result < ( ) > {
961+ use alloy_sol_types:: { sol, SolCall } ;
962+ use linera_base:: vm:: EvmQuery ;
963+ use linera_execution:: test_utils:: solidity:: { get_evm_contract_path, read_evm_u64_entry} ;
964+ use linera_sdk:: abis:: evm:: EvmAbi ;
965+ let _guard = INTEGRATION_TEST_GUARD . lock ( ) . await ;
966+ tracing:: info!( "Starting test {}" , test_name!( ) ) ;
967+
968+ let ( mut net, client1) = config. instantiate ( ) . await ?;
969+
970+ let client2 = net. make_client ( ) . await ;
971+ client2. wallet_init ( None ) . await ?;
972+
973+ let chain1 = client1. load_wallet ( ) ?. default_chain ( ) . unwrap ( ) ;
974+ let chain2 = client1. open_and_assign ( & client2, Amount :: ONE ) . await ?;
975+
976+ // Creating the API of the contracts
977+
978+ sol ! {
979+ function get_value( ) ;
980+ }
981+ let query = get_valueCall { } ;
982+ let query = query. abi_encode ( ) ;
983+ let query = EvmQuery :: Query ( query) ;
984+
985+ let constructor_argument = Vec :: new ( ) ;
986+ let instantiation_argument = Vec :: new ( ) ;
987+
988+ let ( evm_contract, _dir) =
989+ get_evm_contract_path ( "tests/fixtures/evm_example_empty_instantiate.sol" ) ?;
990+
991+ let application_id = client1
992+ . publish_and_create :: < EvmAbi , Vec < u8 > , Vec < u8 > > (
993+ evm_contract. clone ( ) ,
994+ evm_contract,
995+ VmRuntime :: Evm ,
996+ & constructor_argument,
997+ & instantiation_argument,
998+ & [ ] ,
999+ None ,
1000+ )
1001+ . await ?;
1002+
1003+ let port1 = get_node_port ( ) . await ;
1004+ let port2 = get_node_port ( ) . await ;
1005+ let mut node_service1 = client1. run_node_service ( port1, ProcessInbox :: Skip ) . await ?;
1006+ let mut node_service2 = client2. run_node_service ( port2, ProcessInbox :: Skip ) . await ?;
1007+
1008+ // Creating the applications.
1009+
1010+ let application1 = node_service1
1011+ . make_application ( & chain1, & application_id)
1012+ . await ?;
1013+
1014+ let application2 = node_service2
1015+ . make_application ( & chain2, & application_id)
1016+ . await ?;
1017+
1018+ // Checking the initial value of the contracts.
1019+ let result = application1. run_json_query ( query. clone ( ) ) . await ?;
1020+ let counter_value = read_evm_u64_entry ( result) ;
1021+ assert_eq ! ( counter_value, 42 ) ;
1022+ let result = application2. run_json_query ( query) . await ?;
1023+ let counter_value = read_evm_u64_entry ( result) ;
1024+ assert_eq ! ( counter_value, 37 ) ;
1025+
1026+ node_service1. ensure_is_running ( ) ?;
1027+ node_service2. ensure_is_running ( ) ?;
1028+
1029+ net. ensure_is_running ( ) . await ?;
1030+ net. terminate ( ) . await ?;
1031+
1032+ Ok ( ( ) )
1033+ }
1034+
9531035#[ cfg( with_revm) ]
9541036#[ cfg_attr( feature = "storage-service" , test_case( LocalNetConfig :: new_test( Database :: Service , Network :: Grpc ) ; "storage_test_service_grpc" ) ) ]
9551037#[ cfg_attr( feature = "scylladb" , test_case( LocalNetConfig :: new_test( Database :: ScyllaDb , Network :: Grpc ) ; "scylladb_grpc" ) ) ]
0 commit comments