Code Monkey home page Code Monkey logo

pong_matcher_grails's Introduction

CF example app: ping-pong matching server

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.

Log in.

cf login -a https://api.run.pivotal.io

Target your org / space. An empty space is recommended, to avoid naming collisions.

cf target -o myorg -s myspace

Sign up for a cleardb instance.

cf create-service cleardb spark mysql

Build the app.

./grailsw war

Push the app. Its manifest assumes you called your ClearDB instance 'mysql'.

cf push -n mysubdomain

Export the test host

export HOST=http://mysubdomain.cfapps.io

Now follow the interaction instructions.

Running locally

The following assumes you have a working, recent version of Groovy.

Install and start mysql:

brew install mysql
mysql.server start
mysql -u root

Create a database user and table in the MySQL REPL you just opened:

CREATE USER 'grailspong'@'localhost' IDENTIFIED BY 'grailspong';
CREATE DATABASE pong_matcher_grails_development;
GRANT ALL ON pong_matcher_grails_development.* TO 'grailspong'@'localhost';
exit

Source the development exports that correspond with the mysql credentials you just entered:

. scripts/development_exports

Start the application server:

./grailsw -Dserver.port=3000 run-app

Export the test host

export HOST=http://localhost:3000

Now follow the interaction instructions.

Interaction instructions

Start by clearing the database from any previous tests. You should get a 200.

curl -v -X DELETE $HOST/all

Then request a match, providing both a request ID and player ID. Again, you should get a 200.

curl -v -H "Content-Type: application/json" -X PUT $HOST/match_requests/firstrequest -d '{"player": "andrew"}'

Now pretend to be someone else requesting a match:

curl -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:

curl -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:

curl -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.

pong_matcher_grails's People

Watchers

James Cloos avatar Max Hufnagel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.