{"id":19174627,"url":"https://github.com/equalitie/echochamber","last_synced_at":"2025-07-31T22:06:08.314Z","repository":{"id":151043684,"uuid":"43578104","full_name":"equalitie/EchoChamber","owner":"equalitie","description":"A protocol testing platform that simulates network conditions and peer behavior to produce programmer-friendly benchmark data","archived":false,"fork":false,"pushed_at":"2019-01-04T23:39:03.000Z","size":139,"stargazers_count":11,"open_issues_count":1,"forks_count":5,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-20T01:33:00.615Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/equalitie.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,"zenodo":null}},"created_at":"2015-10-02T21:53:27.000Z","updated_at":"2025-03-18T01:24:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"76a5972f-3b6e-49d7-a55b-9716c1ea4862","html_url":"https://github.com/equalitie/EchoChamber","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2FEchoChamber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2FEchoChamber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2FEchoChamber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2FEchoChamber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/equalitie","download_url":"https://codeload.github.com/equalitie/EchoChamber/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252931814,"owners_count":21827171,"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","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":[],"created_at":"2024-11-09T10:18:33.593Z","updated_at":"2025-05-07T18:21:02.613Z","avatar_url":"https://github.com/equalitie.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"EchoChamber\n===========\n\n[![CircleCI](https://circleci.com/gh/equalitie/EchoChamber/tree/pytest-expect.svg?style=svg)](https://circleci.com/gh/equalitie/EchoChamber/tree/pytest-expect)\n\nEchoChamber is test harness and set of integration tests for the [np1sec](https://github.com/equalitie/np1sec) library. The platforms simulates real-world network conditions and peer behavior to produce programmer-friendly benchmark data.\n\n## Goals\n\n* Enable automated testing of a protocol implementation\n   * under a variety of network conditions\n   * with peers exhibiting a variety of different behaviors\n* High level test interface\n   * Avoid the need to write lots of C++ test code\n* Provide useful reports about how each peer behaves and what performance was like overall\n\n## Features\n\n1. The ability to spin up an arbitrary number of clients\n2. Facilitate communication between peers in a natural way\n3. Provide a simple configuration language or API\n4. Simulate an internal network as well as management of peers\n5. Produce programmer-friendly logs/reports about tests\n\n## Setup\n\nEchoChamber uses the **py.test** test framework to manage and run tests. All of the integration tests use the test np1sec client **Jabberite** and a local XMPP server. We recommend using a local **Prosody** XMPP server to more emulate a realistic client-server chat network.\n\nFirst the np1sec library and Jabberite client must be built from source. Please refer to the README in the np1sec Github project (https://github.org/equalitie/np1sec) for installation instructions.\n\nNext clone this git repository to your machine. It should be cloned to the same parent directory as the np1sec library:\n\n      git clone git@github.com:equalitie/EchoChamber.git\n      cd EchoChamber\n\nOn a Debian-based system the Prosody XMPP server and test dependencies can be installed as follows:\n\n      sudo apt-get install prosody\n      sudo service prosody stop # Stop the default prosody server\n      pip install -r requirements.txt\n\n# Setup\n\nClone this git repository to your machine. Rename `config.yml.example` to `config.yml` and edit the file as appropriate.\n\nTo run EchoChamber, you need to install dependencies first, by launching:\n\n      pip install -r requirements.txt\n\n# Running\n\nEchoChamber uses the `pytest` framework for collecting and running EchoChamber tests. The EchoChamber specific pytest options are listed in the pytest help message (`py.test --help`).\n\n\n      --show-cli-output     show output from all subprocesses (v. noisy)\n      --debug-mode          Enable debug features such as interactive prompts and\n                            invitation of external jabberite clients.\n      --run-with-gdb        Run jabberite instances with GDB.\n      -C ECHOCHAMBER_CONFIG, --echochamber-config=ECHOCHAMBER_CONFIG\n                            Location of the EchoChamber config file.\n\nAs EchoChamber is based on `pytest`, all of it's [standard options](http://doc.pytest.org/en/latest/usage.html) are available for use.\n\n### Test Invocation\n\nRunning the tests without interactive output:\n\n    py.test\n\nRunning the tests with extra logging:\n\n    py.test -s -v\n\nRunning the tests in debug mode:\n\n    py.test -s -v --debug-mode\n\nA subset of tests can be run by providing a set of test filenames to run:\n\n    py.test -s -v test_connection.py\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fequalitie%2Fechochamber","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fequalitie%2Fechochamber","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fequalitie%2Fechochamber/lists"}