Name: pong_matcher_go
Owner: Cloud Foundry Sample Applications
Description: null
Created: 2014-12-30 19:14:46.0
Updated: 2017-09-19 14:19:46.0
Pushed: 2017-02-09 18:02:51.0
Homepage: null
Size: 2447
Language: Go
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
This is an app to match ping-pong players with each other. It's currently an
API only, so you have to use curl
to interact with it.
It has an acceptance test suite you might like to look at.
Note: We highly recommend that you use the latest versions of any software required by this sample application.
Log in.
ogin -a https://api.run.pivotal.io
Target your org / space. An empty space is recommended, to avoid naming collisions.
arget -o myorg -s myspace
Sign up for a cleardb instance.
reate-service cleardb spark mysql
Push the app. Its manifest assumes you called your ClearDB instance 'mysql'.
ush -n mysubdomain
Export the test host
rt HOST=http://mysubdomain.cfapps.io
Now follow the interaction instructions.
The following assumes you have a working, recent version of Go installed, and you have a properly set-up Go workspace.
The minimum required set-up for a Go workspace is a directory structured as shown below:
o-workspace-name>
|-src
|-bin
|-pkg
Also, ensure that you set your GOPATH environment variable using your workspace name: export GOPATH=$HOME/.../<Go-workspace-name>
.
Install and start MySQL:
install mysql
l.server start
l -u root
Create a database user and table in the MySQL REPL you just opened:
TE USER 'gopong'@'localhost' IDENTIFIED BY 'gopong';
TE DATABASE pong_matcher_go_development;
T ALL ON pong_matcher_go_development.* TO 'gopong'@'localhost';
Install and start the application server:
et github.com/cloudfoundry-samples/pong_matcher_go
GOPATH/src/github.com/cloudfoundry-samples/pong_matcher_go
nstall
ATH/bin/pong_matcher_go
Export the test host in another shell, where you can then run the interactions:
rt HOST=http://localhost:3000
Now follow the interaction instructions.
Start by clearing the database from any previous tests. You should get a 200.
-v -X DELETE $HOST/all
Then request a match, providing both a request ID and player ID. Again, you should get a 200.
-v -H "Content-Type: application/json" -X PUT $HOST/match_requests/firstrequest -d '{"player": "andrew"}'
Now pretend to be someone else requesting a match:
-v -H "Content-Type: application/json" -X PUT $HOST/match_requests/secondrequest -d '{"player": "navratilova"}'
Let's check on the status of our first match request:
-v -X GET $HOST/match_requests/firstrequest
The bottom of the output should show you the match_id. You'll need this in the next step.
Now pretend that you've got back to your desk and need to enter the result:
-v -H "Content-Type: application/json" -X POST $HOST/results -d '
"match_id":"thematchidyoureceived",
"winner":"andrew",
"loser":"navratilova"
You should get a 201 Created response.
Future requests with different player IDs should not cause a match with someone who has already played. The program is not yet useful enough to allow pairs who've already played to play again.