Skip to content

Commit

Permalink
generating test transactions with move script
Browse files Browse the repository at this point in the history
  • Loading branch information
yuunlimm committed Jan 23, 2025
1 parent 18f5a07 commit f4a5496
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 0 deletions.
7 changes: 7 additions & 0 deletions apps/nextra/next.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,13 @@ export default withBundleAnalyzer(
"/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/txn-importer",
permanent: true,
},
{
source:
"/indexer/indexer-sdk/documentation/advanced-tutorials/txn-scripts",
destination:
"/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/txn-scripts",
permanent: true,
},
{
source: "/indexer/txn-stream/labs-hosted",
destination: "/en/build/indexer/api/labs-hosted",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@ export default {
"txn-importer": {
title: "Importing Transactions",
},
"txn-script": {
title: "Generating Transactions with Move Scripts",
},
};
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).

0 comments on commit f4a5496

Please sign in to comment.