-
-
Save vsouza/d4d8edc96cacb70f73bb149c4e36c542 to your computer and use it in GitHub Desktop.
Revisions
-
cespare created this gist
Feb 20, 2013 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,19 @@ package main import ( "log" "myserver" "net/http" ) const addr = "localhost:12345" func main() { mux := http.NewServeMux() handler := &myserver.MyHandler{} mux.Handle("/favicon.ico", http.NotFoundHandler()) mux.Handle("/", handler) log.Printf("Now listening on %s...\n", addr) server := http.Server{Handler: mux, Addr: addr} log.Fatal(server.ListenAndServe()) } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,22 @@ package myserver import ( "fmt" "net/http" "sync" ) type MyHandler struct { sync.Mutex count int } func (h *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { var count int h.Lock() h.count++ count = h.count h.Unlock() fmt.Fprintf(w, "Visitor count: %d.", count) } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,33 @@ package myserver import ( "fmt" "io/ioutil" "net/http" "net/http/httptest" "testing" ) func TestMyHandler(t *testing.T) { handler := &MyHandler{} server := httptest.NewServer(handler) defer server.Close() for _, i := range []int{1, 2} { resp, err := http.Get(server.URL) if err != nil { t.Fatal(err) } if resp.StatusCode != 200 { t.Fatalf("Received non-200 response: %d\n", resp.StatusCode) } expected := fmt.Sprintf("Visitor count: %d.", i) actual, err := ioutil.ReadAll(resp.Body) if err != nil { t.Fatal(err) } if expected != string(actual) { t.Errorf("Expected the message '%s'\n", expected) } } }