theosotr / cynthia Goto Github PK
View Code? Open in Web Editor NEWData-Oriented Differential Testing of ORM Systems.
License: GNU General Public License v3.0
Data-Oriented Differential Testing of ORM Systems.
License: GNU General Public License v3.0
As we start running tests in a larger scale, we need a tool for grouping crashes in order to ease the inspection of results.
Currently, the activerecord translator produces incorrect ORM queries when translating complex AQL queries, something that prevents us from testing activerecord
.
We have to systematically test this translator through the test
command on different backends, identify and fix the issues.
investigate if it is possible to run queries on new backends e.g.,
This may be useful to check whether ORM implement escaping properly.
Implicitly add all expressions to the select list.
Given one (or more) schema, cynthia should be able to re-execute a set of given AQL queries.
When I run replay
on a specific schema, and mismatch, it overrides existing mismatches.
For example, when I run:
cynthia replay --orms peewee,django -s Schema --mismatches 3
it produces results inside .cynthia/report/Schema/mismatches/1
rather than .cynthia/report/Schema/mismatches/3
.
For run
mode, cynthia should get the next available ID for assigning to the given query.
Currently, we generate arbitrary expressions without checking the types of sub-expressions. The postgres SQL dialect is typed, so many of the generated AQL queries are doomed to fail (e.g., for example when mixing char fields with interger fields).
We should add a CLI option (e.g., --well-typed
) to generate well-typed AQL expressions.
The clean command must remove all existing databases from MySQL and Postgres (except for the system databases).
For example when I run show databases
on MySQL.
+--------------------+
| Database |
+--------------------+
| information_schema |
| Acclaimed |
| Agism |
| Airlifts |
| Alexander |
| Alkalis |
| Amidst |
| Annotates |
| Apes |
| Applaud |
| Appraised |
| Aqueduct |
| Asoka |
| Asperger |
| Barreling |
| Bawling |
| Blaming |
| Bloodbath |
| Bouffant |
| Bragged |
| Brinks |
| Bummer |
| Bumpiest |
| Burbling |
| Cablecast |
| Calamity |
| Cane |
| Carapace |
| Carrier |
| Catalysis |
| Chirico |
| Choppers |
| Clinical |
| Clothed |
| Coachmen |
| Cohesion |
| Colors |
| Condoes |
| Contrives |
| Corduroys |
| Coverall |
| Curtseys |
| Cypriot |
| Damage |
| Darning |
| Deeming |
| Definable |
| Deviance |
| Diabetics |
| Difficult |
| Dilution |
| Dishwater |
| Dismaying |
| Doubter |
| Dreams |
| Driver |
| Drunkard |
| Duelists |
| Dusk |
| Elena |
| Enact |
| Enlivens |
| Ensnares |
| Epicurus |
| Erick |
| Erupts |
| Evens |
| Exam |
| Exchequer |
| Expedient |
| Expedites |
| Expel |
| Expensive |
| Facials |
| Fanatic |
| Felicity |
| Festive |
| Fireworks |
| Fisherman |
| Fringe |
| Frumpiest |
| Fuchsias |
| Funnily |
| Furiously |
| Gable |
| Galilean |
| Gates |
| Ghettoes |
| Ginseng |
| Girded |
| Glad |
| Glitch |
| Glottis |
| Godot |
| Goobers |
| Gore |
| Grazing |
| Grille |
| Grungier |
| Gyp |
| Hallmarks |
| Handouts |
| Harrowing |
| Hoffman |
| Homonym |
| Humberto |
| Ice |
| Immensely |
| Impeding |
| Implants |
| Insisted |
| Isinglass |
| Jauntier |
| Jeweled |
| Jilt |
| Knifed |
| Lanka |
| Larcenous |
| Lattice |
| Laymen |
| Legalese |
| Lenard |
| Liege |
| Lindy |
| Linnet |
| Liquifies |
| Lists |
| Looping |
| Lopes |
| Loving |
| Methought |
| Midday |
| Mixed |
| Moniker |
| Mortise |
| Nebraskan |
| Nicknamed |
| Nocturne |
| Nominees |
| Novelle |
| Now |
| Nuanced |
| Nurses |
| Nuzzle |
| Opponents |
| Originate |
| Outlast |
| Overdraws |
| Palmists |
| Panacea |
| Panniers |
| Pat |
| Pearliest |
| Peritonea |
| Pertness |
| Perverted |
| Pettiest |
| Pillaging |
| Pitchfork |
| Pits |
| Pneumatic |
| Potted |
| Prattles |
| Prayed |
| Precious |
| Present |
| Proteus |
| Pulpy |
| Putnam |
| Rainbow |
| Raised |
| Reachable |
| Reinforce |
| Rejoining |
| Rhodes |
| Ricardo |
| Riley |
| Robotics |
| Ronstadt |
| Rushes |
| Saner |
| Savvy |
| Scaffold |
| Scalene |
| Scrip |
| Selves |
| Sentiment |
| Sepal |
| Seventies |
| Sexton |
| Sharpest |
| Showbiz |
| Siestas |
| Sightread |
| Simulate |
| Skewing |
| Skitter |
| Skittish |
| Smokiness |
| Solecism |
| Sparklers |
| Spelt |
| Sporting |
| Storybook |
| Strainer |
| Strays |
| Succeed |
| Suffuses |
| Sundries |
| Tabooing |
| Target |
| Titter |
| Tom |
| Twisted |
| Unbinds |
| Unhorses |
| Vela |
| Velour |
| Verbals |
| Visitor |
| Wanamaker |
| Wang |
| Weekended |
| Winnowing |
| Woodcuts |
| Zilch |
| book |
| books |
| erp_progIITest |
| listing |
| mysql |
| performance_schema |
| proderp |
| sys |
+--------------------+
234 rows in set (0.05 sec)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.