This repository is a BOSH release that delivers HTTP and TCP routing for Cloud Foundry.
Job | Status |
---|---|
unit tests | |
performance tests | |
smoke tests |
If you a concrete issue to report or change to request, please create a Github issue. Issues with any related submodules (Gorouter, Routing API, Route Registrar, CF TCP Router) should be created here instead.
You can also reach us on Slack at cloudfoundry.slack.com in the #networking
channel.
When working on individual components of the Routing Release, work out of the
submodules under src/
.
Run the appropriate unit tests (see Testing).
The release
branch contains code that has been released. All development work
happens on the develop
branch.
- Clone the repository
mkdir -p ~/workspace
cd ~/workspace
git clone https://github.com/cloudfoundry/routing-release.git
cd routing-release/
- Automate
$GOPATH
and$PATH
setup.
This BOSH release doubles as a $GOPATH
. It will automatically be set up for
you if you have direnv installed.
direnv allow
If you do not wish to use direnv
, you can simply source
the .envrc
file
at the root of the repository. You may manually need to update your $GOPATH
and $PATH
variables as you switch in and out of the directory.
- Initialize and sync submodules.
./scripts/update
From the root of the repo, run:
rspec ./spec/
rubocop ./spec/
If you do not have rspec
or rubocop
installed locally, run
./scripts/start-docker-for-testing.sh
and execute the commands in the docker
container.
-
Run tests using the script provided. This script pulls a docker image and runs the tests within a container because integration tests require Linux specific features.
Notice/warning: the script is called
run-unit-tests-in-docker
but it really runs unit and integration tests, that's why they need to run in a container../scripts/run-unit-tests-in-docker
-
If you'd like to run a specific component's tests in a Docker container, the
run-unit-tests
script also takes a package name as an argument:./scripts/run-unit-tests-in-docker gorouter
- If you'd like to run the unit and integration tests for an individual
component locally, we recommend you run
bin/test
in that component's directory. Please make sure it's a component that doesn't require a Linux operating system.
The Routing Acceptance Tests must run on a full Cloud Foundry deployment. One method is to deploy Cloud Foundry on a BOSH lite with cf-deployment.
To Run the Routing Acceptance Tests, see the README.md.
The TCP Router and Routing API are stateless and horizontally scalable. The TCP Routers must be fronted by a load balancer for high-availability. The Routing API depends on a database, that can be clustered for high-availability. For high availability, deploy multiple instances of each job, distributed across regions of your infrastructure.
For details refer to Routing API.
For documentation on metrics available for streaming from Routing components through the Loggregator Firehose, visit the CloudFoundry Documentation. You can use the NOAA Firehose sample app to quickly consume metrics from the Firehose.