Using Docker π³β
A sample url shortener app to test Keploy integration capabilities using Mux and MySQL.
Donβt have Keploy installed yet?
Before running this sample, make sure Keploy is installed on your system.
π Go to Installation GuideClone a sample URL shortener app π§ͺβ
git clone https://github.com/keploy/samples-go.git && cd samples-go/mux-mysql
go mod download
We will be using Docker compose to run the application as well as MySQL on Docker container.
Start MySQL Instanceβ
docker run -p 3306:3306 --rm --name mysql --network keploy-network -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
Capture the Testcasesβ
Build the Docker image of our application:
docker build -t url-short .
Once we have our Docker image ready, this command will start recording API calls using eBPF:
keploy record -c "docker run -p 8080:8080 --name urlshort --rm --network keploy-network url-short:latest"
Make API Calls using Postman or cURL command. Keploy with capture those calls to generate the test-suites containing testcases and data mocks.
Generate testcasesβ
To generate test cases we just need to make some API calls. You can use Postman or simply curl.
Generate shortened urlβ
curl --request POST \
--url http://localhost:8080/create \
--header 'content-type: application/json' \
--data '{
"link": "https://github.com"
}'
this will return the shortened url. The ts would automatically be ignored during testing because it'll always be different.
{
"message":"Converted",
"link":"http://localhost:8080/links/1",
"status":true
}
Access all shortened URLsβ
curl http://localhost:8080/all
Now both these API calls were captured as editable testcases and written to keploy/tests folder. The keploy directory would also have mocks file that contains all the outputs of MySQL operations. Here's what the folder structure look like:

Now, let's see the magic! β¨π« Want to see if everything works as expected?
Run the test casesβ
Run the test mode (in the project directory, not the Keploy directory):
keploy test -c "docker run -p 8080:8080 --name urlshort --rm --network keploy-network url-short:latest" --delay 10
Output should look like this:

No need to set up fake databases/APIs like MySQL or write mocks manually. Keploy automatically mocks them and the application thinks it's talking to MySQL. π
Wrapping it up πβ
Congrats on the journey so far! You've seen Keploy's power, flexed your coding muscles, and had a bit of fun too! Now, go out there and keep exploring, innovating, and creating! Remember, with the right tools and a sprinkle of fun, anything's possible.ππ
Happy coding! β¨π©βπ»π¨βπ»β¨
Running App Locally on Linux/WSL π§β
A Sample url shortener app to test Keploy integration capabilities using Mux and MySql.
Donβt have Keploy installed yet?
Before running this sample, make sure Keploy is installed on your system.
π Go to Installation GuideClone a sample URL shortener app π§ͺβ
git clone https://github.com/keploy/samples-go.git && cd samples-go/mux-mysql
go mod download
Weβll run our sample application locally, with the database running inside a Docker container. Ready? Letβs get the party started! π
Start the MySQL instanceβ
docker run -p 3306:3306 --rm --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
Now, we will create the binary of our application:-
export ConnectionString="root:my-secret-pw@tcp(localhost:3306)/mysql"
go build -o main
Capture the Testcasesβ
sudo -E PATH=$PATH keploy record -c "./main"
Generate testcasesβ
To generate test cases we just need to make some API calls. You can use Postman, Hoppscotch, or simply curl.
Generate shortened urlβ
curl --request POST \
--url http://localhost:8080/create \
--header 'content-type: application/json' \
--data '{
"link": "https://google.com"
}'
this will return the shortened url.
{
"message": "Converted",
"link": "http://localhost:8080/links/1",
"status": true
}
Redirect to original url from shortened urlβ
curl http://localhost:8080/links/1
Now, let's see the magic! πͺπ« Both these API calls were captured as a test case and should be visible on the Keploy CLI. You should see a keploy folder with the test cases and data mocks created.
Run the captured test casesβ
Now that we have our test case captured, run the test file.
sudo -E PATH=$PATH keploy test -c "./main" --delay 10
No need to set up dependencies like MySQL or write mocks for your testing. The application thinks it's talking to MySQL. π
We will get output something like this:
Wrapping it up πβ
Congrats on the journey so far! You've seen Keploy's power, flexed your coding muscles, and had a bit of fun too! Now, go out there and keep exploring, innovating, and creating! Remember, with the right tools and a sprinkle of fun, anything's possible.ππ