pedrocarlo
300d918040
fix differential check for parse error
2025-10-07 15:03:50 -03:00
pedrocarlo
3b2583c540
adjust Interaction generation to take into account possibilty of PropertyDistribution to have 0 Weights
2025-10-07 14:17:37 -03:00
pedrocarlo
c578f7ba96
Faultless should produce any type of query, just not faulty
2025-10-07 14:15:51 -03:00
pedrocarlo
21fc8bae2a
Property::FaultyQuery and FsyncNoWait stored a list of tables to check the on the database. Again, the FaultyQuery could be a Drop Table which meant that we could be running a SELECT on an inexistent table. To solve this, just insert a Property that check all the tables in the db after a Faulty Property
2025-10-07 13:23:35 -03:00
pedrocarlo
6bad5d04ce
generate extensional queries when iterating over the next interaction, not when generating the property. This is necessary as the extensional queries can modify schema and thus could cause the next queries to fail because the DB enviroment context was not updated on generation time. Rule of thumb: queries should never be generated in bulk, always one a a time so the enviroment can be shadowed accordingly
2025-10-07 13:19:53 -03:00
pedrocarlo
6d5443d4f0
add Query::Placeholder
2025-10-07 11:38:47 -03:00
pedrocarlo
7eb504baef
certain properties cannot be generated if there are no tables in the current context
2025-10-07 11:38:47 -03:00
pedrocarlo
07cc1c548b
adjust query generation to avoid DROP for certain extensional queries
2025-10-07 11:38:47 -03:00
pedrocarlo
4fc7be5042
as we have DROP table now, if we want to generate extensional queries eagerly, without affecting how we document interactions with MVCC, we need to travel forward in time and shadow queries eagerly so we can generate queries correctly. This involves cloning the tables unfortunately which is inneficient but correct
2025-10-07 11:38:47 -03:00
pedrocarlo
3e8867c8f5
DropSelect property should only fail when error is not a parse error on the table name
2025-10-07 11:38:47 -03:00
pedrocarlo
7f93f64fc5
enable Drop statements
2025-10-07 11:38:47 -03:00
pedrocarlo
8b6456f843
do not allow Property::Queries to attempt to be generated
2025-10-07 02:36:14 -03:00
pedrocarlo
91da12390d
refactor property generation to use query distribution and avoid more
...
memory allocations
2025-10-07 02:36:14 -03:00
pedrocarlo
b1c26505b8
adjust Rng generic to include ?Sized + introduce WeightedDistribution trait
2025-10-07 02:36:13 -03:00
pedrocarlo
a5845285be
remove unnecessary functions
2025-10-07 02:36:13 -03:00
pedrocarlo
bb9c8dea4f
rework interaction generation to only generate possible queries + do less allocations
2025-10-07 02:36:13 -03:00
pedrocarlo
1d1b09dc17
modify query generation to always sample from valid queries
2025-10-07 02:36:13 -03:00
Jussi Saurio
aab7d989df
Merge 'Simulator diff print' from Pedro Muniz
...
I was trying to debug MVCC simulator and database diffs, and this change
makes it much easier to visualize this. This PR is just a small quality
of life upgrade for debugability.
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #3548
2025-10-05 18:34:26 +03:00
pedrocarlo
25ad94079c
print_diff in ReadYourUpdatesBack + TableHasExpectedContent
2025-10-03 11:34:40 -03:00
pedrocarlo
dc0d4e2dcb
print diffs in assert tables
2025-10-03 02:01:14 -03:00
bit-aloo
ff381c1036
clippy'ed
2025-10-02 19:30:57 +05:30
bit-aloo
46fab87634
Replaced manual validation in SimulatorCLI::validate with Clap features:
...
- Added `conflicts_with` for mutually exclusive flags
- Removed redundant default values for bool flags.
- Dropped manual validation checks in favor of Clap's built-in parsing guarantees.
2025-10-02 19:18:38 +05:30
bit-aloo
460b87fdfb
Refactor simulator logger initialization
...
- Changed `init_logger()` to return `anyhow::Result<()>`
- Removed deprecated usage of `with_ansi`
2025-10-02 19:18:33 +05:30
bit-aloo
889ae2cd78
Remove log and env_logger in favor of tracing
...
- Deleted `log` and `env_logger` from simulator dependencies
- Migrated remaining `log::error!` and `log::trace!` calls to `tracing` macros
2025-10-02 19:09:09 +05:30
Jussi Saurio
d3c9ef3a5c
sim: add Profile::SimpleMvcc
...
- max 2 connections
- max 1 table
- no faults
- no indexes
Makes discovering very basic bugs in MVCC much easier
2025-10-02 10:14:31 +03:00
pedrocarlo
b624e449bc
simulator: reopen database with mvcc when necessary
2025-10-01 11:38:11 -03:00
pedrocarlo
9f95499a55
do not count BEGIN, COMMIT, and ROLLBACK queries as interactions in the InteractionPlan, so we can generate more meaningful intereactions without hitting the max cap quickly
2025-09-27 23:52:57 -03:00
pedrocarlo
13764e6b8e
in mvcc if creating a ddl statement, first commit all connections
2025-09-27 23:52:57 -03:00
pedrocarlo
dc1b1469a3
write connection index to sql file
2025-09-27 23:52:57 -03:00
pedrocarlo
461c765b7b
fix shrinking extensional queries. Now we only keep queries and/or properties that contain a depending table
2025-09-27 23:52:57 -03:00
pedrocarlo
d3c2198a75
keep track of each pending query for the transaction and then apply the queries on commit
2025-09-27 23:52:57 -03:00
pedrocarlo
399f35f73c
for each connection keep track of the tables at the start of the
...
transaction as well
2025-09-27 23:52:57 -03:00
pedrocarlo
9fd73855d2
after we generated all interactions if some connection is still in a transaction, commit
2025-09-27 23:52:57 -03:00
pedrocarlo
ff9599abe1
do not generate non-conccurent transactions with mvcc
2025-09-27 23:52:57 -03:00
pedrocarlo
bbbdd8c1e2
simplify rusqlite execution
2025-09-27 23:52:57 -03:00
pedrocarlo
009a8188e4
correctly shrink transaction statments across connections
2025-09-27 23:52:57 -03:00
pedrocarlo
df420ab815
consolidate SimulatorEnv rollback code
2025-09-27 23:52:57 -03:00
pedrocarlo
026fd9ae9e
add ignore_error flag to interaction so that we fail on errors when executing interactions
2025-09-27 23:52:57 -03:00
pedrocarlo
f2d29ffaaf
make transactions truly concurrent with mvcc
2025-09-27 23:52:57 -03:00
pedrocarlo
d070c1c184
rollback active transaction in properties that error is acceptable
2025-09-27 23:52:57 -03:00
pedrocarlo
4cbf861699
use a different seed for gen_rng
2025-09-25 01:20:35 -03:00
pedrocarlo
44c08c02d1
do not shadow interactions when generating the next plan, only after the interaction is ran
2025-09-23 21:57:06 -03:00
pedrocarlo
69d09bcf8c
modify code to use runtime generation
2025-09-23 21:57:06 -03:00
pedrocarlo
5f83f3bdfe
modify plan generation to generate interactions on demand
2025-09-23 21:57:06 -03:00
pedrocarlo
6569d27bdc
compare rows order insensitively for differential testing
2025-09-22 15:33:37 -03:00
pedrocarlo
2cd7c68c35
adjust property generation to not panic by always having some property to select from
2025-09-22 15:24:30 -03:00
pedrocarlo
7d1f23dd3a
better diffing with similar crate
2025-09-22 15:24:30 -03:00
pedrocarlo
05034e1f9d
instead of incrementing interaction counter, just substitue the current state
2025-09-22 15:24:30 -03:00
pedrocarlo
6e2b0c901e
remove PanicGenerationContext and instead just pass the connection context directly
2025-09-21 14:16:46 -03:00
pedrocarlo
0e702fbec2
check FaultyQuery depending tables when shrinking
2025-09-20 12:01:07 -03:00