Good day to all.
Currently I am working on simulating concurrent debit and credit
transactions (similar to a wallet environment) via journal entries. My
setup are as follows
Load Test:
- JMeter with third party plugin named Ultimate Thread Group to simulate
parallel requests across users
- Ultimate Thread Group parameters
- Start Threads Count: 10
- Initial Delay: 10s
- Startup Time: 30s
- Hold Time: 30s
- Shutdown Time: 30s
- Ultimate Thread Group has 3 samplers which all are HTTP Requests
- 1 sampler is a login request with a once only controller to fetch the
accessToken to be passed on the next two requests
- 2 samplers which are debit and credit requests via addJournal API call
with a transfer amount of 1.00
Fineract CN:
- Setup of Fineract CN is based on
https://github.com/apache/fineract-cn-docker-compose
- Created a Liability-type ledger with identifier 5000
- Created a subledger with identifier 5200 named as First Wallet Group
- Created two wallets (accounts) under 5200 with names Wallet 1, Wallet
2, and identifiers 5201, 5202, respectively having both 50,000 balance
each.
Platform and Specifications:
- Google Cloud Platform - 8vCPUs, 30GB memory, 100GB SSD
After the load test, statistics shown that there are 92 credit
transactions and 84 debit transactions for the account 5201. The
balances of both wallets are found below:
Wallet 1 (5201): 50,016
Wallet 2 (5202): 49,999
My concerns are first, there are deadlocks occurring upon load testing.
Second, it appears there is a balance discrepancy where some of the
credit and debit transactions
are missing for both accounts. Computed balance from the above
statistics shows the balance of 5201 should be 50,008 and 5202 being
49,992. Even after load testing, balance
of both accounts should remain the same as it were initially upon
account creation, but that is not the case. Third, I have checked in the
cassandra db where there are 113
pending and 63 processed transactions, but it seems the 113 does not
match with the results above where most transactions are successfully
transferred/processed. What I would like to know is that if I have
missed something upon setting up or any configurations that must be
tweaked before proceeding to such testing. I greatly appreciate to the
help I will be given.
Best regards,
Jasper