mirror of
https://github.com/aljazceru/turso.git
synced 2026-01-07 10:14:21 +01:00
This reverts commitdbbc3f5190, reversing changes made to1cd5a49705. We're missing some mandatory parameters, causing these to fail under Antithesis.
65 lines
1.7 KiB
Python
Executable File
65 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env -S python3 -u
|
|
|
|
import logging
|
|
from logging.handlers import RotatingFileHandler
|
|
|
|
import turso
|
|
from antithesis.random import get_random
|
|
|
|
handler = RotatingFileHandler(
|
|
filename="bank_test.log", mode="a", maxBytes=1 * 1024 * 1024, backupCount=5, encoding=None, delay=0
|
|
)
|
|
handler.setLevel(logging.INFO)
|
|
|
|
logger = logging.getLogger("root")
|
|
logger.setLevel(logging.INFO)
|
|
|
|
logger.addHandler(handler)
|
|
|
|
try:
|
|
con = turso.connect("bank_test.db")
|
|
except Exception as e:
|
|
print(f"Error connecting to database: {e}")
|
|
exit(0)
|
|
|
|
cur = con.cursor()
|
|
|
|
length = cur.execute("SELECT num_accts FROM initial_state").fetchone()[0]
|
|
|
|
|
|
def transaction():
|
|
# check that sender and recipient are different
|
|
sender = get_random() % length + 1
|
|
recipient = get_random() % length + 1
|
|
if sender != recipient:
|
|
# get a random value to transfer between accounts
|
|
value = get_random() % 1e9
|
|
|
|
logger.info(f"Sender ID: {sender} | Recipient ID: {recipient} | Txn Val: {value}")
|
|
|
|
cur.execute("BEGIN TRANSACTION;")
|
|
|
|
# subtract value from balance of the sender account
|
|
cur.execute(f"""
|
|
UPDATE accounts
|
|
SET balance = balance - {value}
|
|
WHERE account_id = {sender};
|
|
""")
|
|
|
|
# add value to balance of the recipient account
|
|
cur.execute(f"""
|
|
UPDATE accounts
|
|
SET balance = balance + {value}
|
|
WHERE account_id = {recipient};
|
|
""")
|
|
|
|
cur.execute("COMMIT;")
|
|
|
|
|
|
# run up to 100 transactions
|
|
iterations = get_random() % 100
|
|
# logger.info(f"Starting {iterations} iterations")
|
|
for i in range(iterations):
|
|
transaction()
|
|
# logger.info(f"Finished {iterations} iterations")
|