{"id":21946392,"url":"https://github.com/aclonegeek/honours","last_synced_at":"2025-09-01T12:07:33.908Z","repository":{"id":136144996,"uuid":"229130199","full_name":"aclonegeek/honours","owner":"aclonegeek","description":"An asynchronous client-server application demonstrating BDD testing","archived":false,"fork":false,"pushed_at":"2020-04-23T14:04:21.000Z","size":213,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-31T16:51:47.064Z","etag":null,"topics":["async","bdd","cpp","networking","testing"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aclonegeek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-19T20:05:21.000Z","updated_at":"2020-05-03T03:34:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"9820eb40-4d53-44d8-9aa9-e03c506d2f0e","html_url":"https://github.com/aclonegeek/honours","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aclonegeek/honours","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aclonegeek%2Fhonours","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aclonegeek%2Fhonours/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aclonegeek%2Fhonours/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aclonegeek%2Fhonours/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aclonegeek","download_url":"https://codeload.github.com/aclonegeek/honours/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aclonegeek%2Fhonours/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273122120,"owners_count":25049539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","bdd","cpp","networking","testing"],"created_at":"2024-11-29T04:31:33.060Z","updated_at":"2025-09-01T12:07:33.859Z","avatar_url":"https://github.com/aclonegeek.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# COMP4905 - Honours Project\n\n# Table of Contents\n- [COMP4905 - Honours Project](#comp4905---honours-project)\n- [Table of Contents](#table-of-contents)\n- [Requirements](#requirements)\n- [Dependencies](#dependencies)\n- [Documentation](#documentation)\n- [Setup, Building, \u0026 Running](#setup-building--running)\n    - [Setup and Building](#setup-and-building)\n    - [Running](#running)\n    - [Running Tests](#running-tests)\n        - [Running The Test Suite](#running-the-test-suite)\n        - [Running Native Tests](#running-native-tests)\n        - [Running Parallel Tests](#running-parallel-tests)\n\n# Requirements\n- C++17 compiler (GCC \u003e= 7, Clang \u003e= 4, MSVC \u003e= 19.25)\n- CMake \u003e= 3.16 (make sure it's on the PATH)\n- git\n\n# Dependencies\n- Asio 1.16.0 (included)\n- Doctest 2.3.7 (included)\n\n# Documentation\n\nSee [docs](docs.md).\n\n# Setup, Building, \u0026 Running\n## Setup and Building\n- In a terminal, run:\n``` shell\ngit clone -b final-submission --single-branch --recurse-submodules https://github.com/aclonegeek/honours.git\ncd honours\ncmake -E make_directory build\ncmake -E chdir build cmake ..\ncmake --build build\n```\n\n**Note**: Downloading the repository as a zip will not pull in the third_party submodules.\n\n**Note**: If building with MSVC, it will place executables one directory deeper inside a `Debug` or `Release` directory, depending on the configuration built with (the default is `Debug`). `run_server` and `run_client` end up in `build/Debug` and `test_suite` ends up in `build/test/Debug/test_suite` (the directory will be Release if built in Release mode).\n\n## Running\nThe client and server executables can be located inside the `build` directory.\n\nThe university's periods (e.g. pre-registration -\u003e registration) are currently set for optimizing test speed (if you run the client, you won't be able to do much because it'll reach term and end of term fast). See the note about them below in [Running Tests](#running-tests).\n\nTo the run server: `run_server \u003cport\u003e`(e.g. `run_server 5001`).\n\nTo run the client: `run_client \u003chost\u003e \u003cport\u003e` (e.g. `run_client localhost 5001`).\n\nThe password for the clerk account is `admin`.\n\n## Running Tests\nThe test suite can be located inside the `build/test` directory.\n\nThe tests depend on the timing values defined inside the `University`'s header file - if they are decreased, the tests may fail. Increasing the values is (should be :)) fine.\n\nThe tests also depend on sleeps. If the tests are failing, try adjusting the sleep value inside the `step_definitions.cpp` file inside the `void wait_for_action_to_finish()` function, or wherever else you encounter sleeps.\n\n### Running The Test Suite\nThe code for the test suite is located in `test/doctest/scenarios/`.\n\nTo run the test suite, simply run `test_suite --tce=*EX1*,*EX2*`. This will run the entire test suite except the native and parallel tests for ex1 and ex2.\n\nTo run a specific test suite or test suites, you can do the following:\n``` shell\n# List all the test suites by name.\ntest_suite --lts\n# Run the corresponding test suite or suites based on a given filter.\n# For example, test_suite --ts=\"Logging in\" will run the Logging in test suite.\ntest_suite --ts=\u003cfilters\u003e\n```\n\nTo run a specific test case or test cases, you can do the following:\n``` shell\n# List all the test cases by name.\ntest_suite --ltc\n# Run the corresponding test case or cases based on a given filter.\n# For example, test_case --tc=\"*logs in*\" will run all tests for logging in.\n# Note: The *'s at the front and end of the filter are important - all test cases have the text \"Scenario:\" (minus the quotes) prepended to them, and we want to filter that out.\ntest_suite --tc=\u003cfilters\u003e\n```\n\n### Running Native Tests\nThe code for the native tests is located in `test/doctest/scenarios/native/`.\n\nRun `test_suite --tc=*EX?N*` where ? is 1 or 2 depending on the native test that you want to run.\n\n### Running Parallel Tests\nThe code for the native tests is located in `test/doctest/scenarios/parallel/`.\n\nThese commands must be run from within the `build` directory.\n\n**Note**: If on Windows, append `-C Debug` or `-C Release` depending on the configuration built with to the following commands, right after `--verbose`.\n\nFor ex1, run `ctest -R ex1.* -j6 --verbose`.\n\nFor ex2, run `ctest -R ex2.* -j7 --verbose`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faclonegeek%2Fhonours","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faclonegeek%2Fhonours","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faclonegeek%2Fhonours/lists"}