forked from TrueCloudLab/distribution
Mocked registry: Added X-Docker-Size when fetching the layer
This commit is contained in:
parent
3ca4529fbe
commit
34fc4b8407
1 changed files with 19 additions and 6 deletions
|
@ -6,9 +6,11 @@ import (
|
|||
"github.com/gorilla/mux"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
@ -88,7 +90,15 @@ func init() {
|
|||
r.HandleFunc("/v1/repositories/{repository:.+}{action:/images|/}", handlerImages).Methods("GET", "PUT", "DELETE")
|
||||
r.HandleFunc("/v1/repositories/{repository:.+}/auth", handlerAuth).Methods("PUT")
|
||||
r.HandleFunc("/v1/search", handlerSearch).Methods("GET")
|
||||
testHttpServer = httptest.NewServer(r)
|
||||
testHttpServer = httptest.NewServer(handlerAccessLog(r))
|
||||
}
|
||||
|
||||
func handlerAccessLog(handler http.Handler) http.Handler {
|
||||
logHandler := func(w http.ResponseWriter, r *http.Request) {
|
||||
log.Printf("%s \"%s %s\"", r.RemoteAddr, r.Method, r.URL)
|
||||
handler.ServeHTTP(w, r)
|
||||
}
|
||||
return http.HandlerFunc(logHandler)
|
||||
}
|
||||
|
||||
func makeURL(req string) string {
|
||||
|
@ -104,8 +114,6 @@ func writeHeaders(w http.ResponseWriter) {
|
|||
h.Add("Cache-Control", "no-cache")
|
||||
h.Add("X-Docker-Registry-Version", "0.0.0")
|
||||
h.Add("X-Docker-Registry-Config", "mock")
|
||||
u, _ := url.Parse(testHttpServer.URL)
|
||||
h.Add("X-Docker-Endpoints", u.Host)
|
||||
}
|
||||
|
||||
func writeResponse(w http.ResponseWriter, message interface{}, code int) {
|
||||
|
@ -181,6 +189,8 @@ func handlerGetImage(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
writeHeaders(w)
|
||||
layer_size := len(layer["layer"])
|
||||
w.Header().Add("X-Docker-Size", strconv.Itoa(layer_size))
|
||||
io.WriteString(w, layer[vars["action"]])
|
||||
}
|
||||
|
||||
|
@ -279,6 +289,8 @@ func handlerUsers(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
func handlerImages(w http.ResponseWriter, r *http.Request) {
|
||||
u, _ := url.Parse(testHttpServer.URL)
|
||||
w.Header().Add("X-Docker-Endpoints", u.Host)
|
||||
if r.Method == "PUT" {
|
||||
writeResponse(w, "", 200)
|
||||
return
|
||||
|
@ -292,6 +304,7 @@ func handlerImages(w http.ResponseWriter, r *http.Request) {
|
|||
image := make(map[string]string)
|
||||
image["id"] = image_id
|
||||
image["checksum"] = layer["checksum_tarsum"]
|
||||
image["Tag"] = "latest"
|
||||
images = append(images, image)
|
||||
}
|
||||
writeResponse(w, images, 200)
|
||||
|
@ -317,11 +330,11 @@ func TestPing(t *testing.T) {
|
|||
|
||||
/* Uncomment this to test Mocked Registry locally with curl
|
||||
* WARNING: Don't push on the repos uncommented, it'll block the tests
|
||||
*
|
||||
*/
|
||||
func TestWait(t *testing.T) {
|
||||
fmt.Println("Test HTTP server ready and waiting...")
|
||||
fmt.Println(testHttpServer.URL)
|
||||
log.Println("Test HTTP server ready and waiting:", testHttpServer.URL)
|
||||
c := make(chan int)
|
||||
<-c
|
||||
}
|
||||
|
||||
//*/
|
||||
|
|
Loading…
Reference in a new issue