-
Notifications
You must be signed in to change notification settings - Fork 118
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
generating test transactions with move script
- Loading branch information
Showing
3 changed files
with
88 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
78 changes: 78 additions & 0 deletions
78
...es/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/txn-script.mdx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
--- | ||
title: "Aptos Transaction Import" | ||
--- | ||
|
||
## Overview: | ||
|
||
This section outlines the steps for creating a testing transaction with a Move script. | ||
|
||
### Steps: | ||
|
||
1. **Create Your Move Project** | ||
|
||
Create your Move project and write a module to output the scenario that you would like to test in your processor. You can refer to an example [here](https://github.com/aptos-labs/aptos-core/tree/main/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions/move_fixtures). | ||
|
||
2. **Set Up Accounts** | ||
|
||
1. These accounts will be used to deploy your module. | ||
2. Set up as many accounts as you need. Refer to the guide [here](https://aptos.dev/en/build/cli/setup-cli). | ||
3. Update `aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions/testing_accounts.yaml` with your accounts. | ||
|
||
> 💡 **Note:** Do not use real accounts here. Only use test accounts created in the CLI specifically for testing. | ||
3. **Create a Configuration File** | ||
|
||
1. Create a [configuration file in the `move_fixtures` directory](https://github.com/aptos-labs/aptos-core/blob/main/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions/move_fixtures/simple_user_script.yaml). | ||
2. This configuration file should include unique transaction names and details for each transaction. Example configuration: | ||
output_name: the name of the transaction json output | ||
script_path: the path to the Move script | ||
sender_address: the address of the account that will send the transaction | ||
|
||
```yaml | ||
transactions: | ||
- output_name: simple_user_script1 | ||
script_path: simple_user_script | ||
sender_address: <account_address> | ||
- output_name: simple_user_script2 | ||
script_path: simple_user_script2 | ||
sender_address: <account_address> | ||
``` | ||
4. **Generate JSON Files and Rust File** | ||
Once the Move files and configuration are set up, run the same command used to import transactions: | ||
- testing-folder is where your Move files are stored. | ||
- output-foler can be set to any folder where you want to store the generated files. | ||
```bash | ||
cargo run -- --testing-folder ./imported_transactions --output-folder ../indexer-test-transactions/src/ | ||
``` | ||
|
||
This command will: | ||
|
||
1. Read the configuration in the `move_fixtures` folder. | ||
2. Execute the specified Move scripts. | ||
3. Output the generated JSON files to the designated folder (`~/aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator/json_transactions`). | ||
4. Update `generated_transactions.rs` with the new transaction names specified in step 3. | ||
|
||
### How to Use the Testing Transactions | ||
|
||
- **Export the Generated File**: | ||
|
||
Update the [`mod.rs`](https://github.com/aptos-labs/aptos-indexer-processor-example/blob/main/test-transactions-example/src/json_transactions/mod.rs) file to include the generated Rust file containing the transaction constants. | ||
|
||
- **Export the `json_transactions` Folder**: | ||
|
||
Ensure the `json_transactions` folder is properly exported in the library file. | ||
|
||
[Example](https://github.com/aptos-labs/aptos-indexer-processor-example/blob/main/test-transactions-example/src/lib.rs). | ||
|
||
- **Add as a Dependency**: | ||
|
||
Include the crate containing the generated transactions as a dependency in the `Cargo.toml` file of your test crate. (Internally, transactions are stored in `aptos-core` and used in the [processor repo](https://github.com/aptos-labs/aptos-indexer-processors/blob/0c92d323b0f560b5f8601a831a36520ad9b72d68/rust/Cargo.toml#L34)). | ||
|
||
- **Integrate into Test Cases**: | ||
|
||
Use the exported transaction constants directly in your test cases to simulate real transactions and validate processing logic. | ||
|
||
[Example usage](https://github.com/aptos-labs/aptos-indexer-processor-example/tree/main/test-transactions-example). |