This repository contains the starter code for project 2 (15-440/15-640, Fall 2025). It also contains some of the tests that we will use to grade your implementation.
The starter code for this project is organized as follows:
src/github.com/cmu440/
raft/ Raft implementation, tests and test helpers
rpc/ RPC library that must be used for implementing Raft
If at any point you have any trouble with building, installing, or testing your code, the article
titled How to Write Go Code is a great resource for understanding
how Go workspaces are built and organized. You might also find the documentation for the
go command to be helpful. As always, feel free to post your questions
on Edstem.
To run the checkpoint tests, run the following from the src/github.com/cmu440/raft/ folder
go test -run 2AWe will also check your code for race conditions using Go’s race detector:
go test -race -run 2ATo execute all the tests, run the following from the src/github.com/cmu440/raft/ folder
go testWe will also check your code for race conditions using Go’s race detector:
go test -racePlease disable or remove all debug prints regardless of whether you are using our logging framework or not before submitting to Gradescope. This helps avoid inadvertent failures, messy autograder outputs and style point deductions.
For both the checkpoint and the final submission, create handin.zip using the following
command under the p2/ directory, and then upload it to Gradescope.
sh make_submit.sh
# NOTE: If you're on a Windows machine, use 7-zip to ensure your zip file format is compatible with Linux.
# See discussion: https://edstem.org/us/courses/84244/discussion/6897281
Before you begin the project, you should read and understand all of the starter code we provide. To make this experience a little less traumatic (we know, it's a lot :P), fire up a web server and read the documentation in a browser by executing the following commands:
- Install
godocglobally, by running the following command outside thesrc/github.com/cmu440directory:
go install golang.org/x/tools/cmd/godoc@latest- Start a godoc server by running the following command inside the
src/github.com/cmu440directory:
godoc -http=:6060If you get an error like "command not found", try the following commands:
echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> ~/.zshrc
source ~/.zshrc- While the server is running, navigate to localhost:6060/pkg/github.com/cmu440 in a browser.