Git Product home page Git Product logo

ramcloud-1's Introduction

/**
  @mainpage RAMCloud


  See https://ramcloud.stanford.edu/wiki/display/ramcloud/General+Information+for+Developers for further details.



====================================
1. Building
====================================

1.1 Pre-requisites (Ubuntu)

A 64-bit linux !

g++ (at least 4.4)

git

python

perl

sudo apt-get install build-essential git-core libcppunit-dev libcppunit-doc doxygen libboost1.42-all-dev libprcre3-dev protobuf-compiler libprotobuf-dev libcrypto++-dev libevent-dev

1.2 Builds

Using GNU make, type:

$ make

This will build the client, server, and coordinator.

====================================
2. Running
====================================

To run you must have 3 things.  A running coordinator, a running master,
and some kind of client.  These all need to be run on the same host;
running on separate hosts requires more flags (see -C and -L on both
the coordinator and server binary).

2.1 Starting a coordinator

$ ./obj.master/coordinator

2.2 Starting a server

$ ./obj.master/server -M -r 0

This starts a RAMCloud process acting only as a master using 0 backups.
If the master can communicate with the coordinator process you should
see a log message ending with "My server ID is 1" after a second or so.

2.3

To make sure things are really working try running

$ ./obj.master/client

It should connect to the master and perform a few random operations.
If it is working then you have a working basic RAMCloud and you can
start writing more interesting applications.

2.4 Using the libramcloud.so library

Write a client application using the interface described in
src/RamCloud.h (see RamCloudMain.cc for an example).

Until we have a proper 'install' target compile with:

$ g++ -Lobj.master -lramcloud -Isrc -Iobj.master -o TestClient TestClient.cc

This is assuming TestClient.cc is in the ramcloud directory just above src.
Adjust your paths accordingly.

2.5 Using the Python bindings:

$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:obj.master PYTHONPATH=bindings/python python

>>> import ramcloud

>>> c = ramcloud.RAMCloud()

>>> c.connect()

>>> c.write(0, 0, 'Hello from Python!')

>>> c.read(0, 0)


====================================
3. Testing
====================================
3.1 Static Style Checking

$ make check

3.2 Unit Testing

$ make test

3.3 Integration Tests (Used as a pre-commit hook)

$ hooks/pre-commit


====================================
4. Source code layout
====================================

bindings/          Bindings in languages other than C/C++ for RAMCloud clients.

docs/              Doxygen generated source documentation.

ft/                Fast Transport Prototype - with helper scripts.

GNUmakefile        Primary Makefile to build everything.

hooks/             Scripts executed as hooks when certain git operations are called.

obj.master/        Build directory for the git branch "master". A separate one is created for each branch.

scripts/           Tools.

src/               Main source directory.

gtest/             git submodule that contains the code for google test


*/

ramcloud-1's People

Contributors

ongardie avatar rstutsman avatar steverumble avatar johnousterhout avatar junkumar avatar mashtizadeh avatar amordkov avatar ankitak avatar

Watchers

skyformat99 avatar  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.