DendyPol / WalletOperations

0 stars 0 forks source link

Приложение не работает корректно в конкурентной среде #1

Open nickyat opened 4 months ago

nickyat commented 4 months ago

Проверка в 1 поток

Создание кошелька

curl -X POST http://127.0.0.1:8080/api/v1/wallet/create --header "Content-Type: application/json" 
10640103-477e-444c-8e2e-b8c8512804ad

Проверка баланса кошелька

echo "Баланс:" && curl http://127.0.0.1:8080/api/v1/wallet/10640103-477e-444c-8e2e-b8c8512804ad && echo 
Баланс:
0.00

Проводим в один поток 10000 пополнений по 1

echo '{"walletId":"10640103-477e-444c-8e2e-b8c8512804ad","operationType":"DEPOSIT","amount":1}'>/tmp/d.json
ab -c 1 -n 10000 -T 'application/json'  -p /tmp/d.json  http://127.0.0.1:8080/api/v1/wallet
...
Баланс:
10000.00

Проводим в один поток 9999 расходов по 1

echo '{"walletId":"10640103-477e-444c-8e2e-b8c8512804ad","operationType":"WITHDRAW","amount":1}'>/tmp/w.json
ab -c 1 -n 9999 -T 'application/json'  -p /tmp/w.json  http://127.0.0.1:8080/api/v1/wallet
...
Баланс:
1.00

Результат 10000-9999=1 ОК

Проверка в несколько потоков

Проводим в 10 потоков 10000 пополнений по 1

echo '{"walletId":"10640103-477e-444c-8e2e-b8c8512804ad","operationType":"DEPOSIT","amount":1}'>/tmp/d.json
ab -c 10 -n 10000 -T 'application/json'  -p /tmp/d.json  http://127.0.0.1:8080/api/v1/wallet
...
Баланс:
1113.00

FAIL: ожидался баланс в 10000

Проводим в 10 потоков 1112 расходов по 1

echo '{"walletId":"10640103-477e-444c-8e2e-b8c8512804ad","operationType":"WITHDRAW","amount":1}'>/tmp/w.json
ab -c 10 -n 1112 -T 'application/json'  -p /tmp/w.json  http://127.0.0.1:8080/api/v1/wallet
...
Баланс:
999.00

FAIL: ожидался баланс в 1

DendyPol commented 3 months ago

fix_race_condition

DendyPol commented 3 months ago

Исправил race condition

https://github.com/DendyPol/WalletOperations

Отправлено с iPhone

25 июня 2024 г., в 23:52, Николай Яцуков @.***> написал(а):

 Проверка в 1 поток

Создание кошелька

curl -X POST http://127.0.0.1:8080/api/v1/wallet/create --header "Content-Type: application/json" 10640103-477e-444c-8e2e-b8c8512804ad Проверка баланса кошелька

echo "Баланс:" && curl http://127.0.0.1:8080/api/v1/wallet/10640103-477e-444c-8e2e-b8c8512804ad && echo Баланс: 0.00 Проводим в один поток 10000 пополнений по 1

echo '{"walletId":"10640103-477e-444c-8e2e-b8c8512804ad","operationType":"DEPOSIT","amount":1}'>/tmp/d.json ab -c 1 -n 10000 -T 'application/json' -p /tmp/d.json http://127.0.0.1:8080/api/v1/wallet ... Баланс: 10000.00 Проводим в один поток 9999 расходов по 1

echo '{"walletId":"10640103-477e-444c-8e2e-b8c8512804ad","operationType":"WITHDRAW","amount":1}'>/tmp/w.json ab -c 1 -n 9999 -T 'application/json' -p /tmp/w.json http://127.0.0.1:8080/api/v1/wallet ... Баланс: 1.00 Результат 10000-9999=1 ОК

Проверка в несколько потоков

Проводим в 10 потоков 10000 пополнений по 1

echo '{"walletId":"10640103-477e-444c-8e2e-b8c8512804ad","operationType":"DEPOSIT","amount":1}'>/tmp/d.json ab -c 10 -n 10000 -T 'application/json' -p /tmp/d.json http://127.0.0.1:8080/api/v1/wallet ... Баланс: 1113.00 FAIL: ожидался баланс в 10000

Проводим в 10 потоков 1112 расходов по 1

echo '{"walletId":"10640103-477e-444c-8e2e-b8c8512804ad","operationType":"WITHDRAW","amount":1}'>/tmp/w.json ab -c 10 -n 1112 -T 'application/json' -p /tmp/w.json http://127.0.0.1:8080/api/v1/wallet ... Баланс: 999.00

FAIL: ожидался баланс в 1

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.