Skip to content

Latest commit

 

History

History
308 lines (240 loc) · 21.4 KB

README.md

File metadata and controls

308 lines (240 loc) · 21.4 KB

GSoC'23 Participant Guide

Communication

Welcome to the Keploy GSoC projects page. We encourage candidates to come up with their own project idea.

Join our Slack Channel and stay tuned for updates.

Use our Template for the proposal. We recommend the use of google docs for the proposal.

General suggestions and warnings


  • Project ideas describe the goals we want to achieve but may miss details that have to be defined during the project: we expect students to do their own research, propose solutions and be ready to deal with uncertainty and solve challenges that will come up during the project

  • Code and prototypes are preferred over detailed documents and unreliable estimates: rather than using your time to write a very long application document, we suggest to invest in writing a prototype (which means the code may be thrown out entirely) which will help you understand the challenges of the project you want to work on; your application should refer to the prototype or other Github contributions you made to Keploy that show you have the capability to succeed in the project idea you are applying for.

  • Students who have either shown to have or have shown to be fast learners for the required hard and soft skills by contributing to Keploy have a lot more chances of being accepted: in order to get started contributing refer to the :doc:Keploy Contributing Guidelines <keploy/keploy/contributing.md>

  • Get trained in the projects you want to apply for: once applicants have completed some basic training by :doc:contributing to Keploy <keploy/keploy/contributing.md> we highly suggest to start working on some aspects of the project they are interested in applying: all projects listed this year are improvements of existing modules so these modules already have a list of open issues which can be solved as part of your advanced training. It will also be possible to complete some of the tasks listed in the project idea right now before GSoC starts. We will list some easy tasks in the project idea for this purpose.

Projects List

1. Keploy CLI Refactoring

Mentors: Neha Gupta, Ritik Jain, Sanskriti Harmukh, Ankit Kumar

Goals & Ideas

  • Add support for Get curl command for the test case.
  • Add support to Run individual test case.
  • Add support for commands in Keploy CLI, for eg: show [test_id]; will show that specific test case among various testcases, show [test_run_id]; will show the info related to it.
  • Rename test files and mock files to method_endpoint.
  • Add comment to keploy generated test file and mocks basically KMocks and KTests.
  • Add configuration to pipe keploy server logs in a file.
  • Add the static link to serve the test report genenerated at end of log.

Skills Required

  • Golang
  • Rest APIs

Refs

Time Estimate : 175 hours

Difficulty : Medium

Task List :

Tasks Repo Actionable By Achintya cassiozareck aerowisca
Setup Keploy Locally with a Sample Go Application Samples-go
Use Keploy to increase test cases coverage Keploy
Add a vertical line separator in CLI Keploy
Add support for Get TC to display test-cases from yaml Keploy
Update Keploy UI with new way of working Keploy UI
Add configuration to pipe keploy server logs in a file Keploy

2. Keploy Java SDK

Mentors: Sarthak Shyngle, Gourav Kumar, Charan Kamarapu, Barkatul Mujauddin.

Goals & Ideas

  • Add support for MongoDB database.
  • Add support for Apache Kafka.
  • Add support for java Native HttpClient.
  • Add support for RabbitMQ.
  • Add support for Google Cloud Platform & Azure SDKs.
  • Add Mock Library Redis and KSQL Support.

Skills Required

  • Java
  • Rest APIs
  • Unit testing

Refs

Time Estimate : 350 hours

Difficulty : Medium

Task List :

Tasks Repo Actionable By reem-atalah Weaam Bassem
Setup Keploy Locally with a Sample Java Application (Use as many dependencies you can) Samples-Java
Create a github action for running java based linters in pipeline Java-SDK
Create a github action for publishing sdk to maven central Java-SDK
Write the test-cases for JAVA-SDK (for Integrations) Java-SDK
Creating Sample Java Application using JWT Token Samples-Java
Creating Interceptors and Advice for different jwt objects Java-SDK

3. Keploy Typescript/Javascript SDK

Mentors: Charan Kamarapu, Ritik Jain, Shubham Jain, Diganta Kr Banik.

Goals & Ideas

  • Add support for Httpclients in typescript.
    • This sdk currently supports node-fetch httpClient, to support other httpclients like axios, http, etc. You can take the 1st ref below which intercepts other popular httpClients.
  • Add support for popular Sql databases. For eg: PostgreSQL, MySQL, etc. By adding support for Sequelize.
  • Add support for MongoDB database.
  • Add support for Amazon S3, DynamoDB, Azure Blob Storage, and Google Cloud Storage using the HTTP Client.
  • Add support for Redis & Elasticsearch.

