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.
-
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.
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
- https://github.com/keploy/keploy
- https://github.com/keploy/example-url-shortener
- https://docs.keploy.io/docs/devtools/server-contrib-guide
- https://docs.keploy.io/
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 |
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
andKSQL
Support.
Skills Required
- Java
- Rest APIs
- Unit testing
Refs
- https://github.com/keploy/java-sdk
- https://github.com/keploy/go-sdk
- https://github.com/keploy/samples-java
- https://junit.org/junit5
- https://github.com/keploy/example-url-shortener
- https://docs.keploy.io/
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 |
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 likeaxios
,http
, etc. You can take the 1st ref below which intercepts other popular httpClients.
- This sdk currently supports
- Add support for popular
Sql
databases. For eg:PostgreSQL
,MySQL
, etc. By adding support forSequelize
. - Add support for
MongoDB
database. - Add support for
Amazon S3
,DynamoDB
,Azure Blob Storage
, andGoogle Cloud Storage
using the HTTP Client. - Add support for
Redis
&Elasticsearch
.
Skills Required
- Typescript/Javascript
- Rest APIs
- Unit testing
Refs
- https://www.npmjs.com/package/@mswjs/interceptors
- https://sequelize.org/
- https://github.com/keploy/go-sdk
- https://jestjs.io
- https://mochajs.org
- https://github.com/keploy/example-url-shortener
- https://docs.keploy.io/
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 |
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 :
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
- https://ebpf.io
- https://github.com/DataDog/ebpf-training
- https://github.com/pixie-io/pixie-demos
- https://github.com/cilium/ebpf
- https://blog.px.dev/ebpf-openssl-tracing/
Time Estimate : 300 hours
Difficulty : Medium
Task List :
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 :