-
Notifications
You must be signed in to change notification settings - Fork 155
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #9 from soundcloud/refactor-vendoring
Refactor vendoring
- Loading branch information
Showing
93 changed files
with
3,302 additions
and
18 deletions.
There are no files selected for viewing
This file contains 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 characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -297,5 +297,15 @@ Go installed on your computer to build Roshi. If you're on a Mac and use | |
|
||
# I just want to run the HTTP service! | ||
|
||
go get github.com/soundcloud/roshi/roshi-server | ||
roshi-server -h | ||
roshi-server uses vendored dependencies and a "blessed build" process to ensure | ||
stability. The recommended way to get and build roshi-server is | ||
|
||
git clone [email protected]:soundcloud/roshi | ||
cd roshi/roshi-server | ||
make | ||
|
||
Invoking `go get` directly (`go get github.com/soundcloud/roshi/roshi-server`) | ||
should work, with the caveat that it will download missing dependencies | ||
directly from their respective master branches, which may not be properly | ||
tested. | ||
|
This file contains 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 characters
This file contains 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 characters
This file contains 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 characters
This file contains 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 characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
GOPATH := $(CURDIR)/../vendor:$(GOPATH) | ||
|
||
all: build | ||
|
||
build: | ||
go build | ||
|
||
clean: | ||
go clean | ||
|
||
check: | ||
@go list -f '{{join .Deps "\n"}}' | xargs go list -f '{{if not .Standard}}{{.ImportPath}} {{.Dir}}{{end}}' | column -t | ||
|
This file contains 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 characters
This file contains 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 characters
This file contains 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 characters
This file contains 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 characters
This file contains 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 characters
This file contains 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 characters
This file contains 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 characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,9 +7,9 @@ All management commands should be run from the top level of the repository. | |
|
||
## Adding a new dependency | ||
|
||
git subtree add --prefix vendor/bar [email protected]:foo/bar master --squash | ||
git subtree add --prefix vendor/src/github.com/foo/bar [email protected]:foo/bar master --squash | ||
|
||
## Updating a dependency | ||
|
||
git subtree pull --prefix vendor/bar [email protected]:foo/bar master --squash | ||
git subtree pull --prefix vendor/src/github.com/foo/bar [email protected]:foo/bar master --squash | ||
|
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains 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 characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
language: go | ||
|
||
go: | ||
- 1.0 | ||
- 1.1 | ||
- 1.2 | ||
- tip |
File renamed without changes.
This file contains 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 characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
context | ||
======= | ||
[](https://travis-ci.org/gorilla/context) | ||
|
||
gorilla/context is a general purpose registry for global request variables. | ||
|
||
Read the full documentation here: http://www.gorillatoolkit.org/pkg/context |
This file contains 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 characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
// Copyright 2012 The Gorilla Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style | ||
// license that can be found in the LICENSE file. | ||
|
||
package context | ||
|
||
import ( | ||
"net/http" | ||
"sync" | ||
"time" | ||
) | ||
|
||
var ( | ||
mutex sync.Mutex | ||
data = make(map[*http.Request]map[interface{}]interface{}) | ||
datat = make(map[*http.Request]int64) | ||
) | ||
|
||
// Set stores a value for a given key in a given request. | ||
func Set(r *http.Request, key, val interface{}) { | ||
mutex.Lock() | ||
defer mutex.Unlock() | ||
if data[r] == nil { | ||
data[r] = make(map[interface{}]interface{}) | ||
datat[r] = time.Now().Unix() | ||
} | ||
data[r][key] = val | ||
} | ||
|
||
// Get returns a value stored for a given key in a given request. | ||
func Get(r *http.Request, key interface{}) interface{} { | ||
mutex.Lock() | ||
defer mutex.Unlock() | ||
if data[r] != nil { | ||
return data[r][key] | ||
} | ||
return nil | ||
} | ||
|
||
// GetOk returns stored value and presence state like multi-value return of map access. | ||
func GetOk(r *http.Request, key interface{}) (interface{}, bool) { | ||
mutex.Lock() | ||
defer mutex.Unlock() | ||
if _, ok := data[r]; ok { | ||
value, ok := data[r][key] | ||
return value, ok | ||
} | ||
return nil, false | ||
} | ||
|
||
// Delete removes a value stored for a given key in a given request. | ||
func Delete(r *http.Request, key interface{}) { | ||
mutex.Lock() | ||
defer mutex.Unlock() | ||
if data[r] != nil { | ||
delete(data[r], key) | ||
} | ||
} | ||
|
||
// Clear removes all values stored for a given request. | ||
// | ||
// This is usually called by a handler wrapper to clean up request | ||
// variables at the end of a request lifetime. See ClearHandler(). | ||
func Clear(r *http.Request) { | ||
mutex.Lock() | ||
defer mutex.Unlock() | ||
clear(r) | ||
} | ||
|
||
// clear is Clear without the lock. | ||
func clear(r *http.Request) { | ||
delete(data, r) | ||
delete(datat, r) | ||
} | ||
|
||
// Purge removes request data stored for longer than maxAge, in seconds. | ||
// It returns the amount of requests removed. | ||
// | ||
// If maxAge <= 0, all request data is removed. | ||
// | ||
// This is only used for sanity check: in case context cleaning was not | ||
// properly set some request data can be kept forever, consuming an increasing | ||
// amount of memory. In case this is detected, Purge() must be called | ||
// periodically until the problem is fixed. | ||
func Purge(maxAge int) int { | ||
mutex.Lock() | ||
defer mutex.Unlock() | ||
count := 0 | ||
if maxAge <= 0 { | ||
count = len(data) | ||
data = make(map[*http.Request]map[interface{}]interface{}) | ||
datat = make(map[*http.Request]int64) | ||
} else { | ||
min := time.Now().Unix() - int64(maxAge) | ||
for r := range data { | ||
if datat[r] < min { | ||
clear(r) | ||
count++ | ||
} | ||
} | ||
} | ||
return count | ||
} | ||
|
||
// ClearHandler wraps an http.Handler and clears request values at the end | ||
// of a request lifetime. | ||
func ClearHandler(h http.Handler) http.Handler { | ||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { | ||
defer Clear(r) | ||
h.ServeHTTP(w, r) | ||
}) | ||
} |
This file contains 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 characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
// Copyright 2012 The Gorilla Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style | ||
// license that can be found in the LICENSE file. | ||
|
||
package context | ||
|
||
import ( | ||
"net/http" | ||
"testing" | ||
) | ||
|
||
type keyType int | ||
|
||
const ( | ||
key1 keyType = iota | ||
key2 | ||
) | ||
|
||
func TestContext(t *testing.T) { | ||
assertEqual := func(val interface{}, exp interface{}) { | ||
if val != exp { | ||
t.Errorf("Expected %v, got %v.", exp, val) | ||
} | ||
} | ||
|
||
r, _ := http.NewRequest("GET", "http://localhost:8080/", nil) | ||
|
||
// Get() | ||
assertEqual(Get(r, key1), nil) | ||
|
||
// Set() | ||
Set(r, key1, "1") | ||
assertEqual(Get(r, key1), "1") | ||
assertEqual(len(data[r]), 1) | ||
|
||
Set(r, key2, "2") | ||
assertEqual(Get(r, key2), "2") | ||
assertEqual(len(data[r]), 2) | ||
|
||
//GetOk | ||
value, ok := GetOk(r, key1) | ||
assertEqual(value, "1") | ||
assertEqual(ok, true) | ||
|
||
value, ok = GetOk(r, "not exists") | ||
assertEqual(value, nil) | ||
assertEqual(ok, false) | ||
|
||
Set(r, "nil value", nil) | ||
value, ok = GetOk(r, "nil value") | ||
assertEqual(value, nil) | ||
assertEqual(ok, true) | ||
|
||
// Delete() | ||
Delete(r, key1) | ||
assertEqual(Get(r, key1), nil) | ||
assertEqual(len(data[r]), 2) | ||
|
||
Delete(r, key2) | ||
assertEqual(Get(r, key2), nil) | ||
assertEqual(len(data[r]), 1) | ||
|
||
// Clear() | ||
Clear(r) | ||
assertEqual(len(data), 0) | ||
} |
Oops, something went wrong.