Skip to content

Commit cb36999

Browse files
authored
Merge pull request moby#5516 from tonistiigi/releasable-check-update
client: improve releasable condition in tests
2 parents 9dd9f64 + f66f662 commit cb36999

File tree

1 file changed

+80
-45
lines changed

1 file changed

+80
-45
lines changed

client/client_test.go

Lines changed: 80 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -7844,6 +7844,16 @@ loop0:
78447844
// examine contents of exported tars (requires containerd)
78457845
cdAddress := sb.ContainerdAddress()
78467846
if cdAddress == "" {
7847+
if checkContent {
7848+
store := proxy.NewContentStore(c.ContentClient())
7849+
count := 0
7850+
err := store.Walk(sb.Context(), func(info content.Info) error {
7851+
count++
7852+
return nil
7853+
})
7854+
require.NoError(t, err)
7855+
require.Equal(t, 0, count)
7856+
}
78477857
t.Logf("checkAllReleasable: skipping check for exported tars in non-containerd test")
78487858
return
78497859
}
@@ -7854,60 +7864,85 @@ loop0:
78547864
require.NoError(t, err)
78557865
defer client.Close()
78567866

7857-
ctx := namespaces.WithNamespace(sb.Context(), "buildkit")
7858-
snapshotterName := sb.Snapshotter()
7859-
snapshotService := client.SnapshotService(snapshotterName)
7867+
for _, ns := range []string{"buildkit", "buildkit_history"} {
7868+
ctx := namespaces.WithNamespace(sb.Context(), ns)
7869+
snapshotterName := sb.Snapshotter()
7870+
snapshotService := client.SnapshotService(snapshotterName)
78607871

7861-
retries = 0
7862-
for {
7872+
leases, err := client.LeasesService().List(ctx)
7873+
require.NoError(t, err)
78637874
count := 0
7864-
err = snapshotService.Walk(ctx, func(context.Context, snapshots.Info) error {
7875+
for _, l := range leases {
7876+
_, isTemp := l.Labels["buildkit/lease.temporary"]
7877+
_, isExpire := l.Labels["containerd.io/gc.expire"]
7878+
if isTemp && isExpire {
7879+
continue
7880+
}
78657881
count++
7866-
return nil
7867-
})
7868-
require.NoError(t, err)
7869-
if count == 0 {
7870-
break
7882+
t.Logf("lease: %v", l)
78717883
}
7872-
require.Less(t, retries, 20)
7873-
retries++
7874-
time.Sleep(500 * time.Millisecond)
7875-
}
7884+
require.Equal(t, 0, count)
78767885

7877-
if !checkContent {
7878-
return
7879-
}
7886+
if checkContent {
7887+
images, err := client.ImageService().List(ctx)
7888+
require.NoError(t, err)
7889+
for _, img := range images {
7890+
err := client.ImageService().Delete(ctx, img.Name)
7891+
require.NoError(t, err)
7892+
}
7893+
}
78807894

7881-
retries = 0
7882-
for {
7883-
count := 0
7884-
var infos []content.Info
7885-
err = client.ContentStore().Walk(ctx, func(info content.Info) error {
7886-
count++
7887-
infos = append(infos, info)
7888-
return nil
7889-
})
7890-
require.NoError(t, err)
7891-
if count == 0 {
7892-
break
7895+
retries = 0
7896+
for {
7897+
count := 0
7898+
err = snapshotService.Walk(ctx, func(context.Context, snapshots.Info) error {
7899+
count++
7900+
return nil
7901+
})
7902+
require.NoError(t, err)
7903+
if count == 0 {
7904+
break
7905+
}
7906+
require.Less(t, retries, 20)
7907+
retries++
7908+
time.Sleep(500 * time.Millisecond)
78937909
}
7894-
if retries >= 50 {
7895-
for _, info := range infos {
7896-
t.Logf("content: %v %v %+v", info.Digest, info.Size, info.Labels)
7897-
ra, err := client.ContentStore().ReaderAt(ctx, ocispecs.Descriptor{
7898-
Digest: info.Digest,
7899-
Size: info.Size,
7900-
})
7901-
if err == nil {
7902-
dt := make([]byte, 1024)
7903-
n, err := ra.ReadAt(dt, 0)
7904-
t.Logf("data: %+v %q", err, string(dt[:n]))
7910+
7911+
if !checkContent {
7912+
return
7913+
}
7914+
7915+
retries = 0
7916+
for {
7917+
count := 0
7918+
var infos []content.Info
7919+
err = client.ContentStore().Walk(ctx, func(info content.Info) error {
7920+
count++
7921+
infos = append(infos, info)
7922+
return nil
7923+
})
7924+
require.NoError(t, err)
7925+
if count == 0 {
7926+
break
7927+
}
7928+
if retries >= 50 {
7929+
for _, info := range infos {
7930+
t.Logf("content: %v %v %+v", info.Digest, info.Size, info.Labels)
7931+
ra, err := client.ContentStore().ReaderAt(ctx, ocispecs.Descriptor{
7932+
Digest: info.Digest,
7933+
Size: info.Size,
7934+
})
7935+
if err == nil {
7936+
dt := make([]byte, 1024)
7937+
n, err := ra.ReadAt(dt, 0)
7938+
t.Logf("data: %+v %q", err, string(dt[:n]))
7939+
}
79057940
}
7941+
require.FailNowf(t, "content still exists", "%+v", infos)
79067942
}
7907-
require.FailNowf(t, "content still exists", "%+v", infos)
7943+
retries++
7944+
time.Sleep(500 * time.Millisecond)
79087945
}
7909-
retries++
7910-
time.Sleep(500 * time.Millisecond)
79117946
}
79127947
}
79137948

@@ -9880,7 +9915,7 @@ func testSBOMSupplements(t *testing.T, sb integration.Sandbox) {
98809915
require.Equal(t, "/bar", attest.Predicate.Files[1].FileName)
98819916
require.Empty(t, attest.Predicate.Files[1].FileComment)
98829917

9883-
checkAllReleasable(t, c, sb, false)
9918+
checkAllReleasable(t, c, sb, true)
98849919
}
98859920

98869921
func testMultipleCacheExports(t *testing.T, sb integration.Sandbox) {

0 commit comments

Comments
 (0)