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

Reply via email to