Skip to content

Commit 8736bb3

Browse files
committed
generating test transactions with move script
1 parent aeacbb0 commit 8736bb3

File tree

3 files changed

+112
-0
lines changed

3 files changed

+112
-0
lines changed

apps/nextra/next.config.mjs

+7
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,13 @@ export default withBundleAnalyzer(
460460
"/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/txn-importer",
461461
permanent: true,
462462
},
463+
{
464+
source:
465+
"/indexer/indexer-sdk/documentation/advanced-tutorials/txn-script",
466+
destination:
467+
"/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/txn-script",
468+
permanent: true,
469+
},
463470
{
464471
source: "/indexer/txn-stream/labs-hosted",
465472
destination: "/en/build/indexer/api/labs-hosted",

apps/nextra/pages/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/_meta.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@ export default {
22
"txn-importer": {
33
title: "Importing Transactions",
44
},
5+
"txn-script": {
6+
title: "Generating Transactions with Move Scripts",
7+
},
58
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
---
2+
title: "Aptos Transaction generated using Move Script"
3+
---
4+
5+
import { Callout, Steps } from "nextra/components"
6+
7+
## Overview:
8+
9+
This section outlines how to create test transactions with Move scripts.
10+
11+
## Prerequisites
12+
13+
1. Clone the [aptos-core](https://github.com/aptos-labs/aptos-core) repository:
14+
- Navigate to the `aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator` directory.
15+
16+
## How to Generate Test Transactions using Move Script
17+
<Steps>
18+
### Set up `move_fixtures` folder
19+
Before proceeding, ensure you have the move_fixtures folder set up in the appropriate location:
20+
1. Location:
21+
The move_fixtures folder should be created in the `aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions` directory. This is the folder where Move scripts and their configurations for test transactions will be stored.
22+
23+
<Callout> **Note:** Do not create the `move_fixtures` folder in your processor repository. All Move-related files should reside in the `aptos-core` repository under the specified directory. </Callout>
24+
2. Steps to set up the follder:
25+
- if starting fresh, remove all existing files and projects in the `move_fixtures` folder in the aptos-core repo
26+
- Create your own Move projects/scripts in the move_fixtures folder (detailed in the next step)
27+
28+
### Create Your Move Project
29+
30+
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).
31+
32+
### Set Up Test Accounts
33+
34+
1. These accounts will be used to deploy your module.
35+
2. Set up as many accounts as you need. These accounts will be used to send the scripted transactions. Refer to the guide [here](https://aptos.dev/en/build/cli/setup-cli) to create accounts.
36+
3. Update `aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions/testing_accounts.yaml` with your accounts.
37+
38+
<Callout> **Note:** Do not use real accounts here. Only use test accounts created in the CLI specifically for testing. </Callout>
39+
40+
### Create a Configuration File
41+
Each configuration file defines a sequences of transactions for a test scenario.
42+
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). Name the configuration file according to the test scenario it corresponds to.
43+
2. This configuration file should contain unique transaction names and details for each transaction. The transactions should be listed in the order they are to be executed. Example configuration:
44+
output_name: the name of the transaction json output
45+
script_path: the path to the Move script
46+
sender_address: the address of the account that will send the transaction
47+
48+
```yaml
49+
transactions:
50+
- output_name: simple_user_script1
51+
script_path: simple_user_script
52+
sender_address: <account_address>
53+
- output_name: simple_user_script2
54+
script_path: simple_user_script2
55+
sender_address: <account_address>
56+
```
57+
58+
### Generate JSON Files and Rust File
59+
60+
Once the Move files and configuration are set up, run the same command used to import transactions:
61+
- testing-folder is where your Move files are stored.
62+
- output-folder can be set to any folder where you want to store the generated files.
63+
64+
```bash
65+
cd ~/aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator
66+
cargo run -- --testing-folder ./imported_transactions --output-folder ../indexer-test-transactions/src/
67+
```
68+
69+
This command will:
70+
71+
1. Read the configuration in the `move_fixtures` folder.
72+
2. Execute the specified Move scripts.
73+
3. Output the generated JSON files to the designated folder (`~/aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator/json_transactions`).
74+
4. Update `generated_transactions.rs` with the new transaction names specified in step 3.
75+
76+
</Steps>
77+
78+
## How to Use Test Transactions
79+
80+
- **Export the Generated File**:
81+
82+
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.
83+
84+
- **Export the `json_transactions` Folder**:
85+
86+
Ensure the `json_transactions` folder is properly exported in the library file.
87+
88+
[Example](https://github.com/aptos-labs/aptos-indexer-processor-example/blob/main/test-transactions-example/src/lib.rs).
89+
90+
- **Add as a Dependency**:
91+
92+
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)).
93+
94+
- **Integrate into Test Cases**:
95+
96+
Use the exported transaction constants directly in your test cases to simulate real transactions and validate processing logic.
97+
98+
[Example usage](https://github.com/aptos-labs/aptos-indexer-processor-example/tree/main/test-transactions-example).
99+
100+
101+
## Next Steps
102+
Once the transaction constants are integrated, you can use them in processor tests to validate functionality. For detailed instructions on writing processor tests, refer to [Writing Processor Tests]().

0 commit comments

Comments
 (0)