Skills Required

  • Typescript/Javascript
  • Rest APIs
  • Unit testing

Refs

Time Estimate : 350 hours

Difficulty : Hard

Task List :

Tasks Repo Actionable By G0maa shreyanshshah27 Hermione2408 Frey0-0 Sekhar-Kumar-Dash
Setup Keploy Locally with a Sample TS Application Samples-Typescript
Empty response for node-fetch http call Typescript-SDK
Add a sample unit test for mocking/stubbing calls in unit-tests Samples-Typescript
Write the test-cases for TS-SDK (for Integrations) Typescript-SDK
Add check to not record testcases during test mode Typescript-SDK
Add log statement in keploy and mock module to log mode Typescript-SDK
Remove cp cmd from build script Typescript-SDK
Add filter for headers during recording Typescript-SDK

4. Autogenerate test cases

Mentors: Shubham Jain, Neha Gupta, Sarthak, Jyotirmoy Roy, Pranshu Srivastava

Goals & Ideas

  • Use fuzz testing approach to generate new testcases from existing testcases. We can take inspiration from Go Fuzzing
  • Define and capture testcases coverage and other useful metrics (KPIs) about the effectiveness of testcases.
  • Avoid adding testcases that don't meaningfully impact any of the testing KPIs.
  • Use the API schemas and data types to ensure various potential edge cases are generated.
  • Create a demo application to demonstrate the test case generation capability.
  • Add the feature to generate extra testcases for the keploy server.

Skills Required

  • Go
  • Rest APIs
  • Unit testing

Refs

Time Estimate : 300 hours

Difficulty : Medium

Task List :

Tasks Repo Actionable By <GitHub_ID>
Create a REST-Api in Golang using any router and one database supported by Keploy Samples-go
<PR_ID>
Short list different ideas to generate more than one testcase using api schema and response provided Keploy
Add Go-fuzz tests for the application created Samples-go
Add schema checks in Keploy's validation logic Keploy
Generate OpenAPI schema from API calls/ Testcases Keploy
Add validation to dependency request data Keploy

5. eBPF based Keploy Integration

Mentors: Shubham Jain, Sarthak Shyngle, Gourav Kumar, Animesh Pathak

Goals & Ideas

  • Use eBPF to capture network traffic instead of using a Keploy sdks.
  • The base platform for eBPF is Linux, but we should add support for other platforms via docker.
  • The eBPF program should be able to capture network traffic from any application running on the host machine, without requiring any changes to the application.
  • For test generation we need to support HTTP, TLS and gRPC.
  • For mocks capturing we should be able to capture all the network traffic going out of the application and parse the protocol.
  • Add support http and grpc clients for mocking.
  • Add support for popular databases like Postgres, MySQL, Postgres, Redis and MongoDB.
  • Make this implementation work with existing demos and samples in go, java and node.

Skills Required

  • Linux fundamentals
  • eBPF (good to have prior experience)
  • Go
  • C/C++

Refs

Time Estimate : 300 hours

Difficulty : Medium

Task List :

Tasks Repo Actionable By <GitHub_ID>
Implement an eBPF based program to start and application and capture all http incoming and outgoing traffic Keploy
<PR_ID>
Capture all https incoming and outgoing traffic for an application Keploy
Add add support for intercepting and parsing Postgres traffic Samples-go
Create an eBPF based sample from echo-sql demo in sample-go Keploy

6. JS or Go based DSL for Keploy

Mentors: Shubham Jain, Neha Gupta, Ritik Jain, Animesh Pathak

Goals & Ideas

  • Create a DSL for Keploy in JS or Go instead of the current yaml.
  • The DSL should allow greater flexibility and extensibility than the current yaml format by enabling users to write custom code.
  • Most of the DSL should be encapsulated in the library methods.
  • We can take inspiration from k6.io and rest assured. k6 uses JS to define test scenarios.
  • The DSL should be able to define testcases and mocks as an alternative to the current yaml format.

Skills Required

  • Go
  • Javascript (optional)
  • Code generation and parsing (good to have prior experience)

Refs

Time Estimate : 300 hours

Difficulty : Medium

Task List :

Tasks Repo Actionable By <GitHub_ID>
Add support for reading js or go based testcases Keploy
<PR_ID>
Define basic library interfaces for the JS/Go DS Keploy
Add support for generating testcases using the above DSL Keploy
Generate tests using the DSL for the echo-sql demo in samples-go Samples-go