{"id":21962440,"url":"https://github.com/scipopt/rubberband","last_synced_at":"2025-04-23T21:23:17.223Z","repository":{"id":43367547,"uuid":"75405071","full_name":"scipopt/rubberband","owner":"scipopt","description":"A flexible archiving platform for optimization benchmarks","archived":false,"fork":false,"pushed_at":"2025-01-20T18:48:00.000Z","size":21481,"stargazers_count":3,"open_issues_count":26,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-19T18:03:46.852Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scipopt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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":"2016-12-02T15:00:18.000Z","updated_at":"2025-01-20T18:48:05.000Z","dependencies_parsed_at":"2024-11-29T10:40:43.952Z","dependency_job_id":"9521751e-651a-4c95-a22a-19d6590b6265","html_url":"https://github.com/scipopt/rubberband","commit_stats":null,"previous_names":["scipopt/rubberband"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipopt%2Frubberband","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipopt%2Frubberband/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipopt%2Frubberband/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipopt%2Frubberband/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scipopt","download_url":"https://codeload.github.com/scipopt/rubberband/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250515490,"owners_count":21443424,"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-29T10:40:26.847Z","updated_at":"2025-04-23T21:23:17.207Z","avatar_url":"https://github.com/scipopt.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rubberband\n\n[![Build Status](https://travis-ci.org/xmunoz/rubberband.svg?branch=master)](https://travis-ci.org/xmunoz/rubberband)\n\nA flexible web view and analysis platform for solver log files of mathematical optimization software, backed by Elasticsearch.\n\n- [Development](#development)\n  - [Install Elasticsearch](#install-elasticsearch)\n  - [Set up Rubberband](#set-up-rubberband)\n  - [Populate Elasticsearch](#populate-elasticsearch)\n  - [Start the server](#start-the-server)\n- [Testing](#testing)\n- [Deployment](#deployment)\n  - [Authentication](#authentication)\n  - [Web Server](#web-server)\n  - [Process Management](#process-management)\n- [Contributing](#contributing)\n\n## Development\n\nThis is a detailed description of how to set up Rubberband.\n\n### Installing Elasticsearch\n\nJava 8 is [required](https://www.elastic.co/guide/en/elasticsearch/reference/2.4/setup.html#jvm-version) to run Elasticsearch. For Ubuntu, you can install Java 8 this way.\n```\nsudo apt-get install python-software-properties\nsudo add-apt-repository ppa:webupd8team/java\nsudo apt-get update\nsudo apt-get install oracle-java8-installer\n```\n\nTo confirm that Java is properly installed, check the version.\n```\n$ java -version\njava version \"1.8.0_101\"\nJava(TM) SE Runtime Environment (build 1.8.0_101-b13)\nJava HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)\n```\n\nNow you're ready to install Elasticsearch. NOTE: Elasticsearch is rapidly developing software. Only 2.x versions of Elasticsearch are supported by Rubberband. Sadly, Elasticsearch is neither backwards- nor forwards-compatible. Here are the most current instructions for installing Elasticsearch with `apt` on Ubuntu.\n\n```\nwget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -\necho \"deb http://packages.elastic.co/elasticsearch/2.x/debian stable main\" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list\nsudo apt-get update \u0026\u0026 sudo apt-get install elasticsearch\n```\n\nGeneral instructions for installing Elasticsearch can be found in the [offical Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/2.4/_installation.html).\n\nMore information about running Elasticsearch as a service can be found [here](https://www.elastic.co/guide/en/elasticsearch/reference/2.4/setup-repositories.html), though this shouldn't be required for a development setup.\n\n### Setting up Rubberband\n\nRubberband is built on [tornado](http://www.tornadoweb.org/en/stable/) and [IPET](https://github.com/gregorCH/ipet), an interactive performance evaluation tool that comes with a parsing library for benchmark files. To get Rubberband running locally, make sure you first have Elasticsearch installed and running.\n\n```\nsudo service elasticsearch start\n```\n\nNow clone this repository and set up a virtual environment.\n\n```\nvirtualenv -p python3 --no-site-packages venv\nsource venv/bin/activate\npip install -r requirements.txt\npip install -r requirements-dev.txt\n```\n\nThe first install command will clone and install IPET from github, you don't need to do this manually.\n\nFor a deployed version of Rubberband copy the configuration file in [config/app.cfg](config/app.cfg) into `/etc/rubberband/`, and edit the required variables. Rubberband has some sane defaults already configured, so this step isn't strictly required. However, if you want to connect Rubberband to a Gitlab instance, or to an SMTP server to send email, you will need to edit `app.cfg`.\nNOTE: If you install Rubberband as a developer version, you don't need to do this.\n\n### Populating Elasticsearch\n\nTo populate the database or run unit tests, first install Rubberband inside the virtualenv.\n\n```\npip install -e .\n```\n\nNow take a look at the control script in `bin/rubberband-ctl`. Running the control script with no options will show the help. For first-time, create the index, and populate that index with data. This can be accomplished with the following two commands.\n\n```\nbin/rubberband-ctl create-index\nbin/rubberband-ctl populate-index\n```\n\nThe second command will need a few minutes to finish. If the commands complete sucessfully, stdout should look something like this:\n\n```\nWARNING:elasticsearch:HEAD /solver-results [status:404 request:0.005s]\nINFO:elasticsearch:PUT http://127.0.01:9200/solver-results [status:200 request:0.107s]\nINFO:elasticsearch:HEAD http://127.0.01:9200/solver-results [status:200 request:0.002s]\nINFO:elasticsearch:PUT http://127.0.01:9200/solver-results/_mapping/file [status:200 request:0.041s]\nINFO:elasticsearch:HEAD http://127.0.01:9200/solver-results [status:200 request:0.002s]\nINFO:elasticsearch:PUT http://127.0.01:9200/solver-results/_mapping/testset [status:200 request:0.019s]\nINFO:root:Loading additional configuration from /etc/rubberband/app.cfg\nINFO:root:Setting up Elasticsearch connection.\nINFO:rubberband.utils.importer:debug opened a connection to elasticsearch with the ResultClient\nINFO:rubberband.utils.importer:Found 4 files. Beginning to parse.\nINFO:urllib3.connectionpool:Starting new HTTP connection (1): 127.0.01\nINFO:elasticsearch:GET http://127.0.01:9200/solver-results/testset/_search [status:200 request:0.057s]\nINFO:rubberband.utils.importer:Adding SoluFile.\n...\n```\n\n### Start the server\n\nCross your fingers and run the following command from your virtual environment.\n\n```\npython server.py\n```\n\nIf everything went well, you should be able to open [http://127.0.0.1:8888/](http://127.0.0.1:8888/) in your browser and see something that looks like this.\n\n![rubberband screenshot](https://raw.githubusercontent.com/xmunoz/rubberband/master/rubberband-screenshot.png)\n\n## Documentation\n\nTo build the documentation run the following commands from inside the virtualenvironment:\n\n```\ncd doc\nmake doc\n```\n\nNow you can view the documentation by opening `doc/build/html/index.html` in your favorite webbrowser.\n\n## Testing\n\nRun the test suite.\n\n```\npy.test -v tests/\n```\n\nTests will fail if Elasticsearch is not running, or if the index is empty or if you didn't configure authentication correctly.\n\n## Deployment\n\nRubberband currently requires a connection to an [Elasticsearch 2.x](https://www.elastic.co/guide/en/elasticsearch/reference/2.4/index.html) instance and (optionally) a [Gitlab](https://about.gitlab.com/) instance to run. To configure a Gitlab connection, edit the configuration variables in `/etc/rubberband/app.cfg` beginning with `gitlab_`. The Gitlab connection is used to look up information from the code base that your test set log is linked to. Examples of this type of information are git commit date and last committer. The visualize tab is disabled if no Gitlab connection information is provided.\n\n### Authentication\n\nThere is no authentication built into Rubberband, though rubberband will authorize requests to the frontend using the `X-Forwarded-Email` header. Request made to the API require this header, as well as an `X-Api-Token` header. This is to say that authentication and setting the appropriate headers is the responsibility of the user/deployer. [oauth2_proxy](https://github.com/bitly/oauth2_proxy) is a convenient proxy that, when properly hooked up to an OAuth provider, will set this header for you.\n\n### Web Server\n\nRubberband is meant to be deployed behind a production webserver, such as a [nginx](https://www.nginx.com/) or [apache](https://httpd.apache.org/). See [config/rubberband-oauth](config/rubberband-oauth) for a sample nginx configuration. This example shows an HTTPS deployment configured with [Let's Encrypt](and://letsencrypt.org/).\n\n### Process Management\n\n[Supervisor](http://supervisord.org/) is a process monitor and manager, and great way to make sure Rubberband keeps running reliably in production.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscipopt%2Frubberband","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscipopt%2Frubberband","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscipopt%2Frubberband/lists"}