@@ -7844,6 +7844,16 @@ loop0:
7844
7844
// examine contents of exported tars (requires containerd)
7845
7845
cdAddress := sb .ContainerdAddress ()
7846
7846
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
+ }
7847
7857
t .Logf ("checkAllReleasable: skipping check for exported tars in non-containerd test" )
7848
7858
return
7849
7859
}
@@ -7854,60 +7864,85 @@ loop0:
7854
7864
require .NoError (t , err )
7855
7865
defer client .Close ()
7856
7866
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 )
7860
7871
7861
- retries = 0
7862
- for {
7872
+ leases , err := client . LeasesService (). List ( ctx )
7873
+ require . NoError ( t , err )
7863
7874
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
+ }
7865
7881
count ++
7866
- return nil
7867
- })
7868
- require .NoError (t , err )
7869
- if count == 0 {
7870
- break
7882
+ t .Logf ("lease: %v" , l )
7871
7883
}
7872
- require .Less (t , retries , 20 )
7873
- retries ++
7874
- time .Sleep (500 * time .Millisecond )
7875
- }
7884
+ require .Equal (t , 0 , count )
7876
7885
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
+ }
7880
7894
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 )
7893
7909
}
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
+ }
7905
7940
}
7941
+ require .FailNowf (t , "content still exists" , "%+v" , infos )
7906
7942
}
7907
- require .FailNowf (t , "content still exists" , "%+v" , infos )
7943
+ retries ++
7944
+ time .Sleep (500 * time .Millisecond )
7908
7945
}
7909
- retries ++
7910
- time .Sleep (500 * time .Millisecond )
7911
7946
}
7912
7947
}
7913
7948
@@ -9880,7 +9915,7 @@ func testSBOMSupplements(t *testing.T, sb integration.Sandbox) {
9880
9915
require .Equal (t , "/bar" , attest .Predicate .Files [1 ].FileName )
9881
9916
require .Empty (t , attest .Predicate .Files [1 ].FileComment )
9882
9917
9883
- checkAllReleasable (t , c , sb , false )
9918
+ checkAllReleasable (t , c , sb , true )
9884
9919
}
9885
9920
9886
9921
func testMultipleCacheExports (t * testing.T , sb integration.Sandbox ) {
0 commit comments