Skip to content

Latest commit

 

History

History
183 lines (131 loc) · 4.64 KB

flask-redis.md

File metadata and controls

183 lines (131 loc) · 4.64 KB
id title sidebar_label description tags keyword
flask-redis
Sample Library App (Flask + Redis)
Flask + Redis
This application is a simple Library API built using Flask and Redis for data storage. It allows you to perform basic CRUD (Create, Read, Update, Delete) operations on Movie records.
flask
quickstart
samples
examples
tutorial
python-framework
redis
FastAPI Framework
Flask
Redis
Python
API Test generator
Auto case generation

Introduction

🪄 Dive into the world of Student CRUD Apps and see how seamlessly Keploy integrated with Flask and Redis. Buckle up, it's gonna be a fun ride! 🎢

import InstallationGuide from '../concepts/installation.md'

Get Started! 🎬

Clone the application 🧪

git clone https://github.com/keploy/samples-python.git && cd samples-python/flask-redis

Installation Keploy

Depending on your OS, choose your adventure:

We are going to run the application the following way

Using Docker Compose 🐳

We will be using Docker compose to run the application as well as Mongo on Docker container.

Lights, Camera, Record! 🎥

Capture the test-cases-

keploy record -c "docker compose up" --container-name "flask-web" --buildDelay 50

🔥Make some API calls. Postman, Hoppscotch or even curl - take your pick!

Let's make URLs short and sweet:

Generate testcases

To generate testcases we just need to make some API calls.

  1. Make a POST request:
curl -X POST http://localhost:5000/books/ \
-H "Content-Type: application/json" \
-d '{"title": "1984", "author": "George Orwell"}'
  1. Make a GET request:
curl -X GET "http://localhost:5000/books/?page=1&limit=10"
  1. Make a PUT request:
curl -X PUT http://localhost:5000/books/1 \
-H "Content-Type: application/json" \
-d '{"title": "1984 - Updated", "author": "George Orwell"}'
  1. Make a DELETE request:
curl -X DELETE http://localhost:5000/books/1

And once you are done, you can stop the recording and give yourself a pat on the back! With that simple spell, you've conjured up a test case with a mock! Explore the keploy directory and you'll discover your handiwork in tests directory and mocks.yml.

version: api.keploy.io/v1beta1
kind: Redis
name: mock-0
spec:
  metadata:
    type: config
  redisrequests:
    - origin: client
      message:
        - type: string
          data: "*4\r\n$6\r\nCLIENT\r\n$7\r\nSETINFO\r\n$8\r\nLIB-NAME\r\n$8\r\nredis-py\r\n"
  redisresponses:
    - origin: server
      message:
        - type: string
          data: "+OK\r\n"
  reqtimestampmock: 2024-08-02T22:15:10.6084523Z
  restimestampmock: 2024-08-02T22:15:10.608930466Z
---

Time to run the testcases

keploy test -c 'sudo docker compose up' --containerName "flask-web" --delay 10

You can also check the test summary from your cli

<=========================================>
  COMPLETE TESTRUN SUMMARY.
        Total tests: 11
        Total test passed: 10
        Total test failed: 1
        Total time taken: "15.13 s"

        Test Suite Name         Total Test      Passed          Failed          Time Taken

        "test-set-0"            6               6               0               "5.06 s"
        "test-set-1"            1               1               0               "5.02 s"
        "test-set-2"            4               3               1               "5.04 s"
<=========================================>

Some errors you may run into ?

  1. While running the application you might have some ports up and running that you are trying to access again. This would throw a EBPF error

You can check the ports from the below command and

sudo lsof -p

If you want to check which process is using a specific port (e.g., port 5000), use:

sudo lsof -i :5000

Once you have identified the PID of the process using the port you need, you can terminate the process with the kill command:

sudo kill -9 <PID>
  1. ERROR: for redis 'ContainerConfig'

The KeyError: 'ContainerConfig' issue you're encountering with Docker Compose is indicative of a problem with the Docker Compose file or its version compatibility.

Here’s how you can address and troubleshoot this error:

sudo apt-get update
sudo apt-get install docker-compose

Check your compose file's permissions

ls -l docker-compose.yml

Re-run the record or test command from above