- The Bandwidth on Demand (BoD) projects main purpose is to reservere bandwith for a specific amount of time. Like booking a hotelroom.
- BoD serves three groups of users, being the Network Operation Control Engineers (NOC), Administrators of an institute (a customer of SURFnet) and the enduser (e.g. scientist) who actually needs the bandwith to be available between certain locations.
- BoD provides a web user interface as well as a webservice interface which applies to the NSI (network services interface) specification.
- BoD connects to the SURFnet Customer Relation Management system called IDD to retrieve customer information and to a Network Management System (NMS) to retrieve network information and to delegate the reservation requests. Currently OpenDrac is the underlying NMS, but in 2013 the newly build OneControl NMS of Cienna will be used.
- The application is configured in a properties file called
bod-default.properties
. The properites file is configured so that the application should run out of the box. All the external dependencies are replaced by offline/mock clients. The different bod environments are configured in a seperate git repo that is a git submodule of this project. Only team members will have access to this repo. - By default the application will not use SURFconext authentication nor SAB (another SURFnet service) but a mock implementation. The sos-server should be running to use bod locally. The server is found here SoS and can be started with
mvn jetty:run
. - You need to set the environment variable
BOD_ENCRYPTION_PASSWORD
to some value. It will only be used for encrypted properties which are not present in thebod-default.properties
file. - The project depends on the
bod-mtosi
jar. This jar is not publically available. The default configuration will not need MTOSI, remove the dependeny from thepom.xml
to get the project building.
The easiest way to run the selenium tests is to run the mock open social server, SoS.
Further a (empty) bod-selenium
database is expected.
mvn verify -Pselenium
If you want to run the selenium tests from your IDE (like Eclipse), you could start a local server with selenium settings.
mvn jetty:run -Pselenium-server
For the integration tests access to the bod-env-properties
git repo is needed. You can run them with
mvn verify -Pintegration
Load testing is done with Gatling. The simulations are located in src/test/gatling/simulations
.
To run a simulation like NsiReserveRequestSimulation
type:
mvn gatling:execute -Dgatling.simulationClass=NsiReserveRequestSimulation
BoD requires Java 7. Mainly because of jax-ws 2.2 which bundled in java 7, java 6 uses jax-ws 2.1. If you are on a Mac like me, you need to download the dmg from Oracle. After installation you have a /Library/Java/JavaVirtualMachines/1.7.0.jdk
directory.
To make sure maven is using your jdk 7 set your env JAVA_HOME to /usr/libexec/java_home --version 1.7
. Check with mvn -version
.
To change the default jre in mac os X open java preferences.
When running postgresql on a Mac installed through Homebrew your conf file says it can have a maximum of 20 connections. When you would like to increase this because you are running out of connections you could do the following. Edit the /usr/local/var/postgres/postgresl.conf
and change the max_connections
to 100 for example.
To make postgresql happy you should change some memmory settings by editing /etc/sysctl.conf
kern.sysv.shmmax=1073741824
kern.sysv.shmmin=1
kern.sysv.shmmni=4096
kern.sysv.shmseg=32
kern.sysv.shmall=1179648
And restarting postgresql (for example) like
launchctl unload ~/Library/LaunchAgents/org.postgresql.postgres.plist
launchctl load ~/Library/LaunchAgents/org.postgresql.postgres.plist
For making NSI requests an OAuth2 access token is needed. If you want to generate or validate these tokens in BoD an OAuth2 server is needed.
We use a the apis server for this.