Move context package internal

Our context package predates the establishment of current best practices
regarding context usage and it shows. It encourages bad practices such
as using contexts to propagate non-request-scoped values like the
application version and using string-typed keys for context values. Move
the package internal to remove it from the API surface of
distribution/v3@v3.0.0 so we are free to iterate on it without being
constrained by compatibility.

Signed-off-by: Cory Snider <csnider@mirantis.com>
This commit is contained in:
Cory Snider 2023-10-24 13:16:58 -04:00
parent 6c694cbcf6
commit d0f5aa670b
61 changed files with 151 additions and 151 deletions

View file

@ -7,7 +7,7 @@ import (
"sync" "sync"
"time" "time"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/api/errcode" "github.com/distribution/distribution/v3/registry/api/errcode"
) )
@ -279,7 +279,7 @@ func Handler(handler http.Handler) http.Handler {
func statusResponse(w http.ResponseWriter, r *http.Request, status int, checks map[string]string) { func statusResponse(w http.ResponseWriter, r *http.Request, status int, checks map[string]string) {
p, err := json.Marshal(checks) p, err := json.Marshal(checks)
if err != nil { if err != nil {
context.GetLogger(context.Background()).Errorf("error serializing health status: %v", err) dcontext.GetLogger(dcontext.Background()).Errorf("error serializing health status: %v", err)
p, err = json.Marshal(struct { p, err = json.Marshal(struct {
ServerError string `json:"server_error"` ServerError string `json:"server_error"`
}{ }{
@ -288,7 +288,7 @@ func statusResponse(w http.ResponseWriter, r *http.Request, status int, checks m
status = http.StatusInternalServerError status = http.StatusInternalServerError
if err != nil { if err != nil {
context.GetLogger(context.Background()).Errorf("error serializing health status failure message: %v", err) dcontext.GetLogger(dcontext.Background()).Errorf("error serializing health status failure message: %v", err)
return return
} }
} }
@ -297,7 +297,7 @@ func statusResponse(w http.ResponseWriter, r *http.Request, status int, checks m
w.Header().Set("Content-Length", fmt.Sprint(len(p))) w.Header().Set("Content-Length", fmt.Sprint(len(p)))
w.WriteHeader(status) w.WriteHeader(status)
if _, err := w.Write(p); err != nil { if _, err := w.Write(p); err != nil {
context.GetLogger(context.Background()).Errorf("error writing health status response body: %v", err) dcontext.GetLogger(dcontext.Background()).Errorf("error writing health status response body: %v", err)
} }
} }

View file

@ -17,7 +17,7 @@ import (
"time" "time"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/manifest" "github.com/distribution/distribution/v3/manifest"
"github.com/distribution/distribution/v3/manifest/ocischema" "github.com/distribution/distribution/v3/manifest/ocischema"
"github.com/distribution/distribution/v3/registry/api/errcode" "github.com/distribution/distribution/v3/registry/api/errcode"
@ -108,7 +108,7 @@ func TestBlobServeBlob(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
repo, _ := reference.WithName("test.example.com/repo1") repo, _ := reference.WithName("test.example.com/repo1")
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
@ -157,7 +157,7 @@ func TestBlobServeBlobHEAD(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
repo, _ := reference.WithName("test.example.com/repo1") repo, _ := reference.WithName("test.example.com/repo1")
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
@ -250,7 +250,7 @@ func TestBlobResume(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -307,7 +307,7 @@ func TestBlobDelete(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -327,7 +327,7 @@ func TestBlobFetch(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
repo, _ := reference.WithName("test.example.com/repo1") repo, _ := reference.WithName("test.example.com/repo1")
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
@ -382,7 +382,7 @@ func TestBlobExistsNoContentLength(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -406,7 +406,7 @@ func TestBlobExists(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
repo, _ := reference.WithName("test.example.com/repo1") repo, _ := reference.WithName("test.example.com/repo1")
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
@ -512,7 +512,7 @@ func TestBlobUploadChunked(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -622,7 +622,7 @@ func TestBlobUploadMonolithic(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -728,7 +728,7 @@ func TestBlobUploadMonolithicDockerUploadUUIDFromURL(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -833,7 +833,7 @@ func TestBlobUploadMonolithicNoDockerUploadUUID(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -891,7 +891,7 @@ func TestBlobMount(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -1066,7 +1066,7 @@ func checkEqualManifest(m1, m2 *ocischema.DeserializedManifest) error {
} }
func TestOCIManifestFetch(t *testing.T) { func TestOCIManifestFetch(t *testing.T) {
ctx := context.Background() ctx := dcontext.Background()
repo, _ := reference.WithName("test.example.com/repo") repo, _ := reference.WithName("test.example.com/repo")
m1, dgst, pl := newRandomOCIManifest(t, 6) m1, dgst, pl := newRandomOCIManifest(t, 6)
var m testutil.RequestResponseMap var m testutil.RequestResponseMap
@ -1149,7 +1149,7 @@ func TestManifestFetchWithEtag(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -1171,7 +1171,7 @@ func TestManifestFetchWithEtag(t *testing.T) {
} }
func TestManifestFetchWithAccept(t *testing.T) { func TestManifestFetchWithAccept(t *testing.T) {
ctx := context.Background() ctx := dcontext.Background()
repo, _ := reference.WithName("test.example.com/repo") repo, _ := reference.WithName("test.example.com/repo")
_, dgst, _ := newRandomOCIManifest(t, 6) _, dgst, _ := newRandomOCIManifest(t, 6)
headers := make(chan []string, 1) headers := make(chan []string, 1)
@ -1258,7 +1258,7 @@ func TestManifestDelete(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
ctx := context.Background() ctx := dcontext.Background()
ms, err := r.Manifests(ctx) ms, err := r.Manifests(ctx)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -1315,7 +1315,7 @@ func TestManifestPut(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
ctx := context.Background() ctx := dcontext.Background()
ms, err := r.Manifests(ctx) ms, err := r.Manifests(ctx)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -1372,7 +1372,7 @@ func TestManifestTags(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
ctx := context.Background() ctx := dcontext.Background()
tagService := r.Tags(ctx) tagService := r.Tags(ctx)
tags, err := tagService.All(ctx) tags, err := tagService.All(ctx)
@ -1423,7 +1423,7 @@ func TestTagDelete(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
ctx := context.Background() ctx := dcontext.Background()
ts := r.Tags(ctx) ts := r.Tags(ctx)
if err := ts.Untag(ctx, tag); err != nil { if err := ts.Untag(ctx, tag); err != nil {
@ -1460,7 +1460,7 @@ func TestObtainsErrorForMissingTag(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -1487,7 +1487,7 @@ func TestObtainsManifestForTagWithoutHeaders(t *testing.T) {
e, c := testServer(m) e, c := testServer(m)
defer c() defer c()
ctx := context.Background() ctx := dcontext.Background()
r, err := NewRepository(repo, e, nil) r, err := NewRepository(repo, e, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -1566,7 +1566,7 @@ func TestManifestTagsPaginated(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
ctx := context.Background() ctx := dcontext.Background()
tagService := r.Tags(ctx) tagService := r.Tags(ctx)
tags, err := tagService.All(ctx) tags, err := tagService.All(ctx)
@ -1614,7 +1614,7 @@ func TestManifestUnauthorized(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
ctx := context.Background() ctx := dcontext.Background()
ms, err := r.Manifests(ctx) ms, err := r.Manifests(ctx)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -1652,7 +1652,7 @@ func TestCatalog(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
ctx := context.Background() ctx := dcontext.Background()
numFilled, err := r.Repositories(ctx, entries, "") numFilled, err := r.Repositories(ctx, entries, "")
if err != io.EOF { if err != io.EOF {
t.Fatal(err) t.Fatal(err)
@ -1684,7 +1684,7 @@ func TestCatalogInParts(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
ctx := context.Background() ctx := dcontext.Background()
numFilled, err := r.Repositories(ctx, entries, "") numFilled, err := r.Repositories(ctx, entries, "")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)

View file

@ -1,4 +1,4 @@
package context package dcontext
import ( import (
"context" "context"

View file

@ -1,16 +1,16 @@
// Package context provides several utilities for working with // Package dcontext provides several utilities for working with
// Go's context in http requests. Primarily, the focus is on logging relevant // Go's context in http requests. Primarily, the focus is on logging relevant
// request information but this package is not limited to that purpose. // request information but this package is not limited to that purpose.
// //
// The easiest way to get started is to get the background context: // The easiest way to get started is to get the background context:
// //
// ctx := context.Background() // ctx := dcontext.Background()
// //
// The returned context should be passed around your application and be the // The returned context should be passed around your application and be the
// root of all other context instances. If the application has a version, this // root of all other context instances. If the application has a version, this
// line should be called before anything else: // line should be called before anything else:
// //
// ctx := context.WithVersion(context.Background(), version) // ctx := dcontext.WithVersion(dcontext.Background(), version)
// //
// The above will store the version in the context and will be available to // The above will store the version in the context and will be available to
// the logger. // the logger.
@ -27,7 +27,7 @@
// the context and reported with the logger. The following example would // the context and reported with the logger. The following example would
// return a logger that prints the version with each log message: // return a logger that prints the version with each log message:
// //
// ctx := context.Context(context.Background(), "version", version) // ctx := context.WithValue(dcontext.Background(), "version", version)
// GetLogger(ctx, "version").Infof("this log message has a version field") // GetLogger(ctx, "version").Infof("this log message has a version field")
// //
// The above would print out a log message like this: // The above would print out a log message like this:
@ -85,4 +85,4 @@
// can be traced in log messages. Using the fields like "http.request.id", one // can be traced in log messages. Using the fields like "http.request.id", one
// can analyze call flow for a particular request with a simple grep of the // can analyze call flow for a particular request with a simple grep of the
// logs. // logs.
package context package dcontext

View file

@ -1,4 +1,4 @@
package context package dcontext
import ( import (
"context" "context"

View file

@ -1,4 +1,4 @@
package context package dcontext
import ( import (
"net/http" "net/http"

View file

@ -1,4 +1,4 @@
package context package dcontext
import ( import (
"context" "context"

View file

@ -1,4 +1,4 @@
package context package dcontext
import ( import (
"context" "context"

View file

@ -1,4 +1,4 @@
package context package dcontext
import ( import (
"runtime" "runtime"

View file

@ -1,4 +1,4 @@
package context package dcontext
import ( import (
"context" "context"

View file

@ -1,4 +1,4 @@
package context package dcontext
import "context" import "context"

View file

@ -1,4 +1,4 @@
package context package dcontext
import "testing" import "testing"

View file

@ -5,7 +5,7 @@ import (
"time" "time"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/reference" "github.com/distribution/reference"
events "github.com/docker/go-events" events "github.com/docker/go-events"
"github.com/google/uuid" "github.com/google/uuid"
@ -49,7 +49,7 @@ func NewBridge(ub URLBuilder, source SourceRecord, actor ActorRecord, request Re
func NewRequestRecord(id string, r *http.Request) RequestRecord { func NewRequestRecord(id string, r *http.Request) RequestRecord {
return RequestRecord{ return RequestRecord{
ID: id, ID: id,
Addr: context.RemoteAddr(r), Addr: dcontext.RemoteAddr(r),
Host: r.Host, Host: r.Host,
Method: r.Method, Method: r.Method,
UserAgent: r.UserAgent(), UserAgent: r.UserAgent(),

View file

@ -7,7 +7,7 @@ import (
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/reference" "github.com/distribution/reference"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
) )

View file

@ -6,7 +6,7 @@ import (
"testing" "testing"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/manifest/schema2" "github.com/distribution/distribution/v3/manifest/schema2"
"github.com/distribution/distribution/v3/registry/storage" "github.com/distribution/distribution/v3/registry/storage"
"github.com/distribution/distribution/v3/registry/storage/cache/memory" "github.com/distribution/distribution/v3/registry/storage/cache/memory"

View file

@ -18,7 +18,7 @@ import (
"golang.org/x/crypto/bcrypt" "golang.org/x/crypto/bcrypt"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/auth" "github.com/distribution/distribution/v3/registry/auth"
) )

View file

@ -8,7 +8,7 @@ import (
"os" "os"
"testing" "testing"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/auth" "github.com/distribution/distribution/v3/registry/auth"
) )
@ -33,7 +33,7 @@ func TestBasicAccessController(t *testing.T) {
"realm": testRealm, "realm": testRealm,
"path": tempFile.Name(), "path": tempFile.Name(),
} }
ctx := context.Background() ctx := dcontext.Background()
accessController, err := newAccessController(options) accessController, err := newAccessController(options)
if err != nil { if err != nil {
@ -45,7 +45,7 @@ func TestBasicAccessController(t *testing.T) {
userNumber := 0 userNumber := 0
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
ctx := context.WithRequest(ctx, r) ctx := dcontext.WithRequest(ctx, r)
authCtx, err := accessController.Authorized(ctx) authCtx, err := accessController.Authorized(ctx)
if err != nil { if err != nil {
switch err := err.(type) { switch err := err.(type) {

View file

@ -13,7 +13,7 @@ import (
"net/http" "net/http"
"strings" "strings"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/auth" "github.com/distribution/distribution/v3/registry/auth"
) )

View file

@ -5,7 +5,7 @@ import (
"net/http/httptest" "net/http/httptest"
"testing" "testing"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/auth" "github.com/distribution/distribution/v3/registry/auth"
) )
@ -16,7 +16,7 @@ func TestSillyAccessController(t *testing.T) {
} }
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
ctx := context.WithRequest(context.Background(), r) ctx := dcontext.WithRequest(dcontext.Background(), r)
authCtx, err := ac.Authorized(ctx) authCtx, err := ac.Authorized(ctx)
if err != nil { if err != nil {
switch err := err.(type) { switch err := err.(type) {

View file

@ -13,7 +13,7 @@ import (
"os" "os"
"strings" "strings"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/auth" "github.com/distribution/distribution/v3/registry/auth"
"github.com/go-jose/go-jose/v3" "github.com/go-jose/go-jose/v3"
) )

View file

@ -18,7 +18,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/auth" "github.com/distribution/distribution/v3/registry/auth"
"github.com/go-jose/go-jose/v3" "github.com/go-jose/go-jose/v3"
"github.com/go-jose/go-jose/v3/jwt" "github.com/go-jose/go-jose/v3/jwt"
@ -466,7 +466,7 @@ func TestAccessController(t *testing.T) {
Action: "baz", Action: "baz",
} }
ctx := context.WithRequest(context.Background(), req) ctx := dcontext.WithRequest(dcontext.Background(), req)
authCtx, err := accessController.Authorized(ctx, testAccess) authCtx, err := accessController.Authorized(ctx, testAccess)
challenge, ok := err.(auth.Challenge) challenge, ok := err.(auth.Challenge)
if !ok { if !ok {

View file

@ -19,9 +19,9 @@ import (
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
"github.com/distribution/distribution/v3/configuration" "github.com/distribution/distribution/v3/configuration"
dcontext "github.com/distribution/distribution/v3/context"
"github.com/distribution/distribution/v3/health" "github.com/distribution/distribution/v3/health"
"github.com/distribution/distribution/v3/health/checks" "github.com/distribution/distribution/v3/health/checks"
"github.com/distribution/distribution/v3/internal/dcontext"
prometheus "github.com/distribution/distribution/v3/metrics" prometheus "github.com/distribution/distribution/v3/metrics"
"github.com/distribution/distribution/v3/notifications" "github.com/distribution/distribution/v3/notifications"
"github.com/distribution/distribution/v3/registry/api/errcode" "github.com/distribution/distribution/v3/registry/api/errcode"

View file

@ -9,7 +9,7 @@ import (
"testing" "testing"
"github.com/distribution/distribution/v3/configuration" "github.com/distribution/distribution/v3/configuration"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/api/errcode" "github.com/distribution/distribution/v3/registry/api/errcode"
v2 "github.com/distribution/distribution/v3/registry/api/v2" v2 "github.com/distribution/distribution/v3/registry/api/v2"
"github.com/distribution/distribution/v3/registry/auth" "github.com/distribution/distribution/v3/registry/auth"
@ -25,7 +25,7 @@ import (
// tested individually. // tested individually.
func TestAppDispatcher(t *testing.T) { func TestAppDispatcher(t *testing.T) {
driver := inmemory.New() driver := inmemory.New()
ctx := context.Background() ctx := dcontext.Background()
registry, err := storage.NewRegistry(ctx, driver, storage.BlobDescriptorCacheProvider(memorycache.NewInMemoryBlobDescriptorCacheProvider(0)), storage.EnableDelete, storage.EnableRedirect) registry, err := storage.NewRegistry(ctx, driver, storage.BlobDescriptorCacheProvider(memorycache.NewInMemoryBlobDescriptorCacheProvider(0)), storage.EnableDelete, storage.EnableRedirect)
if err != nil { if err != nil {
t.Fatalf("error creating registry: %v", err) t.Fatalf("error creating registry: %v", err)
@ -139,7 +139,7 @@ func TestAppDispatcher(t *testing.T) {
// TestNewApp covers the creation of an application via NewApp with a // TestNewApp covers the creation of an application via NewApp with a
// configuration. // configuration.
func TestNewApp(t *testing.T) { func TestNewApp(t *testing.T) {
ctx := context.Background() ctx := dcontext.Background()
config := configuration.Configuration{ config := configuration.Configuration{
Storage: configuration.Storage{ Storage: configuration.Storage{
"inmemory": nil, "inmemory": nil,

View file

@ -4,7 +4,7 @@ import (
"net/http" "net/http"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/api/errcode" "github.com/distribution/distribution/v3/registry/api/errcode"
"github.com/gorilla/handlers" "github.com/gorilla/handlers"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
@ -53,7 +53,7 @@ type blobHandler struct {
// GetBlob fetches the binary data from backend storage returns it in the // GetBlob fetches the binary data from backend storage returns it in the
// response. // response.
func (bh *blobHandler) GetBlob(w http.ResponseWriter, r *http.Request) { func (bh *blobHandler) GetBlob(w http.ResponseWriter, r *http.Request) {
context.GetLogger(bh).Debug("GetBlob") dcontext.GetLogger(bh).Debug("GetBlob")
blobs := bh.Repository.Blobs(bh) blobs := bh.Repository.Blobs(bh)
desc, err := blobs.Stat(bh, bh.Digest) desc, err := blobs.Stat(bh, bh.Digest)
if err != nil { if err != nil {
@ -66,7 +66,7 @@ func (bh *blobHandler) GetBlob(w http.ResponseWriter, r *http.Request) {
} }
if err := blobs.ServeBlob(bh, w, r, desc.Digest); err != nil { if err := blobs.ServeBlob(bh, w, r, desc.Digest); err != nil {
context.GetLogger(bh).Debugf("unexpected error getting blob HTTP handler: %v", err) dcontext.GetLogger(bh).Debugf("unexpected error getting blob HTTP handler: %v", err)
bh.Errors = append(bh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) bh.Errors = append(bh.Errors, errcode.ErrorCodeUnknown.WithDetail(err))
return return
} }
@ -74,7 +74,7 @@ func (bh *blobHandler) GetBlob(w http.ResponseWriter, r *http.Request) {
// DeleteBlob deletes a layer blob // DeleteBlob deletes a layer blob
func (bh *blobHandler) DeleteBlob(w http.ResponseWriter, r *http.Request) { func (bh *blobHandler) DeleteBlob(w http.ResponseWriter, r *http.Request) {
context.GetLogger(bh).Debug("DeleteBlob") dcontext.GetLogger(bh).Debug("DeleteBlob")
blobs := bh.Repository.Blobs(bh) blobs := bh.Repository.Blobs(bh)
err := blobs.Delete(bh, bh.Digest) err := blobs.Delete(bh, bh.Digest)
@ -88,7 +88,7 @@ func (bh *blobHandler) DeleteBlob(w http.ResponseWriter, r *http.Request) {
return return
default: default:
bh.Errors = append(bh.Errors, err) bh.Errors = append(bh.Errors, err)
context.GetLogger(bh).Errorf("Unknown error deleting blob: %s", err.Error()) dcontext.GetLogger(bh).Errorf("Unknown error deleting blob: %s", err.Error())
return return
} }
} }

View file

@ -7,7 +7,7 @@ import (
"strconv" "strconv"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/api/errcode" "github.com/distribution/distribution/v3/registry/api/errcode"
"github.com/distribution/distribution/v3/registry/storage" "github.com/distribution/distribution/v3/registry/storage"
"github.com/distribution/reference" "github.com/distribution/reference"

View file

@ -6,7 +6,7 @@ import (
"net/http" "net/http"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/api/errcode" "github.com/distribution/distribution/v3/registry/api/errcode"
v2 "github.com/distribution/distribution/v3/registry/api/v2" v2 "github.com/distribution/distribution/v3/registry/api/v2"
"github.com/distribution/distribution/v3/registry/auth" "github.com/distribution/distribution/v3/registry/auth"

View file

@ -9,8 +9,8 @@ import (
"time" "time"
"github.com/distribution/distribution/v3/configuration" "github.com/distribution/distribution/v3/configuration"
"github.com/distribution/distribution/v3/context"
"github.com/distribution/distribution/v3/health" "github.com/distribution/distribution/v3/health"
"github.com/distribution/distribution/v3/internal/dcontext"
) )
func TestFileHealthCheck(t *testing.T) { func TestFileHealthCheck(t *testing.T) {
@ -39,7 +39,7 @@ func TestFileHealthCheck(t *testing.T) {
}, },
} }
ctx := context.Background() ctx := dcontext.Background()
app := NewApp(ctx, config) app := NewApp(ctx, config)
healthRegistry := health.NewRegistry() healthRegistry := health.NewRegistry()
@ -103,7 +103,7 @@ func TestTCPHealthCheck(t *testing.T) {
}, },
} }
ctx := context.Background() ctx := dcontext.Background()
app := NewApp(ctx, config) app := NewApp(ctx, config)
healthRegistry := health.NewRegistry() healthRegistry := health.NewRegistry()
@ -165,7 +165,7 @@ func TestHTTPHealthCheck(t *testing.T) {
}, },
} }
ctx := context.Background() ctx := dcontext.Background()
app := NewApp(ctx, config) app := NewApp(ctx, config)
healthRegistry := health.NewRegistry() healthRegistry := health.NewRegistry()

View file

@ -9,7 +9,7 @@ import (
"strconv" "strconv"
"strings" "strings"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
) )
// closeResources closes all the provided resources after running the target // closeResources closes all the provided resources after running the target

View file

@ -8,7 +8,7 @@ import (
"strings" "strings"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/manifest/manifestlist" "github.com/distribution/distribution/v3/manifest/manifestlist"
"github.com/distribution/distribution/v3/manifest/ocischema" "github.com/distribution/distribution/v3/manifest/ocischema"
"github.com/distribution/distribution/v3/manifest/schema2" "github.com/distribution/distribution/v3/manifest/schema2"

View file

@ -5,9 +5,9 @@ import (
"net/url" "net/url"
"strings" "strings"
"github.com/distribution/distribution/v3/context"
"github.com/distribution/distribution/v3/internal/client/auth" "github.com/distribution/distribution/v3/internal/client/auth"
"github.com/distribution/distribution/v3/internal/client/auth/challenge" "github.com/distribution/distribution/v3/internal/client/auth/challenge"
"github.com/distribution/distribution/v3/internal/dcontext"
) )
const challengeHeader = "Docker-Distribution-Api-Version" const challengeHeader = "Docker-Distribution-Api-Version"
@ -44,7 +44,7 @@ func configureAuth(username, password, remoteURL string) (auth.CredentialStore,
} }
for _, url := range authURLs { for _, url := range authURLs {
context.GetLogger(context.Background()).Infof("Discovered token authentication URL: %s", url) dcontext.GetLogger(dcontext.Background()).Infof("Discovered token authentication URL: %s", url)
creds[url] = userpass{ creds[url] = userpass{
username: username, username: username,
password: password, password: password,

View file

@ -11,7 +11,7 @@ import (
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/proxy/scheduler" "github.com/distribution/distribution/v3/registry/proxy/scheduler"
"github.com/distribution/reference" "github.com/distribution/reference"
) )

View file

@ -7,7 +7,7 @@ import (
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/proxy/scheduler" "github.com/distribution/distribution/v3/registry/proxy/scheduler"
"github.com/distribution/reference" "github.com/distribution/reference"
) )

View file

@ -10,11 +10,11 @@ import (
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
"github.com/distribution/distribution/v3/configuration" "github.com/distribution/distribution/v3/configuration"
dcontext "github.com/distribution/distribution/v3/context"
"github.com/distribution/distribution/v3/internal/client" "github.com/distribution/distribution/v3/internal/client"
"github.com/distribution/distribution/v3/internal/client/auth" "github.com/distribution/distribution/v3/internal/client/auth"
"github.com/distribution/distribution/v3/internal/client/auth/challenge" "github.com/distribution/distribution/v3/internal/client/auth/challenge"
"github.com/distribution/distribution/v3/internal/client/transport" "github.com/distribution/distribution/v3/internal/client/transport"
"github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/proxy/scheduler" "github.com/distribution/distribution/v3/registry/proxy/scheduler"
"github.com/distribution/distribution/v3/registry/storage" "github.com/distribution/distribution/v3/registry/storage"
"github.com/distribution/distribution/v3/registry/storage/driver" "github.com/distribution/distribution/v3/registry/storage/driver"

View file

@ -7,7 +7,7 @@ import (
"sync" "sync"
"time" "time"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/storage/driver" "github.com/distribution/distribution/v3/registry/storage/driver"
"github.com/distribution/reference" "github.com/distribution/reference"
) )

View file

@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/storage/driver/inmemory" "github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
"github.com/distribution/reference" "github.com/distribution/reference"
) )
@ -40,7 +40,7 @@ func TestSchedule(t *testing.T) {
} }
var mu sync.Mutex var mu sync.Mutex
s := New(context.Background(), inmemory.New(), "/ttl") s := New(dcontext.Background(), inmemory.New(), "/ttl")
deleteFunc := func(repoName reference.Reference) error { deleteFunc := func(repoName reference.Reference) error {
if len(remainingRepos) == 0 { if len(remainingRepos) == 0 {
t.Fatalf("Incorrect expiry count") t.Fatalf("Incorrect expiry count")
@ -123,14 +123,14 @@ func TestRestoreOld(t *testing.T) {
t.Fatalf("Error serializing test data: %s", err.Error()) t.Fatalf("Error serializing test data: %s", err.Error())
} }
ctx := context.Background() ctx := dcontext.Background()
pathToStatFile := "/ttl" pathToStatFile := "/ttl"
fs := inmemory.New() fs := inmemory.New()
err = fs.PutContent(ctx, pathToStatFile, serialized) err = fs.PutContent(ctx, pathToStatFile, serialized)
if err != nil { if err != nil {
t.Fatal("Unable to write serialized data to fs") t.Fatal("Unable to write serialized data to fs")
} }
s := New(context.Background(), fs, "/ttl") s := New(dcontext.Background(), fs, "/ttl")
s.OnBlobExpire(deleteFunc) s.OnBlobExpire(deleteFunc)
err = s.Start() err = s.Start()
if err != nil { if err != nil {
@ -165,7 +165,7 @@ func TestStopRestore(t *testing.T) {
fs := inmemory.New() fs := inmemory.New()
pathToStateFile := "/ttl" pathToStateFile := "/ttl"
s := New(context.Background(), fs, pathToStateFile) s := New(dcontext.Background(), fs, pathToStateFile)
s.onBlobExpire = deleteFunc s.onBlobExpire = deleteFunc
err := s.Start() err := s.Start()
@ -181,7 +181,7 @@ func TestStopRestore(t *testing.T) {
time.Sleep(10 * time.Millisecond) time.Sleep(10 * time.Millisecond)
// v2 will restore state from fs // v2 will restore state from fs
s2 := New(context.Background(), fs, pathToStateFile) s2 := New(dcontext.Background(), fs, pathToStateFile)
s2.onBlobExpire = deleteFunc s2.onBlobExpire = deleteFunc
err = s2.Start() err = s2.Start()
if err != nil { if err != nil {
@ -197,7 +197,7 @@ func TestStopRestore(t *testing.T) {
} }
func TestDoubleStart(t *testing.T) { func TestDoubleStart(t *testing.T) {
s := New(context.Background(), inmemory.New(), "/ttl") s := New(dcontext.Background(), inmemory.New(), "/ttl")
err := s.Start() err := s.Start()
if err != nil { if err != nil {
t.Fatalf("Unable to start scheduler") t.Fatalf("Unable to start scheduler")

View file

@ -21,8 +21,8 @@ import (
"golang.org/x/crypto/acme/autocert" "golang.org/x/crypto/acme/autocert"
"github.com/distribution/distribution/v3/configuration" "github.com/distribution/distribution/v3/configuration"
dcontext "github.com/distribution/distribution/v3/context"
"github.com/distribution/distribution/v3/health" "github.com/distribution/distribution/v3/health"
"github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/handlers" "github.com/distribution/distribution/v3/registry/handlers"
"github.com/distribution/distribution/v3/registry/listener" "github.com/distribution/distribution/v3/registry/listener"
"github.com/distribution/distribution/v3/version" "github.com/distribution/distribution/v3/version"

View file

@ -25,7 +25,7 @@ import (
"time" "time"
"github.com/distribution/distribution/v3/configuration" "github.com/distribution/distribution/v3/configuration"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
_ "github.com/distribution/distribution/v3/registry/storage/driver/inmemory" _ "github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"gopkg.in/yaml.v2" "gopkg.in/yaml.v2"

View file

@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"os" "os"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/storage" "github.com/distribution/distribution/v3/registry/storage"
"github.com/distribution/distribution/v3/registry/storage/driver/factory" "github.com/distribution/distribution/v3/registry/storage/driver/factory"
"github.com/distribution/distribution/v3/version" "github.com/distribution/distribution/v3/version"

View file

@ -6,7 +6,7 @@ import (
"path" "path"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/storage/driver" "github.com/distribution/distribution/v3/registry/storage/driver"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
) )

View file

@ -9,7 +9,7 @@ import (
"time" "time"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
storagedriver "github.com/distribution/distribution/v3/registry/storage/driver" storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"

View file

@ -4,7 +4,7 @@
package storage package storage
import ( import (
"github.com/distribution/distribution/v3/context" "context"
) )
// resumeHashAt is a noop when resumable digest support is disabled. // resumeHashAt is a noop when resumable digest support is disabled.

View file

@ -4,7 +4,7 @@ import (
"context" "context"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
prometheus "github.com/distribution/distribution/v3/metrics" prometheus "github.com/distribution/distribution/v3/metrics"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
) )

View file

@ -42,7 +42,7 @@ import (
"io" "io"
"time" "time"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
prometheus "github.com/distribution/distribution/v3/metrics" prometheus "github.com/distribution/distribution/v3/metrics"
storagedriver "github.com/distribution/distribution/v3/registry/storage/driver" storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
"github.com/docker/go-metrics" "github.com/docker/go-metrics"

View file

@ -10,7 +10,7 @@ import (
"testing" "testing"
"cloud.google.com/go/storage" "cloud.google.com/go/storage"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
storagedriver "github.com/distribution/distribution/v3/registry/storage/driver" storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
"github.com/distribution/distribution/v3/registry/storage/driver/testsuites" "github.com/distribution/distribution/v3/registry/storage/driver/testsuites"
"golang.org/x/oauth2" "golang.org/x/oauth2"

View file

@ -13,7 +13,7 @@ import (
"time" "time"
"github.com/aws/aws-sdk-go/service/cloudfront/sign" "github.com/aws/aws-sdk-go/service/cloudfront/sign"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
storagedriver "github.com/distribution/distribution/v3/registry/storage/driver" storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
storagemiddleware "github.com/distribution/distribution/v3/registry/storage/driver/middleware" storagemiddleware "github.com/distribution/distribution/v3/registry/storage/driver/middleware"
) )

View file

@ -11,7 +11,7 @@ import (
"sync" "sync"
"time" "time"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
) )
const ( const (

View file

@ -12,7 +12,7 @@ import (
"testing" "testing"
"time" "time"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
) )
// Rather than pull in all of testify // Rather than pull in all of testify

View file

@ -36,7 +36,7 @@ import (
"github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3" "github.com/aws/aws-sdk-go/service/s3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
storagedriver "github.com/distribution/distribution/v3/registry/storage/driver" storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
"github.com/distribution/distribution/v3/registry/storage/driver/base" "github.com/distribution/distribution/v3/registry/storage/driver/base"
"github.com/distribution/distribution/v3/registry/storage/driver/factory" "github.com/distribution/distribution/v3/registry/storage/driver/factory"

View file

@ -16,7 +16,7 @@ import (
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/s3" "github.com/aws/aws-sdk-go/service/s3"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
storagedriver "github.com/distribution/distribution/v3/registry/storage/driver" storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
"github.com/distribution/distribution/v3/registry/storage/driver/testsuites" "github.com/distribution/distribution/v3/registry/storage/driver/testsuites"
) )
@ -180,7 +180,7 @@ func TestEmptyRootList(t *testing.T) {
filename := "/test" filename := "/test"
contents := []byte("contents") contents := []byte("contents")
ctx := context.Background() ctx := dcontext.Background()
err = rootedDriver.PutContent(ctx, filename, contents) err = rootedDriver.PutContent(ctx, filename, contents)
if err != nil { if err != nil {
t.Fatalf("unexpected error creating content: %v", err) t.Fatalf("unexpected error creating content: %v", err)
@ -209,7 +209,7 @@ func TestStorageClass(t *testing.T) {
rootDir := t.TempDir() rootDir := t.TempDir()
contents := []byte("contents") contents := []byte("contents")
ctx := context.Background() ctx := dcontext.Background()
// We don't need to test all the storage classes, just that its selectable. // We don't need to test all the storage classes, just that its selectable.
// The first 3 are common to AWS and MinIO, so use those. // The first 3 are common to AWS and MinIO, so use those.
@ -377,7 +377,7 @@ func TestDelete(t *testing.T) {
// init file structure matching objs // init file structure matching objs
var created []string var created []string
for _, p := range objs { for _, p := range objs {
err := drvr.PutContent(context.Background(), p, []byte("content "+p)) err := drvr.PutContent(dcontext.Background(), p, []byte("content "+p))
if err != nil { if err != nil {
fmt.Printf("unable to init file %s: %s\n", p, err) fmt.Printf("unable to init file %s: %s\n", p, err)
continue continue
@ -390,7 +390,7 @@ func TestDelete(t *testing.T) {
cleanup := func(objs []string) { cleanup := func(objs []string) {
var lastErr error var lastErr error
for _, p := range objs { for _, p := range objs {
err := drvr.Delete(context.Background(), p) err := drvr.Delete(dcontext.Background(), p)
if err != nil { if err != nil {
switch err.(type) { switch err.(type) {
case storagedriver.PathNotFoundError: case storagedriver.PathNotFoundError:
@ -409,7 +409,7 @@ func TestDelete(t *testing.T) {
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
objs := init() objs := init()
err := drvr.Delete(context.Background(), tc.delete) err := drvr.Delete(dcontext.Background(), tc.delete)
if tc.err != nil { if tc.err != nil {
if err == nil { if err == nil {
@ -437,7 +437,7 @@ func TestDelete(t *testing.T) {
return false return false
} }
for _, path := range objs { for _, path := range objs {
stat, err := drvr.Stat(context.Background(), path) stat, err := drvr.Stat(dcontext.Background(), path)
if err != nil { if err != nil {
switch err.(type) { switch err.(type) {
case storagedriver.PathNotFoundError: case storagedriver.PathNotFoundError:
@ -491,7 +491,7 @@ func TestWalk(t *testing.T) {
// create file structure matching fileset above // create file structure matching fileset above
created := make([]string, 0, len(fileset)) created := make([]string, 0, len(fileset))
for _, p := range fileset { for _, p := range fileset {
err := drvr.PutContent(context.Background(), p, []byte("content "+p)) err := drvr.PutContent(dcontext.Background(), p, []byte("content "+p))
if err != nil { if err != nil {
fmt.Printf("unable to create file %s: %s\n", p, err) fmt.Printf("unable to create file %s: %s\n", p, err)
continue continue
@ -503,7 +503,7 @@ func TestWalk(t *testing.T) {
defer func() { defer func() {
var lastErr error var lastErr error
for _, p := range created { for _, p := range created {
err := drvr.Delete(context.Background(), p) err := drvr.Delete(dcontext.Background(), p)
if err != nil { if err != nil {
_ = fmt.Errorf("cleanup failed for path %s: %s", p, err) _ = fmt.Errorf("cleanup failed for path %s: %s", p, err)
lastErr = err lastErr = err
@ -692,7 +692,7 @@ func TestWalk(t *testing.T) {
tc.from = "/" tc.from = "/"
} }
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
err := drvr.Walk(context.Background(), tc.from, func(fileInfo storagedriver.FileInfo) error { err := drvr.Walk(dcontext.Background(), tc.from, func(fileInfo storagedriver.FileInfo) error {
walked = append(walked, fileInfo.Path()) walked = append(walked, fileInfo.Path())
return tc.fn(fileInfo) return tc.fn(fileInfo)
}, tc.options...) }, tc.options...)
@ -718,7 +718,7 @@ func TestOverThousandBlobs(t *testing.T) {
t.Fatalf("unexpected error creating driver with standard storage: %v", err) t.Fatalf("unexpected error creating driver with standard storage: %v", err)
} }
ctx := context.Background() ctx := dcontext.Background()
for i := 0; i < 1005; i++ { for i := 0; i < 1005; i++ {
filename := "/thousandfiletest/file" + strconv.Itoa(i) filename := "/thousandfiletest/file" + strconv.Itoa(i)
contents := []byte("contents") contents := []byte("contents")
@ -746,7 +746,7 @@ func TestMoveWithMultipartCopy(t *testing.T) {
t.Fatalf("unexpected error creating driver: %v", err) t.Fatalf("unexpected error creating driver: %v", err)
} }
ctx := context.Background() ctx := dcontext.Background()
sourcePath := "/source" sourcePath := "/source"
destPath := "/dest" destPath := "/dest"
@ -795,7 +795,7 @@ func TestListObjectsV2(t *testing.T) {
t.Fatalf("unexpected error creating driver: %v", err) t.Fatalf("unexpected error creating driver: %v", err)
} }
ctx := context.Background() ctx := dcontext.Background()
n := 6 n := 6
prefix := "/test-list-objects-v2" prefix := "/test-list-objects-v2"
var filePaths []string var filePaths []string

View file

@ -7,13 +7,13 @@ import (
mrand "math/rand" mrand "math/rand"
"testing" "testing"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/storage/driver/inmemory" "github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
) )
func TestSimpleRead(t *testing.T) { func TestSimpleRead(t *testing.T) {
ctx := context.Background() ctx := dcontext.Background()
content := make([]byte, 1<<20) content := make([]byte, 1<<20)
n, err := crand.Read(content) n, err := crand.Read(content)
if err != nil { if err != nil {
@ -55,7 +55,7 @@ func TestFileReaderSeek(t *testing.T) {
repititions := 1024 repititions := 1024
path := "/patterned" path := "/patterned"
content := bytes.Repeat([]byte(pattern), repititions) content := bytes.Repeat([]byte(pattern), repititions)
ctx := context.Background() ctx := dcontext.Background()
if err := driver.PutContent(ctx, path, content); err != nil { if err := driver.PutContent(ctx, path, content); err != nil {
t.Fatalf("error putting patterned content: %v", err) t.Fatalf("error putting patterned content: %v", err)
@ -156,7 +156,7 @@ func TestFileReaderSeek(t *testing.T) {
// read method, with an io.EOF error. // read method, with an io.EOF error.
func TestFileReaderNonExistentFile(t *testing.T) { func TestFileReaderNonExistentFile(t *testing.T) {
driver := inmemory.New() driver := inmemory.New()
fr, err := newFileReader(context.Background(), driver, "/doesnotexist", 10) fr, err := newFileReader(dcontext.Background(), driver, "/doesnotexist", 10)
if err != nil { if err != nil {
t.Fatalf("unexpected error initializing reader: %v", err) t.Fatalf("unexpected error initializing reader: %v", err)
} }

View file

@ -6,7 +6,7 @@ import (
"testing" "testing"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/storage/driver" "github.com/distribution/distribution/v3/registry/storage/driver"
"github.com/distribution/distribution/v3/registry/storage/driver/inmemory" "github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
"github.com/distribution/distribution/v3/testutil" "github.com/distribution/distribution/v3/testutil"
@ -21,7 +21,7 @@ type image struct {
} }
func createRegistry(t *testing.T, driver driver.StorageDriver, options ...RegistryOption) distribution.Namespace { func createRegistry(t *testing.T, driver driver.StorageDriver, options ...RegistryOption) distribution.Namespace {
ctx := context.Background() ctx := dcontext.Background()
options = append(options, EnableDelete) options = append(options, EnableDelete)
registry, err := NewRegistry(ctx, driver, options...) registry, err := NewRegistry(ctx, driver, options...)
if err != nil { if err != nil {
@ -31,7 +31,7 @@ func createRegistry(t *testing.T, driver driver.StorageDriver, options ...Regist
} }
func makeRepository(t *testing.T, registry distribution.Namespace, name string) distribution.Repository { func makeRepository(t *testing.T, registry distribution.Namespace, name string) distribution.Repository {
ctx := context.Background() ctx := dcontext.Background()
// Initialize a dummy repository // Initialize a dummy repository
named, err := reference.WithName(name) named, err := reference.WithName(name)
@ -47,7 +47,7 @@ func makeRepository(t *testing.T, registry distribution.Namespace, name string)
} }
func makeManifestService(t *testing.T, repository distribution.Repository) distribution.ManifestService { func makeManifestService(t *testing.T, repository distribution.Repository) distribution.ManifestService {
ctx := context.Background() ctx := dcontext.Background()
manifestService, err := repository.Manifests(ctx) manifestService, err := repository.Manifests(ctx)
if err != nil { if err != nil {
@ -57,7 +57,7 @@ func makeManifestService(t *testing.T, repository distribution.Repository) distr
} }
func allManifests(t *testing.T, manifestService distribution.ManifestService) map[digest.Digest]struct{} { func allManifests(t *testing.T, manifestService distribution.ManifestService) map[digest.Digest]struct{} {
ctx := context.Background() ctx := dcontext.Background()
allManMap := make(map[digest.Digest]struct{}) allManMap := make(map[digest.Digest]struct{})
manifestEnumerator, ok := manifestService.(distribution.ManifestEnumerator) manifestEnumerator, ok := manifestService.(distribution.ManifestEnumerator)
if !ok { if !ok {
@ -74,7 +74,7 @@ func allManifests(t *testing.T, manifestService distribution.ManifestService) ma
} }
func allBlobs(t *testing.T, registry distribution.Namespace) map[digest.Digest]struct{} { func allBlobs(t *testing.T, registry distribution.Namespace) map[digest.Digest]struct{} {
ctx := context.Background() ctx := dcontext.Background()
blobService := registry.Blobs() blobService := registry.Blobs()
allBlobsMap := make(map[digest.Digest]struct{}) allBlobsMap := make(map[digest.Digest]struct{})
err := blobService.Enumerate(ctx, func(dgst digest.Digest) error { err := blobService.Enumerate(ctx, func(dgst digest.Digest) error {
@ -95,7 +95,7 @@ func uploadImage(t *testing.T, repository distribution.Repository, im image) dig
} }
// upload manifest // upload manifest
ctx := context.Background() ctx := dcontext.Background()
manifestService := makeManifestService(t, repository) manifestService := makeManifestService(t, repository)
manifestDigest, err := manifestService.Put(ctx, im.manifest) manifestDigest, err := manifestService.Put(ctx, im.manifest)
if err != nil { if err != nil {
@ -130,7 +130,7 @@ func uploadRandomSchema2Image(t *testing.T, repository distribution.Repository)
} }
func TestNoDeletionNoEffect(t *testing.T) { func TestNoDeletionNoEffect(t *testing.T) {
ctx := context.Background() ctx := dcontext.Background()
inmemoryDriver := inmemory.New() inmemoryDriver := inmemory.New()
registry := createRegistry(t, inmemoryDriver) registry := createRegistry(t, inmemoryDriver)
@ -158,7 +158,7 @@ func TestNoDeletionNoEffect(t *testing.T) {
before := allBlobs(t, registry) before := allBlobs(t, registry)
// Run GC // Run GC
err = MarkAndSweep(context.Background(), inmemoryDriver, registry, GCOpts{ err = MarkAndSweep(dcontext.Background(), inmemoryDriver, registry, GCOpts{
DryRun: false, DryRun: false,
RemoveUntagged: false, RemoveUntagged: false,
}) })
@ -173,7 +173,7 @@ func TestNoDeletionNoEffect(t *testing.T) {
} }
func TestDeleteManifestIfTagNotFound(t *testing.T) { func TestDeleteManifestIfTagNotFound(t *testing.T) {
ctx := context.Background() ctx := dcontext.Background()
inmemoryDriver := inmemory.New() inmemoryDriver := inmemory.New()
registry := createRegistry(t, inmemoryDriver) registry := createRegistry(t, inmemoryDriver)
@ -233,7 +233,7 @@ func TestDeleteManifestIfTagNotFound(t *testing.T) {
before2 := allManifests(t, manifestService) before2 := allManifests(t, manifestService)
// run GC with dry-run (should not remove anything) // run GC with dry-run (should not remove anything)
err = MarkAndSweep(context.Background(), inmemoryDriver, registry, GCOpts{ err = MarkAndSweep(dcontext.Background(), inmemoryDriver, registry, GCOpts{
DryRun: true, DryRun: true,
RemoveUntagged: true, RemoveUntagged: true,
}) })
@ -250,7 +250,7 @@ func TestDeleteManifestIfTagNotFound(t *testing.T) {
} }
// Run GC (removes everything because no manifests with tags exist) // Run GC (removes everything because no manifests with tags exist)
err = MarkAndSweep(context.Background(), inmemoryDriver, registry, GCOpts{ err = MarkAndSweep(dcontext.Background(), inmemoryDriver, registry, GCOpts{
DryRun: false, DryRun: false,
RemoveUntagged: true, RemoveUntagged: true,
}) })
@ -269,7 +269,7 @@ func TestDeleteManifestIfTagNotFound(t *testing.T) {
} }
func TestGCWithMissingManifests(t *testing.T) { func TestGCWithMissingManifests(t *testing.T) {
ctx := context.Background() ctx := dcontext.Background()
d := inmemory.New() d := inmemory.New()
registry := createRegistry(t, d) registry := createRegistry(t, d)
@ -288,7 +288,7 @@ func TestGCWithMissingManifests(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
err = MarkAndSweep(context.Background(), d, registry, GCOpts{ err = MarkAndSweep(dcontext.Background(), d, registry, GCOpts{
DryRun: false, DryRun: false,
RemoveUntagged: false, RemoveUntagged: false,
}) })
@ -303,7 +303,7 @@ func TestGCWithMissingManifests(t *testing.T) {
} }
func TestDeletionHasEffect(t *testing.T) { func TestDeletionHasEffect(t *testing.T) {
ctx := context.Background() ctx := dcontext.Background()
inmemoryDriver := inmemory.New() inmemoryDriver := inmemory.New()
registry := createRegistry(t, inmemoryDriver) registry := createRegistry(t, inmemoryDriver)
@ -318,7 +318,7 @@ func TestDeletionHasEffect(t *testing.T) {
manifests.Delete(ctx, image3.manifestDigest) manifests.Delete(ctx, image3.manifestDigest)
// Run GC // Run GC
err := MarkAndSweep(context.Background(), inmemoryDriver, registry, GCOpts{ err := MarkAndSweep(dcontext.Background(), inmemoryDriver, registry, GCOpts{
DryRun: false, DryRun: false,
RemoveUntagged: false, RemoveUntagged: false,
}) })
@ -368,7 +368,7 @@ func getKeys(digests map[digest.Digest]io.ReadSeeker) (ds []digest.Digest) {
} }
func TestDeletionWithSharedLayer(t *testing.T) { func TestDeletionWithSharedLayer(t *testing.T) {
ctx := context.Background() ctx := dcontext.Background()
inmemoryDriver := inmemory.New() inmemoryDriver := inmemory.New()
registry := createRegistry(t, inmemoryDriver) registry := createRegistry(t, inmemoryDriver)
@ -455,7 +455,7 @@ func TestOrphanBlobDeleted(t *testing.T) {
uploadRandomSchema2Image(t, repo) uploadRandomSchema2Image(t, repo)
// Run GC // Run GC
err = MarkAndSweep(context.Background(), inmemoryDriver, registry, GCOpts{ err = MarkAndSweep(dcontext.Background(), inmemoryDriver, registry, GCOpts{
DryRun: false, DryRun: false,
RemoveUntagged: false, RemoveUntagged: false,
}) })

View file

@ -9,7 +9,7 @@ import (
"time" "time"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/storage/driver" "github.com/distribution/distribution/v3/registry/storage/driver"
"github.com/distribution/reference" "github.com/distribution/reference"
"github.com/google/uuid" "github.com/google/uuid"

View file

@ -5,7 +5,7 @@ import (
"fmt" "fmt"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/manifest/manifestlist" "github.com/distribution/distribution/v3/manifest/manifestlist"
"github.com/distribution/distribution/v3/manifest/ocischema" "github.com/distribution/distribution/v3/manifest/ocischema"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"

View file

@ -6,7 +6,7 @@ import (
"fmt" "fmt"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/manifest" "github.com/distribution/distribution/v3/manifest"
"github.com/distribution/distribution/v3/manifest/manifestlist" "github.com/distribution/distribution/v3/manifest/manifestlist"
"github.com/distribution/distribution/v3/manifest/ocischema" "github.com/distribution/distribution/v3/manifest/ocischema"

View file

@ -4,7 +4,7 @@ import (
"context" "context"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/manifest/ocischema" "github.com/distribution/distribution/v3/manifest/ocischema"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
) )

View file

@ -6,7 +6,7 @@ import (
"net/url" "net/url"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/manifest/ocischema" "github.com/distribution/distribution/v3/manifest/ocischema"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
v1 "github.com/opencontainers/image-spec/specs-go/v1" v1 "github.com/opencontainers/image-spec/specs-go/v1"

View file

@ -7,7 +7,7 @@ import (
"net/url" "net/url"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/manifest/schema2" "github.com/distribution/distribution/v3/manifest/schema2"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
) )

View file

@ -6,7 +6,7 @@ import (
"testing" "testing"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/manifest" "github.com/distribution/distribution/v3/manifest"
"github.com/distribution/distribution/v3/manifest/schema2" "github.com/distribution/distribution/v3/manifest/schema2"
"github.com/distribution/distribution/v3/registry/storage/driver/inmemory" "github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
@ -14,7 +14,7 @@ import (
) )
func TestVerifyManifestForeignLayer(t *testing.T) { func TestVerifyManifestForeignLayer(t *testing.T) {
ctx := context.Background() ctx := dcontext.Background()
inmemoryDriver := inmemory.New() inmemoryDriver := inmemory.New()
registry := createRegistry(t, inmemoryDriver, registry := createRegistry(t, inmemoryDriver,
ManifestURLsAllowRegexp(regexp.MustCompile("^https?://foo")), ManifestURLsAllowRegexp(regexp.MustCompile("^https?://foo")),
@ -152,7 +152,7 @@ func TestVerifyManifestForeignLayer(t *testing.T) {
} }
func TestVerifyManifestBlobLayerAndConfig(t *testing.T) { func TestVerifyManifestBlobLayerAndConfig(t *testing.T) {
ctx := context.Background() ctx := dcontext.Background()
inmemoryDriver := inmemory.New() inmemoryDriver := inmemory.New()
registry := createRegistry(t, inmemoryDriver, registry := createRegistry(t, inmemoryDriver,
ManifestURLsAllowRegexp(regexp.MustCompile("^https?://foo")), ManifestURLsAllowRegexp(regexp.MustCompile("^https?://foo")),

View file

@ -4,7 +4,7 @@ import (
"context" "context"
"path" "path"
dcontext "github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/registry/storage/driver" "github.com/distribution/distribution/v3/registry/storage/driver"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
) )

View file

@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/distribution/distribution/v3/manifest/manifestlist" "github.com/distribution/distribution/v3/manifest/manifestlist"
"github.com/distribution/distribution/v3/manifest/schema2" "github.com/distribution/distribution/v3/manifest/schema2"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
@ -12,7 +12,7 @@ import (
// MakeManifestList constructs a manifest list out of a list of manifest digests // MakeManifestList constructs a manifest list out of a list of manifest digests
func MakeManifestList(blobstatter distribution.BlobStatter, manifestDigests []digest.Digest) (*manifestlist.DeserializedManifestList, error) { func MakeManifestList(blobstatter distribution.BlobStatter, manifestDigests []digest.Digest) (*manifestlist.DeserializedManifestList, error) {
ctx := context.Background() ctx := dcontext.Background()
manifestDescriptors := make([]manifestlist.ManifestDescriptor, 0, len(manifestDigests)) manifestDescriptors := make([]manifestlist.ManifestDescriptor, 0, len(manifestDigests))
for _, manifestDigest := range manifestDigests { for _, manifestDigest := range manifestDigests {
@ -39,7 +39,7 @@ func MakeManifestList(blobstatter distribution.BlobStatter, manifestDigests []di
// MakeSchema2Manifest constructs a schema 2 manifest from a given list of digests and returns // MakeSchema2Manifest constructs a schema 2 manifest from a given list of digests and returns
// the digest of the manifest // the digest of the manifest
func MakeSchema2Manifest(repository distribution.Repository, digests []digest.Digest) (distribution.Manifest, error) { func MakeSchema2Manifest(repository distribution.Repository, digests []digest.Digest) (distribution.Manifest, error) {
ctx := context.Background() ctx := dcontext.Background()
blobStore := repository.Blobs(ctx) blobStore := repository.Blobs(ctx)
var configJSON []byte var configJSON []byte

View file

@ -10,7 +10,7 @@ import (
"time" "time"
"github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3"
"github.com/distribution/distribution/v3/context" "github.com/distribution/distribution/v3/internal/dcontext"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
) )
@ -96,7 +96,7 @@ func CreateRandomLayers(n int) (map[digest.Digest]io.ReadSeeker, error) {
// UploadBlobs lets you upload blobs to a repository // UploadBlobs lets you upload blobs to a repository
func UploadBlobs(repository distribution.Repository, layers map[digest.Digest]io.ReadSeeker) error { func UploadBlobs(repository distribution.Repository, layers map[digest.Digest]io.ReadSeeker) error {
ctx := context.Background() ctx := dcontext.Background()
for dgst, rs := range layers { for dgst, rs := range layers {
wr, err := repository.Blobs(ctx).Create(ctx) wr, err := repository.Blobs(ctx).Create(ctx)
if err != nil { if err != nil {