Commit Graph

147 Commits

Author SHA1 Message Date
pedrocarlo
bfeccf6543 integrate DropIndex in query generator 2025-10-13 13:56:36 -03:00
pedrocarlo
b6c5fee300 do not count certain interactions in the InteractionPlan and correctly report the length when shrinking 2025-10-13 02:34:43 -03:00
pedrocarlo
c072058e4b add Alter Table query generation in Sim 2025-10-13 02:04:15 -03:00
pedrocarlo
f593080c2a add Query::AlterTable variant 2025-10-10 11:08:04 -03:00
pedrocarlo
b6f94b2fa1 remove dead code in sim 2025-10-09 17:25:04 -03:00
pedrocarlo
f54b1132ca ignore Property::AllTableHaveExpectedContent when counting stats, so we can generate more interesting interactions 2025-10-09 01:20:03 -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
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
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
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
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
9fd73855d2 after we generated all interactions if some connection is still in a transaction, commit 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
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
5f83f3bdfe modify plan generation to generate interactions on demand 2025-09-23 21:57:06 -03:00
pedrocarlo
6e2b0c901e remove PanicGenerationContext and instead just pass the connection context directly 2025-09-21 14:16:46 -03:00
pedrocarlo
021d5d272a refactor shadowing code to take into account snapshot isolation 2025-09-20 12:01:07 -03:00
pedrocarlo
0293c32616 disable integrity check and indexes when using mvcc 2025-09-20 11:52:15 -03:00
pedrocarlo
850dbc75a2 adjust shrinking to keep previous interactions if there are no depending tables 2025-09-20 11:52:15 -03:00
pedrocarlo
c3cdb0e0fd add begin concurrent before each statement with mvcc 2025-09-20 11:52:15 -03:00
pedrocarlo
13f36880f8 adjust generation code to use the context from the current connection index instead of the whole database 2025-09-20 11:52:15 -03:00
pedrocarlo
c072b0314b fix shrinking 2025-09-18 12:00:18 -03:00
pedrocarlo
27a8f019c6 clippy 2025-09-17 10:49:24 -03:00
pedrocarlo
6039a30222 fix double create failure 2025-09-17 10:49:24 -03:00
pedrocarlo
81cff3e3d7 fix shrinking to use a secondary index that points to the Property that generated the interactions 2025-09-17 10:49:24 -03:00
pedrocarlo
f95ac87f06 simplify code for differential testing 2025-09-17 10:49:24 -03:00
pedrocarlo
4d9e676f65 simplify run_simualtion signature + remove watch mode file as it shares logic with default run simulation logic 2025-09-17 10:49:24 -03:00
pedrocarlo
b98c22a90e run simulation on the total list of interactions to avoid recomputing whole vec of interactions on each loop + change state management in preparation for multiple connections change 2025-09-17 10:49:24 -03:00
pedrocarlo
faf38fe196 add connection Index to interaction struct 2025-09-17 10:49:24 -03:00
pedrocarlo
7e02fbe7e7 make assertion to be cloneable 2025-09-17 10:49:24 -03:00
pedrocarlo
77cab30c5b add connection index to interaction 2025-09-17 10:49:24 -03:00
pedrocarlo
5f24ff6e45 fix non determinism by using IndexSet for order preserving iteration 2025-09-05 02:00:18 -03:00
pedrocarlo
8c7da3a704 impl SimIO for SimulatorIO 2025-09-01 11:11:03 -03:00
pedrocarlo
2f237fdcfd adjust remaining calculation to use the profile 2025-08-30 11:31:52 -03:00
pedrocarlo
962666831b read Profile file from path or use predefined profiles 2025-08-30 11:31:52 -03:00
pedrocarlo
06b923d0c1 adjust simulator to use correct trait signature 2025-08-30 11:31:52 -03:00
pedrocarlo
8010b7d0c7 make simulator use sql_generation crate as dependency 2025-08-25 22:59:31 -03:00