first git sourcr try

This commit is contained in:
isufian12 2024-01-17 19:13:14 +03:00
commit 2782fbbdf3

View File

@ -0,0 +1,295 @@
# Project-6 Detailed Grades for Sufian Alfuraydi
This is your detailed grade for the Project-6.
Please read everything carefully and try to understand where you made mistakes (if any).
We tried to be as descriptive in the grading script messages as possible.
However, if you don't understand any message, please ask for an explanation!.
The file is divided into smaller subsections.
Each section represent a task/test we examined.
There are tasks with points and there are other that have zero points.
Thus, if you see a zero that is not necessarily a bad thing.
## Grading Summary:
| Task-ID | Status | Possible Points | Earned Points | Description |
|:-------:|:------:|:---------------:|:-------------:|:------------|
| [1](#task1) | 🟒 | 0 | 0 | Get the file credentials.ini |
| [2](#task2) | 🟒 | 0 | 0 | Get author from credentials.ini |
| [3](#task3) | 🟒 | 0 | 0 | Get quid from credentials.ini |
| [4](#task4) | 🟒 | 0 | 0 | Get repository link from credentials.ini |
| [5](#task5) | 🟒 | 0 | 0 | Clone repository to local file |
| [6](#task6) | πŸ”΄ | 0 | 0 | Check if repo has any late edits |
| [7](#task7) | 🟒 | 0 | 0 | Get 'PORT' number from credentials file. |
| [8](#task8) | 🟒 | 0 | 0 | Get 'HOSTNAME' value from credentials file. |
| [9](#task9) | 🟒 | 0 | 0 | Get 'DATABASE' value from credentials file. |
| [10](#task10) | 🟒 | 0 | 0 | Get 'COLLECTION' value from credentials file. |
| [11](#task11) | 🟒 | 0 | 0 | Get 'WEB_SERVICE' value from credentials file. |
| [12](#task12) | 🟒 | 0 | 0 | Copy credentials file to it appropriate location. |
| [13](#task13) | 🟒 | 0 | 0 | Copy test data file. |
| [14](#task14) | 🟒 | 0 | 0 | Copy data validation file. |
| [15](#task15) | 🟒 | 20 | 20.0 | Setup and run the application using docker-compose |
| [16](#task16) | 🟒 | 0 | 0 | Insert sample data to database |
| [17](#task17) | 🟒 | 0 | 0 | Validate data exist! |
| [18](#task18) | πŸ”΄ | 30 | 30.0 | Read and validate default json data (listAll, listOpenOnly, listCloseOnly) |
| [19](#task19) | πŸ”΄ | 15 | 10.5 | Read and validate csv data (listAll/csv, listOpenOnly/csv, listCloseOnly/csv) |
| [20](#task20) | πŸ”΄ | 15 | 15.0 | Read and validate json data (listAll/json, listOpenOnly/json, listCloseOnly/json) |
| [21](#task21) | πŸ”΄ | 20 | 20.0 | Read and validate query-based data (i.e., top=k): (listOpenOnly/csv?top=2, listOpenOnly/json?top=2, listCloseOnly/csv?top=2, listCloseOnly/json?top=2) |
| [22](#task22) | 🟒 | 30 | 30.0 | Implemented a working and user-friendly consumer program? |
| [23](#task23) | 🟒 | 0 | 0 | Stop the all services! |
| **Total** | 18/23 | **100** | **117.98** | **Was late 0.30 days** |
Late deduction explanation!
Deducting 20.0% per late-day (number of late-days = 0.30).
Total deducting percentage = 20.0% * 0.30 = 5.99%.
Total points before deducting late percentage penalty is 125.5.
Final total points after deducting 5.99% is 117.98.
## Detailed Grading:
#### <a name="task1"></a>Task-1 [PASSED, 0/0]
- **Goal**: Get the file credentials.ini
- **Result**: Feedback from us and/or the system:
```
Found a *.ini file!
```
#### <a name="task2"></a>Task-2 [PASSED, 0/0]
- **Goal**: Get author from credentials.ini
- **Result**: Feedback from us and/or the system:
```
Got 'Sufian Alfuraydi' for student with id='411107965'
```
#### <a name="task3"></a>Task-3 [PASSED, 0/0]
- **Goal**: Get quid from credentials.ini
- **Result**: Feedback from us and/or the system:
```
Got '411107965' for student with id='411107965'. The given id match the one in record!
```
#### <a name="task4"></a>Task-4 [PASSED, 0/0]
- **Goal**: Get repository link from credentials.ini
- **Result**: Feedback from us and/or the system:
```
Got a valid link 'git@github.com:it492/project-6-brevetsrest-sufianalfuraydi.git' for student with id='411107965'
```
#### <a name="task5"></a>Task-5 [PASSED, 0/0]
- **Goal**: Clone repository to local file
- **Result**: Feedback from us and/or the system:
```
A repo for Sufian already exists in dir '~/repos/411107965'
```
#### <a name="task6"></a>Task-6 [FAILED, 0/0]
- **Goal**: Check if repo has any late edits
- **Result**: Feedback from us and/or the system:
```
Late (last change='2023-11-28 00:11:11' > deadline='2023-11-27 17:00:00'), 20.0% will be deducted for each day.
```
#### <a name="task7"></a>Task-7 [PASSED, 0/0]
- **Goal**: Get 'PORT' number from credentials file.
- **Result**: Feedback from us and/or the system:
```
Got the value='5001' for key='PORT'.
```
#### <a name="task8"></a>Task-8 [PASSED, 0/0]
- **Goal**: Get 'HOSTNAME' value from credentials file.
- **Result**: Feedback from us and/or the system:
```
Got the value='db' for key='HOSTNAME'.
```
#### <a name="task9"></a>Task-9 [PASSED, 0/0]
- **Goal**: Get 'DATABASE' value from credentials file.
- **Result**: Feedback from us and/or the system:
```
Got the value='brevetsdbfs' for key='DATABASE'.
```
#### <a name="task10"></a>Task-10 [PASSED, 0/0]
- **Goal**: Get 'COLLECTION' value from credentials file.
- **Result**: Feedback from us and/or the system:
```
Got the value='controls' for key='COLLECTION'.
```
#### <a name="task11"></a>Task-11 [PASSED, 0/0]
- **Goal**: Get 'WEB_SERVICE' value from credentials file.
- **Result**: Feedback from us and/or the system:
```
Got the value='web' for key='WEB_SERVICE'.
```
#### <a name="task12"></a>Task-12 [PASSED, 0/0]
- **Goal**: Copy credentials file to it appropriate location.
- **Result**: Feedback from us and/or the system:
```
Copied original 'credentials.ini' file to '~/repos/411107965/brevets/'
```
#### <a name="task13"></a>Task-13 [PASSED, 0/0]
- **Goal**: Copy test data file.
- **Result**: Feedback from us and/or the system:
```
Copied original 'insert_test_data.py' file to '~/repos/411107965/brevets/'
```
#### <a name="task14"></a>Task-14 [PASSED, 0/0]
- **Goal**: Copy data validation file.
- **Result**: Feedback from us and/or the system:
```
Copied original 'validate_data_exist.py' file to '~/repos/411107965/brevets/'
```
#### <a name="task15"></a>Task-15 [PASSED, 20.0/20]
- **Goal**: Setup and run the application using docker-compose
- **Result**: Feedback from us and/or the system:
```
> Attempting to build and run containers using docker-compose.
> Command used: 'docker-compose --project-directory /Users/zalsaeed/Documents/qu/492/it492-all-things-considered/projects-and-its-grading/project-6/submissions/repos/411107965/brevets -f /Users/zalsaeed/Documents/qu/492/it492-all-things-considered/projects-and-its-grading/project-6/submissions/repos/411107965/brevets/docker-compose.yml --project-name 411107965 up -d --build'
> Image built successfully!
> Checking if the server is up and no crashes occurred by calling 'http://localhost:5001/listAll'
> Server is up!
```
#### <a name="task16"></a>Task-16 [PASSED, 0/0]
- **Goal**: Insert sample data to database
- **Result**: Feedback from us and/or the system:
```
Inserted data successfully
```
#### <a name="task17"></a>Task-17 [PASSED, 0/0]
- **Goal**: Validate data exist!
- **Result**: Feedback from us and/or the system:
```
True: We found: 2 documents! Exactly what we expected!
```
#### <a name="task18"></a>Task-18 [FAILED, 30.0/30]
- **Goal**: Read and validate default json data (listAll, listOpenOnly, listCloseOnly)
- **Result**: Feedback from us and/or the system:
```
> Called 'http://localhost:5001/listAll expecting
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'open': '02/02/2024 00:00', 'close': '02/02/2024 01:00'}, {'km': 100, 'mi': 62.1, 'location': None, 'open': '02/02/2024 02:56', 'close': '02/02/2024 06:40'}, {'km': 150, 'mi': 93.2, 'location': 'Second Checkpoint', 'open': '02/02/2024 04:25', 'close': '02/02/2024 10:00'}, {'km': 200, 'mi': 124.3, 'location': 'Last Checkpoint', 'open': '02/02/2024 05:53', 'close': '02/02/2024 13:30'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'open': '02/02/2024 00:00', 'close': '02/02/2024 01:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'open': '02/02/2024 09:05', 'close': '02/02/2024 03:00'}]}]}
Got:
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'open': '02/02/2024 00:00', 'close': '02/02/2024 01:00'}, {'km': 100, 'mi': 62.1, 'location': 'None', 'open': '02/02/2024 02:56', 'close': '02/02/2024 06:40'}, {'km': 150, 'mi': 93.2, 'location': 'Second Checkpoint', 'open': '02/02/2024 04:25', 'close': '02/02/2024 10:00'}, {'km': 200, 'mi': 124.3, 'location': 'Last Checkpoint', 'open': '02/02/2024 05:53', 'close': '02/02/2024 13:30'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'open': '02/02/2024 00:00', 'close': '02/02/2024 01:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'open': '02/02/2024 09:05', 'close': '02/02/2024 03:00'}]}]}
> Called 'http://localhost:5001/listOpenOnly expecting
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'open': '02/02/2024 00:00'}, {'km': 100, 'mi': 62.1, 'location': None, 'open': '02/02/2024 02:56'}, {'km': 150, 'mi': 93.2, 'location': 'Second Checkpoint', 'open': '02/02/2024 04:25'}, {'km': 200, 'mi': 124.3, 'location': 'Last Checkpoint', 'open': '02/02/2024 05:53'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'open': '02/02/2024 00:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'open': '02/02/2024 09:05'}]}]}
Got:
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'open': '02/02/2024 00:00'}, {'km': 100, 'mi': 62.1, 'location': 'None', 'open': '02/02/2024 02:56'}, {'km': 150, 'mi': 93.2, 'location': 'Second Checkpoint', 'open': '02/02/2024 04:25'}, {'km': 200, 'mi': 124.3, 'location': 'Last Checkpoint', 'open': '02/02/2024 05:53'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'open': '02/02/2024 00:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'open': '02/02/2024 09:05'}]}]}
> Called 'http://localhost:5001/listCloseOnly expecting
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'close': '02/02/2024 01:00'}, {'km': 100, 'mi': 62.1, 'location': None, 'close': '02/02/2024 06:40'}, {'km': 150, 'mi': 93.2, 'location': 'Second Checkpoint', 'close': '02/02/2024 10:00'}, {'km': 200, 'mi': 124.3, 'location': 'Last Checkpoint', 'close': '02/02/2024 13:30'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'close': '02/02/2024 01:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'close': '02/02/2024 03:00'}]}]}
Got:
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'close': '02/02/2024 01:00'}, {'km': 100, 'mi': 62.1, 'location': 'None', 'close': '02/02/2024 06:40'}, {'km': 150, 'mi': 93.2, 'location': 'Second Checkpoint', 'close': '02/02/2024 10:00'}, {'km': 200, 'mi': 124.3, 'location': 'Last Checkpoint', 'close': '02/02/2024 13:30'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'close': '02/02/2024 01:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'close': '02/02/2024 03:00'}]}]}
```
#### <a name="task19"></a>Task-19 [FAILED, 10.5/15]
- **Goal**: Read and validate csv data (listAll/csv, listOpenOnly/csv, listCloseOnly/csv)
- **Result**: Feedback from us and/or the system:
```
> Called 'http://localhost:5001/listAll/csv expecting
(['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/0/km,brevets/controls/0/mi,brevets/controls/0/location,brevets/controls/0/open,brevets/controls/0/close,brevets/controls/1/km,brevets/controls/1/mi,brevets/controls/1/location,brevets/controls/1/open,brevets/controls/1/close,brevets/controls/2/km,brevets/controls/2/mi,brevets/controls/2/location,brevets/controls/2/open,brevets/controls/2/close,brevets/controls/3/km,brevets/controls/3/mi,brevets/controls/3/location,brevets/controls/3/open,brevets/controls/3/close', '200,2/2/24,0:00,0,0,Starting Point,2/2/24 0:00,2/2/24 1:00,100,62.1,,2/2/24 2:56,2/2/24 6:40,150,93.2,Second Checkpoint,2/2/24 4:25,2/2/24 10:00,200,124.3,Last Checkpoint,2/2/24 5:53,2/2/24 13:30', '1000,2/2/24,0:00,0,0,begin,2/2/24 0:00,2/2/24 1:00,1000,621.4,finish line,2/2/24 9:05,2/2/24 3:00,,,,,,,,,,', '', '', '', ''], ['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/0/km,brevets/controls/0/mi,brevets/controls/0/location,brevets/controls/0/open,brevets/controls/0/close', '200,2/2/24,0:00,0,0,Starting Point,2/2/24 0:00,2/2/24 1:00', '200,2/2/24,0:00,100,62.1,,2/2/24 2:56,2/2/24 6:40', '200,2/2/24,0:00,150,93.2,Second Checkpoint,2/2/24 4:25,2/2/24 10:00', '200,2/2/24,0:00,200,124.3,Last Checkpoint,2/2/24 5:53,2/2/24 13:30', '1000,2/2/24,0:00,0,0,begin,2/2/24 0:00,2/2/24 1:00', '1000,2/2/24,0:00,1000,621.4,finish line,2/2/24 9:05,2/2/24 3:00'])
Got:
['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/km,brevets/controls/mi,brevets/controls/location,brevets/controls/open,brevets/controls/close\r\n', '200,02/02/2024,00:00,0,0,Starting Point,02/02/2024 00:00,02/02/2024 01:00\r\n', '200,02/02/2024,00:00,100,62.1,,02/02/2024 02:56,02/02/2024 06:40\r\n', '200,02/02/2024,00:00,150,93.2,Second Checkpoint,02/02/2024 04:25,02/02/2024 10:00\r\n', '200,02/02/2024,00:00,200,124.3,Last Checkpoint,02/02/2024 05:53,02/02/2024 13:30\r\n', '1000,02/02/2024,00:00,0,0,begin,02/02/2024 00:00,02/02/2024 01:00\r\n', '1000,02/02/2024,00:00,1000,621.4,finish line,02/02/2024 09:05,02/02/2024 03:00\r\n']
> Called 'http://localhost:5001/listOpenOnly/csv expecting
(['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/0/km,brevets/controls/0/mi,brevets/controls/0/location,brevets/controls/0/open,brevets/controls/1/km,brevets/controls/1/mi,brevets/controls/1/location,brevets/controls/1/open,brevets/controls/2/km,brevets/controls/2/mi,brevets/controls/2/location,brevets/controls/2/open,brevets/controls/3/km,brevets/controls/3/mi,brevets/controls/3/location,brevets/controls/3/open', '200,2/2/24,0:00,0,0,Starting Point,2/2/24 0:00,100,62.1,,2/2/24 2:56,150,93.2,Second Checkpoint,2/2/24 4:25,200,124.3,Last Checkpoint,2/2/24 5:53', '1000,2/2/24,0:00,0,0,begin,2/2/24 0:00,1000,621.4,finish line,2/2/24 9:05,,,,,,,,', '', '', '', ''], ['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/0/km,brevets/controls/0/mi,brevets/controls/0/location,brevets/controls/0/open', '200,2/2/24,0:00,0,0,Starting Point,2/2/24 0:00', '200,2/2/24,0:00,100,62.1,,2/2/24 2:56', '200,2/2/24,0:00,150,93.2,Second Checkpoint,2/2/24 4:25', '200,2/2/24,0:00,200,124.3,Last Checkpoint,2/2/24 5:53', '1000,2/2/24,0:00,0,0,begin,2/2/24 0:00', '1000,2/2/24,0:00,1000,621.4,finish line,2/2/24 9:05'])
Got:
['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/km,brevets/controls/mi,brevets/controls/location,brevets/controls/open\r\n', '200,02/02/2024,00:00,0,0,Starting Point,02/02/2024 00:00\r\n', '200,02/02/2024,00:00,100,62.1,,02/02/2024 02:56\r\n', '200,02/02/2024,00:00,150,93.2,Second Checkpoint,02/02/2024 04:25\r\n', '200,02/02/2024,00:00,200,124.3,Last Checkpoint,02/02/2024 05:53\r\n', '1000,02/02/2024,00:00,0,0,begin,02/02/2024 00:00\r\n', '1000,02/02/2024,00:00,1000,621.4,finish line,02/02/2024 09:05\r\n']
> Called 'http://localhost:5001/listCloseOnly/csv expecting
(['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/0/km,brevets/controls/0/mi,brevets/controls/0/location,brevets/controls/0/close,brevets/controls/1/km,brevets/controls/1/mi,brevets/controls/1/location,brevets/controls/1/close,brevets/controls/2/km,brevets/controls/2/mi,brevets/controls/2/location,brevets/controls/2/close,brevets/controls/3/km,brevets/controls/3/mi,brevets/controls/3/location,brevets/controls/3/close', '200,2/2/24,0:00,0,0,Starting Point,2/2/24 1:00,100,62.1,,2/2/24 6:40,150,93.2,Second Checkpoint,2/2/24 10:00,200,124.3,Last Checkpoint,2/2/24 13:30', '1000,2/2/24,0:00,0,0,begin,2/2/24 1:00,1000,621.4,finish line,2/2/24 3:00,,,,,,,,', '', '', '', ''], ['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/0/km,brevets/controls/0/mi,brevets/controls/0/location,brevets/controls/0/close', '200,2/2/24,0:00,0,0,Starting Point,2/2/24 1:00200,2/2/24,0:00,100,62.1,,2/2/24 6:40', '200,2/2/24,0:00,150,93.2,Second Checkpoint,2/2/24 10:00', '200,2/2/24,0:00,200,124.3,Last Checkpoint,2/2/24 13:30', '1000,2/2/24,0:00,0,0,begin,2/2/24 1:00', '1000,2/2/24,0:00,1000,621.4,finish line,2/2/24 3:00', ''])
Got:
['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/km,brevets/controls/mi,brevets/controls/location,brevets/controls/close\r\n', '200,02/02/2024,00:00,0,0,Starting Point,02/02/2024 01:00\r\n', '200,02/02/2024,00:00,100,62.1,,02/02/2024 06:40\r\n', '200,02/02/2024,00:00,150,93.2,Second Checkpoint,02/02/2024 10:00\r\n', '200,02/02/2024,00:00,200,124.3,Last Checkpoint,02/02/2024 13:30\r\n', '1000,02/02/2024,00:00,0,0,begin,02/02/2024 01:00\r\n', '1000,02/02/2024,00:00,1000,621.4,finish line,02/02/2024 03:00\r\n']
```
#### <a name="task20"></a>Task-20 [FAILED, 15.0/15]
- **Goal**: Read and validate json data (listAll/json, listOpenOnly/json, listCloseOnly/json)
- **Result**: Feedback from us and/or the system:
```
> Called 'http://localhost:5001/listAll/json expecting
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'open': '02/02/2024 00:00', 'close': '02/02/2024 01:00'}, {'km': 100, 'mi': 62.1, 'location': None, 'open': '02/02/2024 02:56', 'close': '02/02/2024 06:40'}, {'km': 150, 'mi': 93.2, 'location': 'Second Checkpoint', 'open': '02/02/2024 04:25', 'close': '02/02/2024 10:00'}, {'km': 200, 'mi': 124.3, 'location': 'Last Checkpoint', 'open': '02/02/2024 05:53', 'close': '02/02/2024 13:30'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'open': '02/02/2024 00:00', 'close': '02/02/2024 01:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'open': '02/02/2024 09:05', 'close': '02/02/2024 03:00'}]}]}
Got:
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'open': '02/02/2024 00:00', 'close': '02/02/2024 01:00'}, {'km': 100, 'mi': 62.1, 'location': 'None', 'open': '02/02/2024 02:56', 'close': '02/02/2024 06:40'}, {'km': 150, 'mi': 93.2, 'location': 'Second Checkpoint', 'open': '02/02/2024 04:25', 'close': '02/02/2024 10:00'}, {'km': 200, 'mi': 124.3, 'location': 'Last Checkpoint', 'open': '02/02/2024 05:53', 'close': '02/02/2024 13:30'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'open': '02/02/2024 00:00', 'close': '02/02/2024 01:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'open': '02/02/2024 09:05', 'close': '02/02/2024 03:00'}]}]}
> Called 'http://localhost:5001/listOpenOnly/json expecting
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'open': '02/02/2024 00:00'}, {'km': 100, 'mi': 62.1, 'location': None, 'open': '02/02/2024 02:56'}, {'km': 150, 'mi': 93.2, 'location': 'Second Checkpoint', 'open': '02/02/2024 04:25'}, {'km': 200, 'mi': 124.3, 'location': 'Last Checkpoint', 'open': '02/02/2024 05:53'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'open': '02/02/2024 00:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'open': '02/02/2024 09:05'}]}]}
Got:
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'open': '02/02/2024 00:00'}, {'km': 100, 'mi': 62.1, 'location': 'None', 'open': '02/02/2024 02:56'}, {'km': 150, 'mi': 93.2, 'location': 'Second Checkpoint', 'open': '02/02/2024 04:25'}, {'km': 200, 'mi': 124.3, 'location': 'Last Checkpoint', 'open': '02/02/2024 05:53'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'open': '02/02/2024 00:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'open': '02/02/2024 09:05'}]}]}
> Called 'http://localhost:5001/listCloseOnly/json expecting
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'close': '02/02/2024 01:00'}, {'km': 100, 'mi': 62.1, 'location': None, 'close': '02/02/2024 06:40'}, {'km': 150, 'mi': 93.2, 'location': 'Second Checkpoint', 'close': '02/02/2024 10:00'}, {'km': 200, 'mi': 124.3, 'location': 'Last Checkpoint', 'close': '02/02/2024 13:30'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'close': '02/02/2024 01:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'close': '02/02/2024 03:00'}]}]}
Got:
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'close': '02/02/2024 01:00'}, {'km': 100, 'mi': 62.1, 'location': 'None', 'close': '02/02/2024 06:40'}, {'km': 150, 'mi': 93.2, 'location': 'Second Checkpoint', 'close': '02/02/2024 10:00'}, {'km': 200, 'mi': 124.3, 'location': 'Last Checkpoint', 'close': '02/02/2024 13:30'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'close': '02/02/2024 01:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'close': '02/02/2024 03:00'}]}]}
```
#### <a name="task21"></a>Task-21 [FAILED, 20.0/20]
- **Goal**: Read and validate query-based data (i.e., top=k): (listOpenOnly/csv?top=2, listOpenOnly/json?top=2, listCloseOnly/csv?top=2, listCloseOnly/json?top=2)
- **Result**: Feedback from us and/or the system:
```
> Called 'http://localhost:5001/listOpenOnly/csv?top=2 expecting
(['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/0/km,brevets/controls/0/mi,brevets/controls/0/location,brevets/controls/0/open,brevets/controls/1/km,brevets/controls/1/mi,brevets/controls/1/location,brevets/controls/1/open', '200,2/2/24,0:00,0,0,Starting Point,2/2/24 0:00,100,62.1,,2/2/24 2:56', '1000,2/2/24,0:00,0,0,begin,2/2/24 0:00,1000,621.4,finish line,2/2/24 9:05', '', ''], ['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/0/km,brevets/controls/0/mi,brevets/controls/0/location,brevets/controls/0/open', '200,2/2/24,0:00,0,0,Starting Point,2/2/24 0:00', '200,2/2/24,0:00,100,62.1,,2/2/24 2:56', '1000,2/2/24,0:00,0,0,begin,2/2/24 0:00', '1000,2/2/24,0:00,1000,621.4,finish line,2/2/24 9:05'])
Got:
['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/km,brevets/controls/mi,brevets/controls/location,brevets/controls/open\r\n', '200,02/02/2024,00:00,0,0,Starting Point,02/02/2024 00:00\r\n', '200,02/02/2024,00:00,100,62.1,,02/02/2024 02:56\r\n', '1000,02/02/2024,00:00,0,0,begin,02/02/2024 00:00\r\n', '1000,02/02/2024,00:00,1000,621.4,finish line,02/02/2024 09:05\r\n']
> Called 'http://localhost:5001/listCloseOnly/csv?top=2 expecting
(['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/0/km,brevets/controls/0/mi,brevets/controls/0/location,brevets/controls/0/close,brevets/controls/1/km,brevets/controls/1/mi,brevets/controls/1/location,brevets/controls/1/close', '200,2/2/24,0:00,0,0,Starting Point,2/2/24 1:00,100,62.1,,2/2/24 6:40', '1000,2/2/24,0:00,0,0,begin,2/2/24 1:00,1000,621.4,finish line,2/2/24 3:00', '', ''], ['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/0/km,brevets/controls/0/mi,brevets/controls/0/location,brevets/controls/0/close', '200,2/2/24,0:00,0,0,Starting Point,2/2/24 1:00', '200,2/2/24,0:00,100,62.1,,2/2/24 6:40', '1000,2/2/24,0:00,0,0,begin,2/2/24 1:00', '1000,2/2/24,0:00,1000,621.4,finish line,2/2/24 3:00'])
Got:
['brevets/distance,brevets/begin_date,brevets/begin_time,brevets/controls/km,brevets/controls/mi,brevets/controls/location,brevets/controls/close\r\n', '200,02/02/2024,00:00,0,0,Starting Point,02/02/2024 01:00\r\n', '200,02/02/2024,00:00,100,62.1,,02/02/2024 06:40\r\n', '1000,02/02/2024,00:00,0,0,begin,02/02/2024 01:00\r\n', '1000,02/02/2024,00:00,1000,621.4,finish line,02/02/2024 03:00\r\n']
> Called 'http://localhost:5001/listOpenOnly/json?top=2 expecting
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'open': '02/02/2024 00:00'}, {'km': 100, 'mi': 62.1, 'location': None, 'open': '02/02/2024 02:56'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'open': '02/02/2024 00:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'open': '02/02/2024 09:05'}]}]}
Got:
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'open': '02/02/2024 00:00'}, {'km': 100, 'mi': 62.1, 'location': 'None', 'open': '02/02/2024 02:56'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'open': '02/02/2024 00:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'open': '02/02/2024 09:05'}]}]}
> Called 'http://localhost:5001/listCloseOnly/json?top=2 expecting
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'close': '02/02/2024 01:00'}, {'km': 100, 'mi': 62.1, 'location': None, 'close': '02/02/2024 06:40'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'close': '02/02/2024 01:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'close': '02/02/2024 03:00'}]}]}
Got:
{'brevets': [{'distance': 200, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'Starting Point', 'close': '02/02/2024 01:00'}, {'km': 100, 'mi': 62.1, 'location': 'None', 'close': '02/02/2024 06:40'}]}, {'distance': 1000, 'begin_date': '02/02/2024', 'begin_time': '00:00', 'controls': [{'km': 0, 'mi': 0, 'location': 'begin', 'close': '02/02/2024 01:00'}, {'km': 1000, 'mi': 621.4, 'location': 'finish line', 'close': '02/02/2024 03:00'}]}]}
```
#### <a name="task22"></a>Task-22 [PASSED, 30.0/30]
- **Goal**: Implemented a working and user-friendly consumer program?
- **Result**: Feedback from us and/or the system:
```
Yes, the solution satisfy the requirements
```
#### <a name="task23"></a>Task-23 [PASSED, 0/0]
- **Goal**: Stop the all services!
- **Result**: Feedback from us and/or the system:
```
> Stopping and delete all services.
> Command: 'docker-compose --project-directory /Users/zalsaeed/Documents/qu/492/it492-all-things-considered/projects-and-its-grading/project-6/submissions/repos/411107965/brevets -f /Users/zalsaeed/Documents/qu/492/it492-all-things-considered/projects-and-its-grading/project-6/submissions/repos/411107965/brevets/docker-compose.yml --project-name 411107965 down -v'
```