Skip to content

An automated testing tool to find logic bugs in JDBC connectors.

License

Notifications You must be signed in to change notification settings

THU-WingTecher/Coni

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Coni

Coni is an automated testing tool for database connectors. It reads the pre-defined connector state model and then generates semantically correct test cases based on the model. Coni utilizes differential testing to detect bugs in database connectors. Specifically, Coni compares whether the results from MariaDB Connector/J and AWS MySQL JDBC are consistent with those from MySQL Connector/J, and whether the results from PG JDBC are consistent with PG JDBC NG.

Coni-supported connectors:

  • MySQL Connector/J
  • MariaDB Connector/J
  • AWS MySQL JDBC
  • PG JDBC
  • PG JDBC NG

Getting Started

Requirements:

  • Java 17 or above
  • Maven (sudo apt install maven on Ubuntu)
  • Docker (sudo apt install docker-ce on Ubuntu)
  • The corresponding DBMSs for testing database connectors (i.e., MySQL for MySQL Connector/J)

The default run time is one hour. Running the following commands to start Coni:

cd Coni
docker compose up
mvn clean package
mvn dependency:copy-dependencies
java -classpath "target/Coni-1.0-SNAPSHOT.jar:target/dependency/*" Main ./property/mysql_cp.properties

Coni prints progress information every minute. The inconsistent behaviors detected during testing are categorized and output to the /out directory. The argument passed to Main is the config file path.

Additional Documentation

Coni JDBC State Model

About

An automated testing tool to find logic bugs in JDBC connectors.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages