Mocked registry: Added X-Docker-Size when fetching the layer
							parent
							
								
									3ca4529fbe
								
							
						
					
					
						commit
						34fc4b8407
					
				| 
						 | 
				
			
			@ -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 New Issue