commit 2782fbbdf3f88e0a1bb9ba1b9680378f0ebfc52d Author: isufian12 <107994227+isufian12@users.noreply.github.com> Date: Wed Jan 17 19:13:14 2024 +0300 first git sourcr try diff --git a/411107965-Sufian-project-6(1).md b/411107965-Sufian-project-6(1).md new file mode 100644 index 0000000..a60178b --- /dev/null +++ b/411107965-Sufian-project-6(1).md @@ -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: +#### Task-1 [PASSED, 0/0] +- **Goal**: Get the file credentials.ini +- **Result**: Feedback from us and/or the system: + +``` +Found a *.ini file! +``` + +#### 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' +``` + +#### 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! +``` + +#### 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' +``` + +#### 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' +``` + +#### 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. +``` + +#### 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'. +``` + +#### 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'. +``` + +#### 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'. +``` + +#### 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'. +``` + +#### 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'. +``` + +#### 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/' +``` + +#### 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/' +``` + +#### 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/' +``` + +#### 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! + +``` + +#### Task-16 [PASSED, 0/0] +- **Goal**: Insert sample data to database +- **Result**: Feedback from us and/or the system: + +``` +Inserted data successfully + +``` + +#### 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! + +``` + +#### 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'}]}]} + +``` + +#### 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'] + +``` + +#### 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'}]}]} + +``` + +#### 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'}]}]} + +``` + +#### 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 +``` + +#### 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' + +``` +