Hacking Keep » History » Revision 5
Revision 4 (Tom Clegg, 07/16/2014 09:24 AM) → Revision 5/9 (Tom Clegg, 08/18/2014 03:57 PM)
h1. Hacking Keep
{{toc}}
h2. Source tree layout
The Keep storage server source code is in @/services/keepstore@. Proxy server is in @/services/keepproxy@. @/services/keep/src/keep@.
<pre>
cd
git clone git://git.curoverse.com/arvados.git https://github.com/curoverse/arvados.git
ls arvados/services/keep* arvados/services/keep/src/keep
</pre>
*Note:* Clone @git@git.curoverse.com:arvados.git@ instead if you plan to push directly to git.curoverse.com.
h2. Install build-prerequisites
Install Go. See http://golang.org/doc/install or try this short cut:
<pre>
wget https://storage.googleapis.com/golang/go1.3.1.linux-amd64.tar.gz https://go.googlecode.com/files/go1.2.1.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.3.1.linux-amd64.tar.gz go1.2.1.linux-amd64.tar.gz
cd /usr/local/bin
sudo ln -s ../go/bin/* .
</pre>
(Check https://code.google.com/p/go/downloads/list for other platforms and newer versions.)
h2. Set up GOPATH Install mux.
<pre>
export GOPATH=~/gocode GOPATH=~/go go get github.com/gorilla/mux
mkdir -p $GOPATH
</pre>
h2. Tell Go to use your local copy
(Instead of automatically fetching master from the git repository)
<pre>
mkdir -p $GOPATH/src/git.curoverse.com
ln -s ~/arvados $GOPATH/src/git.curoverse.com/arvados.git
</pre>
h2. Run test suite
<pre>
cd ~/arvados/services/keep/src/keep
GOPATH=~/go go test git.curoverse.com/arvados.git/services/keepstore
</pre>
You should see something like this:
<pre>
2014/07/16 09:24:01 GET e4d909c290d0fb1ca068ffaddf22cbd0
2014/07/16 09:24:01 GET e4d909c290d0fb1ca068ffaddf22cbd0
2014/07/16 09:24:01 GET e4d909c290d0fb1ca068ffaddf22cbd0
2014/07/16 09:24:01 GET e4d909c290d0fb1ca068ffaddf22cbd0
2014/07/16 09:24:01 GET e4d909c290d0fb1ca068ffaddf22cbd0
2014/07/16 09:24:01 PUT e4d909c290d0fb1ca068ffaddf22cbd0
2014/07/16 09:24:01 PUT e4d909c290d0fb1ca068ffaddf22cbd0
2014/07/16 09:24:01 PUT e4d909c290d0fb1ca068ffaddf22cbd0
2014/07/16 09:24:01 [MockVolume]: checksum mismatch for request e4d909c290d0fb1ca068ffaddf22cbd0 (actual 55ae4d45d2db0793d53f03e805f656e5)
2014/07/16 09:24:01 e4d909c290d0fb1ca068ffaddf22cbd0: checksum mismatch, no good copy found
2014/07/16 09:24:01 GetBlock: reading e4d909c290d0fb1ca068ffaddf22cbd0: Bad volume
2014/07/16 09:24:01 [MockVolume]: Write(e4d909c290d0fb1ca068ffaddf22cbd0): Bad volume
2014/07/16 09:24:01 GetBlock: reading e4d909c290d0fb1ca068ffaddf22cbd0: Bad volume
2014/07/16 09:24:01 e4d909c290d0fb1ca068ffaddf22cbd0: MD5 checksum 55ae4d45d2db0793d53f03e805f656e5 did not match request
2014/07/16 09:24:01 [MockVolume]: checksum mismatch for request e4d909c290d0fb1ca068ffaddf22cbd0 (actual 55ae4d45d2db0793d53f03e805f656e5)
2014/07/16 09:24:01 e4d909c290d0fb1ca068ffaddf22cbd0: checksum mismatch, no good copy found
2014/07/16 09:24:01 e4d909c290d0fb1ca068ffaddf22cbd0: could not create directory /tmp/volume_test436651248/e4d: mkdir /tmp/volume_test436651248/e4d: permission denied
PASS
ok git.curoverse.com/arvados.git/services/keepstore 0.015s _/home/you/src/arvados/services/keep/src/keep 0.030s
</pre>