diff --git a/README.md b/README.md index 32fabcb..0d58936 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,96 @@ -# K6_Project +
-This repository test HeartDev API \ No newline at end of file +

HeartTrack Load Testing with K6

+ +
+ +## Introduction + +This repository contains load testing scripts written in K6 for HeartTrack application APIs. The purpose of these scripts is to simulate user traffic and analyze the performance of the APIs under different load conditions. + +## Prerequisites + +Before running the load tests, ensure you have the following installed: + +- [K6](https://k6.io/docs/getting-started/installation/) + +## Getting Started + +To run the load tests locally, follow these steps: + +1. Clone this repository: + + ```bash + git clone https://codefirst.iut.uca.fr/git/HeartDev/K6_Project.git + ``` + +2. Navigate to the project directory: + + ```bash + cd src + ``` + +3. Install dependencies: + + ```bash + apt install k6 + ``` + +4. Run the load tests: + + ```bash + k6 run script.js + ``` + +## Features + +- **Scripting**: Load testing scripts written in JavaScript using K6. +- **Simulation**: Simulate user traffic to API endpoints. +- **Analysis**: Analyze response times, throughput, and errors. +- **Scalability**: Scale up or down the number of virtual users to simulate real-world scenarios. + +## Test Scenarios + +### Scenario 1: Get User Details +- Description: Retrieve user details by ID. +- Endpoint: `/api/v1/Users/{id}` +- Method: GET +- Parameters: `id` +- Headers: `Authorization` +- Expected Response: User details JSON object. + +### Scenario 2: Delete User +- Description: Delete a user by ID. +- Endpoint: `/api/v1/Users/{id}` +- Method: DELETE +- Parameters: `id` +- Headers: `Authorization` +- Expected Response: Success message or error. + +### Scenario 3: Update User +- Description: Update user details. +- Endpoint: `/api/v1/Users/{id}` +- Method: PUT +- Parameters: `id`, JSON payload with updated user details +- Headers: `Authorization`, `Content-Type` +- Expected Response: Updated user details or error. + +## Running Tests + +To run the load tests, you can use K6's built-in CLI or integrate with your CI/CD pipeline for automated testing. + +```bash +k6 run script.js +``` + +## Contributing + +Contributions are welcome! If you have any suggestions, improvements, or new test scenarios, feel free to open an issue or create a pull request. + +## License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + +## Acknowledgements + +Special thanks to the team members of HeartTrack project for their contributions and support during load testing. \ No newline at end of file diff --git a/src/TargetUsers/countUsers.js b/src/TargetUsers/countUsers.js new file mode 100644 index 0000000..05d5f9f --- /dev/null +++ b/src/TargetUsers/countUsers.js @@ -0,0 +1,40 @@ +import http from 'k6/http'; +import { sleep, check } from 'k6'; + +export const options = { + stages: [ + { duration: '1m', target: 10 }, // 10 utilisateurs pendant 1 minute + { duration: '3m', target: 20 }, // 20 utilisateurs pendant 3 minutes + { duration: '1m', target: 30 }, // augmentation jusqu'à 30 utilisateurs pendant 1 minute + { duration: '3m', target: 30 }, // maintenir 30 utilisateurs pendant 3 minutes + { duration: '1m', target: 40 }, // augmentation jusqu'à 40 utilisateurs pendant 1 minute + { duration: '3m', target: 40 }, // maintenir 40 utilisateurs pendant 3 minutes + { duration: '1m', target: 50 }, // augmentation jusqu'à 50 utilisateurs pendant 1 minute + { duration: '3m', target: 50 }, // maintenir 50 utilisateurs pendant 3 minutes + { duration: '1m', target: 60 }, // augmentation jusqu'à 60 utilisateurs pendant 1 minute + { duration: '3m', target: 60 }, // maintenir 60 utilisateurs pendant 3 minutes + { duration: '1m', target: 70 }, // augmentation jusqu'à 70 utilisateurs pendant 1 minute + { duration: '3m', target: 70 }, // maintenir 70 utilisateurs pendant 3 minutes + { duration: '1m', target: 80 }, // augmentation jusqu'à 80 utilisateurs pendant 1 minute + { duration: '3m', target: 80 }, // maintenir 80 utilisateurs pendant 3 minutes + { duration: '1m', target: 90 }, // augmentation jusqu'à 90 utilisateurs pendant 1 minute + { duration: '3m', target: 90 }, // maintenir 90 utilisateurs pendant 3 minutes + { duration: '1m', target: 100 }, // augmentation jusqu'à 100 utilisateurs pendant 1 minute + { duration: '3m', target: 100 }, // maintenir 100 utilisateurs pendant 3 minutes + ], +}; + +export default function() { + let res = http.get('https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/count', { + headers: { + 'accept': 'text/plain; x-api-version=1.0', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }); + + check(res, { + 'status is 200': (r) => r.status === 200, + }); + + sleep(1); +} diff --git a/src/TargetUsers/deleteFriend.js b/src/TargetUsers/deleteFriend.js new file mode 100644 index 0000000..ca483ad --- /dev/null +++ b/src/TargetUsers/deleteFriend.js @@ -0,0 +1,40 @@ +import http from 'k6/http'; +import { sleep, check } from 'k6'; + +export const options = { + stages: [ + { duration: '1m', target: 10 }, // 10 utilisateurs pendant 1 minute + { duration: '3m', target: 20 }, // 20 utilisateurs pendant 3 minutes + { duration: '1m', target: 30 }, // augmentation jusqu'à 30 utilisateurs pendant 1 minute + { duration: '3m', target: 30 }, // maintenir 30 utilisateurs pendant 3 minutes + { duration: '1m', target: 40 }, // augmentation jusqu'à 40 utilisateurs pendant 1 minute + { duration: '3m', target: 40 }, // maintenir 40 utilisateurs pendant 3 minutes + { duration: '1m', target: 50 }, // augmentation jusqu'à 50 utilisateurs pendant 1 minute + { duration: '3m', target: 50 }, // maintenir 50 utilisateurs pendant 3 minutes + { duration: '1m', target: 60 }, // augmentation jusqu'à 60 utilisateurs pendant 1 minute + { duration: '3m', target: 60 }, // maintenir 60 utilisateurs pendant 3 minutes + { duration: '1m', target: 70 }, // augmentation jusqu'à 70 utilisateurs pendant 1 minute + { duration: '3m', target: 70 }, // maintenir 70 utilisateurs pendant 3 minutes + { duration: '1m', target: 80 }, // augmentation jusqu'à 80 utilisateurs pendant 1 minute + { duration: '3m', target: 80 }, // maintenir 80 utilisateurs pendant 3 minutes + { duration: '1m', target: 90 }, // augmentation jusqu'à 90 utilisateurs pendant 1 minute + { duration: '3m', target: 90 }, // maintenir 90 utilisateurs pendant 3 minutes + { duration: '1m', target: 100 }, // augmentation jusqu'à 100 utilisateurs pendant 1 minute + { duration: '3m', target: 100 }, // maintenir 100 utilisateurs pendant 3 minutes + ], +}; + +export default function() { + let res = http.del('https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/1/friend/2', null, { + headers: { + 'accept': '*/*', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }); + + check(res, { + 'status is 200': (r) => r.status === 200, + }); + + sleep(1); +} diff --git a/src/TargetUsers/deleteUser.js b/src/TargetUsers/deleteUser.js new file mode 100644 index 0000000..3b03348 --- /dev/null +++ b/src/TargetUsers/deleteUser.js @@ -0,0 +1,40 @@ +import http from 'k6/http'; +import { sleep, check } from 'k6'; + +export const options = { + stages: [ + { duration: '1m', target: 10 }, // 10 utilisateurs pendant 1 minute + { duration: '3m', target: 20 }, // 20 utilisateurs pendant 3 minutes + { duration: '1m', target: 30 }, // augmentation jusqu'à 30 utilisateurs pendant 1 minute + { duration: '3m', target: 30 }, // maintenir 30 utilisateurs pendant 3 minutes + { duration: '1m', target: 40 }, // augmentation jusqu'à 40 utilisateurs pendant 1 minute + { duration: '3m', target: 40 }, // maintenir 40 utilisateurs pendant 3 minutes + { duration: '1m', target: 50 }, // augmentation jusqu'à 50 utilisateurs pendant 1 minute + { duration: '3m', target: 50 }, // maintenir 50 utilisateurs pendant 3 minutes + { duration: '1m', target: 60 }, // augmentation jusqu'à 60 utilisateurs pendant 1 minute + { duration: '3m', target: 60 }, // maintenir 60 utilisateurs pendant 3 minutes + { duration: '1m', target: 70 }, // augmentation jusqu'à 70 utilisateurs pendant 1 minute + { duration: '3m', target: 70 }, // maintenir 70 utilisateurs pendant 3 minutes + { duration: '1m', target: 80 }, // augmentation jusqu'à 80 utilisateurs pendant 1 minute + { duration: '3m', target: 80 }, // maintenir 80 utilisateurs pendant 3 minutes + { duration: '1m', target: 90 }, // augmentation jusqu'à 90 utilisateurs pendant 1 minute + { duration: '3m', target: 90 }, // maintenir 90 utilisateurs pendant 3 minutes + { duration: '1m', target: 100 }, // augmentation jusqu'à 100 utilisateurs pendant 1 minute + { duration: '3m', target: 100 }, // maintenir 100 utilisateurs pendant 3 minutes + ], +}; + +export default function() { + let res = http.del('https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/9', null, { + headers: { + 'accept': '*/*', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }); + + check(res, { + 'status is 200': (r) => r.status === 200, + }); + + sleep(1); +} diff --git a/src/TargetUsers/getActivity.js b/src/TargetUsers/getActivity.js new file mode 100644 index 0000000..f751b25 --- /dev/null +++ b/src/TargetUsers/getActivity.js @@ -0,0 +1,31 @@ +import http from 'k6/http'; +import { sleep, check } from 'k6'; + +export let options = { + stages: [ + { duration: '1m', target: 10 }, // 10 utilisateurs pendant 1 minute + { duration: '3m', target: 10 }, // maintenir 10 utilisateurs pendant 3 minutes + { duration: '1m', target: 50 }, // augmentation jusqu'à 50 utilisateurs pendant 1 minute + { duration: '3m', target: 50 }, // maintenir 50 utilisateurs pendant 3 minutes + { duration: '1m', target: 100 }, // augmentation jusqu'à 100 utilisateurs pendant 1 minute + { duration: '3m', target: 100 }, // maintenir 100 utilisateurs pendant 3 minutes + { duration: '1m', target: 0 }, // diminution progressive jusqu'à 0 utilisateurs + ], +}; + +export default function () { + // Exemple de requête pour récupérer des activités + let res = http.get('https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Activity?OrderingPropertyName=ByType&Descending=true&Index=0&Count=10', { + headers: { + 'accept': 'text/plain; x-api-version=1.0', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }); + + check(res, { + 'status is 200': (r) => r.status === 200, + 'response time is less than 500ms': (r) => r.timings.duration < 500, + }); + + sleep(1); +} \ No newline at end of file diff --git a/src/TargetUsers/getFriendsUsersList.js b/src/TargetUsers/getFriendsUsersList.js new file mode 100644 index 0000000..4d8bc96 --- /dev/null +++ b/src/TargetUsers/getFriendsUsersList.js @@ -0,0 +1,40 @@ +import http from 'k6/http'; +import { sleep, check } from 'k6'; + +export const options = { + stages: [ + { duration: '1m', target: 10 }, // 10 utilisateurs pendant 1 minute + { duration: '3m', target: 20 }, // 20 utilisateurs pendant 3 minutes + { duration: '1m', target: 30 }, // augmentation jusqu'à 30 utilisateurs pendant 1 minute + { duration: '3m', target: 30 }, // maintenir 30 utilisateurs pendant 3 minutes + { duration: '1m', target: 40 }, // augmentation jusqu'à 40 utilisateurs pendant 1 minute + { duration: '3m', target: 40 }, // maintenir 40 utilisateurs pendant 3 minutes + { duration: '1m', target: 50 }, // augmentation jusqu'à 50 utilisateurs pendant 1 minute + { duration: '3m', target: 50 }, // maintenir 50 utilisateurs pendant 3 minutes + { duration: '1m', target: 60 }, // augmentation jusqu'à 60 utilisateurs pendant 1 minute + { duration: '3m', target: 60 }, // maintenir 60 utilisateurs pendant 3 minutes + { duration: '1m', target: 70 }, // augmentation jusqu'à 70 utilisateurs pendant 1 minute + { duration: '3m', target: 70 }, // maintenir 70 utilisateurs pendant 3 minutes + { duration: '1m', target: 80 }, // augmentation jusqu'à 80 utilisateurs pendant 1 minute + { duration: '3m', target: 80 }, // maintenir 80 utilisateurs pendant 3 minutes + { duration: '1m', target: 90 }, // augmentation jusqu'à 90 utilisateurs pendant 1 minute + { duration: '3m', target: 90 }, // maintenir 90 utilisateurs pendant 3 minutes + { duration: '1m', target: 100 }, // augmentation jusqu'à 100 utilisateurs pendant 1 minute + { duration: '3m', target: 100 }, // maintenir 100 utilisateurs pendant 3 minutes + ], +}; + +export default function() { + let res = http.get('https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/1/friends?OrderingPropertyName=ByName&Descending=false&Index=0&Count=10', { + headers: { + 'accept': 'text/plain; x-api-version=1.0', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }); + + check(res, { + 'status is 200': (r) => r.status === 200, + }); + + sleep(1); +} diff --git a/src/TargetUsers/getUserById.js b/src/TargetUsers/getUserById.js new file mode 100644 index 0000000..2a0e43c --- /dev/null +++ b/src/TargetUsers/getUserById.js @@ -0,0 +1,40 @@ +import http from 'k6/http'; +import { sleep, check } from 'k6'; + +export const options = { + stages: [ + { duration: '1m', target: 10 }, // 10 utilisateurs pendant 1 minute + { duration: '3m', target: 20 }, // 20 utilisateurs pendant 3 minutes + { duration: '1m', target: 30 }, // augmentation jusqu'à 30 utilisateurs pendant 1 minute + { duration: '3m', target: 30 }, // maintenir 30 utilisateurs pendant 3 minutes + { duration: '1m', target: 40 }, // augmentation jusqu'à 40 utilisateurs pendant 1 minute + { duration: '3m', target: 40 }, // maintenir 40 utilisateurs pendant 3 minutes + { duration: '1m', target: 50 }, // augmentation jusqu'à 50 utilisateurs pendant 1 minute + { duration: '3m', target: 50 }, // maintenir 50 utilisateurs pendant 3 minutes + { duration: '1m', target: 60 }, // augmentation jusqu'à 60 utilisateurs pendant 1 minute + { duration: '3m', target: 60 }, // maintenir 60 utilisateurs pendant 3 minutes + { duration: '1m', target: 70 }, // augmentation jusqu'à 70 utilisateurs pendant 1 minute + { duration: '3m', target: 70 }, // maintenir 70 utilisateurs pendant 3 minutes + { duration: '1m', target: 80 }, // augmentation jusqu'à 80 utilisateurs pendant 1 minute + { duration: '3m', target: 80 }, // maintenir 80 utilisateurs pendant 3 minutes + { duration: '1m', target: 90 }, // augmentation jusqu'à 90 utilisateurs pendant 1 minute + { duration: '3m', target: 90 }, // maintenir 90 utilisateurs pendant 3 minutes + { duration: '1m', target: 100 }, // augmentation jusqu'à 100 utilisateurs pendant 1 minute + { duration: '3m', target: 100 }, // maintenir 100 utilisateurs pendant 3 minutes + ], +}; + +export default function() { + let res = http.get('https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/1', { + headers: { + 'accept': 'text/plain; x-api-version=1.0', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }); + + check(res, { + 'status is 200': (r) => r.status === 200, + }); + + sleep(1); +} diff --git a/src/TargetUsers/getUsers.js b/src/TargetUsers/getUsers.js new file mode 100644 index 0000000..f4c9d57 --- /dev/null +++ b/src/TargetUsers/getUsers.js @@ -0,0 +1,40 @@ +import http from 'k6/http'; +import { sleep, check } from 'k6'; + +export const options = { + stages: [ + { duration: '1m', target: 10 }, // 10 utilisateurs pendant 1 minute + { duration: '3m', target: 20 }, // 20 utilisateurs pendant 3 minutes + { duration: '1m', target: 30 }, // augmentation jusqu'à 30 utilisateurs pendant 1 minute + { duration: '3m', target: 30 }, // maintenir 30 utilisateurs pendant 3 minutes + { duration: '1m', target: 40 }, // augmentation jusqu'à 40 utilisateurs pendant 1 minute + { duration: '3m', target: 40 }, // maintenir 40 utilisateurs pendant 3 minutes + { duration: '1m', target: 50 }, // augmentation jusqu'à 50 utilisateurs pendant 1 minute + { duration: '3m', target: 50 }, // maintenir 50 utilisateurs pendant 3 minutes + { duration: '1m', target: 60 }, // augmentation jusqu'à 60 utilisateurs pendant 1 minute + { duration: '3m', target: 60 }, // maintenir 60 utilisateurs pendant 3 minutes + { duration: '1m', target: 70 }, // augmentation jusqu'à 70 utilisateurs pendant 1 minute + { duration: '3m', target: 70 }, // maintenir 70 utilisateurs pendant 3 minutes + { duration: '1m', target: 80 }, // augmentation jusqu'à 80 utilisateurs pendant 1 minute + { duration: '3m', target: 80 }, // maintenir 80 utilisateurs pendant 3 minutes + { duration: '1m', target: 90 }, // augmentation jusqu'à 90 utilisateurs pendant 1 minute + { duration: '3m', target: 90 }, // maintenir 90 utilisateurs pendant 3 minutes + { duration: '1m', target: 100 }, // augmentation jusqu'à 100 utilisateurs pendant 1 minute + { duration: '3m', target: 100 }, // maintenir 100 utilisateurs pendant 3 minutes + ], +}; + +export default function() { + let res = http.get('https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users?OrderingPropertyName=ByName&Descending=false&Index=0&Count=10', { + headers: { + 'accept': 'text/plain; x-api-version=1.0', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }); + + check(res, { + 'status is 200': (r) => r.status === 200, + }); + + sleep(1); +} diff --git a/src/TargetUsers/postActivity.js b/src/TargetUsers/postActivity.js new file mode 100644 index 0000000..08e5859 --- /dev/null +++ b/src/TargetUsers/postActivity.js @@ -0,0 +1,80 @@ +import http from 'k6/http'; +import { sleep, check } from 'k6'; + +export const options = { + stages: [ + { duration: '1m', target: 1 }, // 1 utilisateurs pendant 1 minute + { duration: '3m', target: 5 }, // 5 utilisateurs pendant 3 minutes + { duration: '1m', target: 10 }, // augmentation jusqu'à 10 utilisateurs pendant 1 minute + { duration: '3m', target: 10 }, // maintenir 10 utilisateurs pendant 3 minutes + { duration: '1m', target: 20 }, // augmentation jusqu'à 20 utilisateurs pendant 1 minute + { duration: '3m', target: 20 }, // maintenir 20 utilisateurs pendant 3 minutes + { duration: '1m', target: 30 }, // augmentation jusqu'à 30 utilisateurs pendant 1 minute + { duration: '3m', target: 30 }, // maintenir 30 utilisateurs pendant 3 minutes + { duration: '1m', target: 40 }, // augmentation jusqu'à 40 utilisateurs pendant 1 minute + { duration: '3m', target: 40 }, // maintenir 40 utilisateurs pendant 3 minutes + { duration: '1m', target: 50 }, // augmentation jusqu'à 50 utilisateurs pendant 1 minute + { duration: '3m', target: 50 }, // maintenir 50 utilisateurs pendant 3 minutes + { duration: '1m', target: 60 }, // augmentation jusqu'à 60 utilisateurs pendant 1 minute + { duration: '3m', target: 60 }, // maintenir 60 utilisateurs pendant 3 minutes + { duration: '1m', target: 70 }, // augmentation jusqu'à 70 utilisateurs pendant 1 minute + { duration: '3m', target: 70 }, // maintenir 70 utilisateurs pendant 3 minutes + { duration: '1m', target: 80 }, // augmentation jusqu'à 80 utilisateurs pendant 1 minute + { duration: '3m', target: 80 }, // maintenir 80 utilisateurs pendant 3 minutes + { duration: '1m', target: 90 }, // augmentation jusqu'à 90 utilisateurs pendant 1 minute + { duration: '3m', target: 90 }, // maintenir 90 utilisateurs pendant 3 minutes + { duration: '1m', target: 100 }, // augmentation jusqu'à 100 utilisateurs pendant 1 minute + { duration: '3m', target: 100 }, // maintenir 100 utilisateurs pendant 3 minutes + ], +}; + +export default function() { + let payload = { + activity: { + "id": 10, + "type": "string", + "date": "2024-04-07T16:12:59.389Z", + "startTime": "2024-04-07T16:12:59.389Z", + "endTime": "2024-04-07T16:12:59.389Z", + "effortFelt": 0, + "variability": 0, + "variance": 0, + "standardDeviation": 0, + "average": 0, + "maximum": 0, + "minimum": 0, + "averageTemperature": 0, + "hasAutoPause": true + }, + heartRates: [ + { + "id": 0, + "timestamp": "2024-04-07T16:12:59.389Z", + "latitude": 0, + "longitude": 0, + "altitude": 0, + "heartRate": 0, + "cadence": 0, + "distance": 0, + "speed": 0, + "power": 0, + "temperature": 0 + } + ], + athleteId: 1 + }; + + let res = http.post('https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Activity', JSON.stringify(payload), { + headers: { + 'accept': '*/*', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + 'Content-Type': 'application/json; x-api-version=1.0', + }, + }); + + check(res, { + 'status is 200': (r) => r.status === 200, + }); + + sleep(1); +} diff --git a/src/TargetUsers/postNewFriend.js b/src/TargetUsers/postNewFriend.js new file mode 100644 index 0000000..d2f570e --- /dev/null +++ b/src/TargetUsers/postNewFriend.js @@ -0,0 +1,40 @@ +import http from 'k6/http'; +import { sleep, check } from 'k6'; + +export const options = { + stages: [ + { duration: '1m', target: 10 }, // 10 utilisateurs pendant 1 minute + { duration: '3m', target: 20 }, // 20 utilisateurs pendant 3 minutes + { duration: '1m', target: 30 }, // augmentation jusqu'à 30 utilisateurs pendant 1 minute + { duration: '3m', target: 30 }, // maintenir 30 utilisateurs pendant 3 minutes + { duration: '1m', target: 40 }, // augmentation jusqu'à 40 utilisateurs pendant 1 minute + { duration: '3m', target: 40 }, // maintenir 40 utilisateurs pendant 3 minutes + { duration: '1m', target: 50 }, // augmentation jusqu'à 50 utilisateurs pendant 1 minute + { duration: '3m', target: 50 }, // maintenir 50 utilisateurs pendant 3 minutes + { duration: '1m', target: 60 }, // augmentation jusqu'à 60 utilisateurs pendant 1 minute + { duration: '3m', target: 60 }, // maintenir 60 utilisateurs pendant 3 minutes + { duration: '1m', target: 70 }, // augmentation jusqu'à 70 utilisateurs pendant 1 minute + { duration: '3m', target: 70 }, // maintenir 70 utilisateurs pendant 3 minutes + { duration: '1m', target: 80 }, // augmentation jusqu'à 80 utilisateurs pendant 1 minute + { duration: '3m', target: 80 }, // maintenir 80 utilisateurs pendant 3 minutes + { duration: '1m', target: 90 }, // augmentation jusqu'à 90 utilisateurs pendant 1 minute + { duration: '3m', target: 90 }, // maintenir 90 utilisateurs pendant 3 minutes + { duration: '1m', target: 100 }, // augmentation jusqu'à 100 utilisateurs pendant 1 minute + { duration: '3m', target: 100 }, // maintenir 100 utilisateurs pendant 3 minutes + ], +}; + +export default function() { + let res = http.post('https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/1/friend/2', null, { + headers: { + 'accept': '*/*', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }); + + check(res, { + 'status is 200': (r) => r.status === 200, + }); + + sleep(1); +} diff --git a/src/TargetUsers/putUser.js b/src/TargetUsers/putUser.js new file mode 100644 index 0000000..fe3bd59 --- /dev/null +++ b/src/TargetUsers/putUser.js @@ -0,0 +1,56 @@ +import http from 'k6/http'; +import { sleep, check } from 'k6'; + +export const options = { + stages: [ + { duration: '1m', target: 10 }, // 10 utilisateurs pendant 1 minute + { duration: '3m', target: 20 }, // 20 utilisateurs pendant 3 minutes + { duration: '1m', target: 30 }, // augmentation jusqu'à 30 utilisateurs pendant 1 minute + { duration: '3m', target: 30 }, // maintenir 30 utilisateurs pendant 3 minutes + { duration: '1m', target: 40 }, // augmentation jusqu'à 40 utilisateurs pendant 1 minute + { duration: '3m', target: 40 }, // maintenir 40 utilisateurs pendant 3 minutes + { duration: '1m', target: 50 }, // augmentation jusqu'à 50 utilisateurs pendant 1 minute + { duration: '3m', target: 50 }, // maintenir 50 utilisateurs pendant 3 minutes + { duration: '1m', target: 60 }, // augmentation jusqu'à 60 utilisateurs pendant 1 minute + { duration: '3m', target: 60 }, // maintenir 60 utilisateurs pendant 3 minutes + { duration: '1m', target: 70 }, // augmentation jusqu'à 70 utilisateurs pendant 1 minute + { duration: '3m', target: 70 }, // maintenir 70 utilisateurs pendant 3 minutes + { duration: '1m', target: 80 }, // augmentation jusqu'à 80 utilisateurs pendant 1 minute + { duration: '3m', target: 80 }, // maintenir 80 utilisateurs pendant 3 minutes + { duration: '1m', target: 90 }, // augmentation jusqu'à 90 utilisateurs pendant 1 minute + { duration: '3m', target: 90 }, // maintenir 90 utilisateurs pendant 3 minutes + { duration: '1m', target: 100 }, // augmentation jusqu'à 100 utilisateurs pendant 1 minute + { duration: '3m', target: 100 }, // maintenir 100 utilisateurs pendant 3 minutes + ], +}; + +export default function() { + const payload = { + id: 0, + username: "String", + lastName: "string", + firstName: "string", + email: "string", + sexe: "M", + length: 0, + weight: 0, + password: "string", + dateOfBirth: "2024-04-07T16:49:08.188Z", + profilePicture: "string", + isCoach: true + }; + + let res = http.put('https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/10', JSON.stringify(payload), { + headers: { + 'accept': 'text/plain; x-api-version=1.0', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + 'Content-Type': 'application/json; x-api-version=1.0' + }, + }); + + check(res, { + 'status is 200': (r) => r.status === 200, + }); + + sleep(1); +} diff --git a/src/VusAndDurations/countUsers.js b/src/VusAndDurations/countUsers.js new file mode 100644 index 0000000..6f00550 --- /dev/null +++ b/src/VusAndDurations/countUsers.js @@ -0,0 +1,24 @@ +import http from 'k6/http'; +import { sleep } from 'k6'; + +export const options = { + vus: 10, + duration: '30s', +}; + +export default function() { + // Définir l'URL de l'API pour la requête GET + let urlGetCount = 'https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/count'; + let paramsGetCount = { + headers: { + 'accept': 'text/plain; x-api-version=1.0', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }; + + // Envoyer la requête GET + let resGetCount = http.get(urlGetCount, paramsGetCount); + + // Attendre 1 seconde entre chaque requête + sleep(1); +} diff --git a/src/VusAndDurations/deleteFriend.js b/src/VusAndDurations/deleteFriend.js new file mode 100644 index 0000000..f9162e4 --- /dev/null +++ b/src/VusAndDurations/deleteFriend.js @@ -0,0 +1,24 @@ +import http from 'k6/http'; +import { sleep } from 'k6'; + +export const options = { + vus: 10, + duration: '30s', +}; + +export default function() { + // Définir l'URL de l'API pour la requête DELETE + let urlDelete = 'https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/1/friend/2'; + let paramsDelete = { + headers: { + 'accept': '*/*', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }; + + // Envoyer la requête DELETE + let resDelete = http.del(urlDelete, null, paramsDelete); + + // Attendre 1 seconde entre chaque requête + sleep(1); +} diff --git a/src/VusAndDurations/deleteUser.js b/src/VusAndDurations/deleteUser.js new file mode 100644 index 0000000..d31e327 --- /dev/null +++ b/src/VusAndDurations/deleteUser.js @@ -0,0 +1,24 @@ +import http from 'k6/http'; +import { sleep } from 'k6'; + +export const options = { + vus: 10, + duration: '30s', +}; + +export default function() { + // Définir l'URL de l'API pour la requête DELETE + let urlDelete = 'https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/9'; + let paramsDelete = { + headers: { + 'accept': '*/*', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }; + + // Envoyer la requête DELETE + let resDelete = http.del(urlDelete, null, paramsDelete); + + // Attendre 1 seconde entre chaque requête + sleep(1); +} diff --git a/src/VusAndDurations/getActivity.js b/src/VusAndDurations/getActivity.js new file mode 100644 index 0000000..0ae38ba --- /dev/null +++ b/src/VusAndDurations/getActivity.js @@ -0,0 +1,24 @@ +import http from 'k6/http'; +import { sleep } from 'k6'; + +export const options = { + vus: 10, + duration: '30s', +}; + +export default function() { + // Définir l'URL de l'API et les paramètres de la requête + let url = 'https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Activity?OrderingPropertyName=ByType&Descending=true&Index=0&Count=10'; + let params = { + headers: { + 'accept': 'application/json', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg' + }, + }; + + // Envoyer la requête GET + let res = http.get(url, params); + + // Attendre 1 seconde entre chaque requête + sleep(1); +} diff --git a/src/VusAndDurations/getFriendsUsersList.js b/src/VusAndDurations/getFriendsUsersList.js new file mode 100644 index 0000000..02b1077 --- /dev/null +++ b/src/VusAndDurations/getFriendsUsersList.js @@ -0,0 +1,24 @@ +import http from 'k6/http'; +import { sleep } from 'k6'; + +export const options = { + vus: 10, + duration: '30s', +}; + +export default function() { + // Définir l'URL de l'API pour la requête GET + let urlGet = 'https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/1/friends?OrderingPropertyName=ByName&Descending=false&Index=0&Count=10'; + let paramsGet = { + headers: { + 'accept': 'text/plain; x-api-version=1.0', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }; + + // Envoyer la requête GET + let resGet = http.get(urlGet, paramsGet); + + // Attendre 1 seconde entre chaque requête + sleep(1); +} diff --git a/src/VusAndDurations/getUserById.js b/src/VusAndDurations/getUserById.js new file mode 100644 index 0000000..e71fab3 --- /dev/null +++ b/src/VusAndDurations/getUserById.js @@ -0,0 +1,24 @@ +import http from 'k6/http'; +import { sleep } from 'k6'; + +export const options = { + vus: 10, + duration: '30s', +}; + +export default function() { + // Définir l'URL de l'API pour la requête GET + let urlGetUser = 'https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/1'; + let paramsGetUser = { + headers: { + 'accept': 'text/plain; x-api-version=1.0', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }; + + // Envoyer la requête GET + let resGetUser = http.get(urlGetUser, paramsGetUser); + + // Attendre 1 seconde entre chaque requête + sleep(1); +} diff --git a/src/VusAndDurations/getUsers.js b/src/VusAndDurations/getUsers.js new file mode 100644 index 0000000..291c2ba --- /dev/null +++ b/src/VusAndDurations/getUsers.js @@ -0,0 +1,24 @@ +import http from 'k6/http'; +import { sleep } from 'k6'; + +export const options = { + vus: 10, + duration: '30s', +}; + +export default function() { + // Définir l'URL de l'API pour la requête GET + let urlGetUsers = 'https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users?OrderingPropertyName=ByName&Descending=false&Index=0&Count=10'; + let paramsGetUsers = { + headers: { + 'accept': 'text/plain; x-api-version=1.0', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }; + + // Envoyer la requête GET + let resGetUsers = http.get(urlGetUsers, paramsGetUsers); + + // Attendre 1 seconde entre chaque requête + sleep(1); +} diff --git a/src/VusAndDurations/postActivity.js b/src/VusAndDurations/postActivity.js new file mode 100644 index 0000000..be15f65 --- /dev/null +++ b/src/VusAndDurations/postActivity.js @@ -0,0 +1,58 @@ +import http from 'k6/http'; +import { sleep, check } from 'k6'; + +export const options = { + vus: 10, + duration: '30s', +}; + +export default function() { + let payload = { + activity: { + "id": 10, + "type": "string", + "date": "2024-04-07T16:12:59.389Z", + "startTime": "2024-04-07T16:12:59.389Z", + "endTime": "2024-04-07T16:12:59.389Z", + "effortFelt": 0, + "variability": 0, + "variance": 0, + "standardDeviation": 0, + "average": 0, + "maximum": 0, + "minimum": 0, + "averageTemperature": 0, + "hasAutoPause": true + }, + heartRates: [ + { + "id": 0, + "timestamp": "2024-04-07T16:12:59.389Z", + "latitude": 0, + "longitude": 0, + "altitude": 0, + "heartRate": 0, + "cadence": 0, + "distance": 0, + "speed": 0, + "power": 0, + "temperature": 0 + } + ], + athleteId: 1 + }; + + let res = http.post('https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Activity', JSON.stringify(payload), { + headers: { + 'accept': '*/*', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + 'Content-Type': 'application/json; x-api-version=1.0', + }, + }); + + check(res, { + 'status is 200': (r) => r.status === 200, + }); + + sleep(1); +} diff --git a/src/VusAndDurations/postNewFriend.js b/src/VusAndDurations/postNewFriend.js new file mode 100644 index 0000000..ba6de45 --- /dev/null +++ b/src/VusAndDurations/postNewFriend.js @@ -0,0 +1,24 @@ +import http from 'k6/http'; +import { sleep } from 'k6'; + +export const options = { + vus: 10, + duration: '30s', +}; + +export default function() { + // Définir l'URL de l'API pour la requête POST + let urlPost = 'https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/1/friend/2'; + let paramsPost = { + headers: { + 'accept': '*/*', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + }, + }; + + // Envoyer la requête POST + let resPost = http.post(urlPost, null, paramsPost); + + // Attendre 1 seconde entre chaque requête + sleep(1); +} diff --git a/src/VusAndDurations/putUser.js b/src/VusAndDurations/putUser.js new file mode 100644 index 0000000..8e9cd75 --- /dev/null +++ b/src/VusAndDurations/putUser.js @@ -0,0 +1,51 @@ +import http from 'k6/http'; +import { sleep } from 'k6'; + +export const options = { + vus: 10, + duration: '30s', +}; + +export default function() { + // Définir l'URL de l'API et les paramètres de la requête GET + let urlGet = 'https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Activity?OrderingPropertyName=ByType&Descending=true&Index=0&Count=10'; + let paramsGet = { + headers: { + 'accept': 'application/json', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg' + }, + }; + + // Envoyer la requête GET + let resGet = http.get(urlGet, paramsGet); + + // Attendre 1 seconde entre chaque requête + sleep(1); + + // Définir l'URL de l'API pour la requête PUT + let urlPut = 'https://codefirst.iut.uca.fr/containers/HeartDev-api/api/v1/Users/10'; + let payload = { + id: 0, + username: "String", + lastName: "string", + firstName: "string", + email: "string", + sexe: "M", + length: 0, + weight: 0, + password: "string", + dateOfBirth: "2024-04-07T16:49:08.188Z", + profilePicture: "string", + isCoach: true + }; + let paramsPut = { + headers: { + 'accept': 'text/plain; x-api-version=1.0', + 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJuYW1laWQiOiI1IiwiZ2l2ZW5fbmFtZSI6InN0cmluZyIsIm5iZiI6MTcxMjUwNTM4MSwiZXhwIjoxNzEzMTEwMTgxLCJpYXQiOjE3MTI1MDUzODEsImlzcyI6IkhlYXJ0VHJhY2siLCJhdWQiOiJIZWFydFRyYWNrIn0.MOCk1K5BzO6BEd1RNUNr_z-ChO1D7e9yZA0kH3d5HgXw881jxBjW5hGw6XW-rqp0phuTjUTR87nFOjI8Pq9wsg', + 'Content-Type': 'application/json; x-api-version=1.0' + }, + }; + + // Envoyer la requête PUT + let resPut = http.put(urlPut, JSON.stringify(payload), paramsPut); +}