@@ -33,6 +33,15 @@ import (
3333 bolt "go.etcd.io/bbolt"
3434)
3535
36+ func TestResourceMax (t * testing.T ) {
37+ if ResourceContent != resourceContentFlat & gc .ResourceMax {
38+ t .Fatalf ("Invalid flat content type: %d (max %d)" , resourceContentFlat , gc .ResourceMax )
39+ }
40+ if ResourceSnapshot != resourceSnapshotFlat & gc .ResourceMax {
41+ t .Fatalf ("Invalid flat snapshot type: %d (max %d)" , resourceSnapshotFlat , gc .ResourceMax )
42+ }
43+ }
44+
3645func TestGCRoots (t * testing.T ) {
3746 db , cleanup , err := newDatabase ()
3847 if err != nil {
@@ -90,6 +99,11 @@ func TestGCRoots(t *testing.T) {
9099 addLeaseSnapshot ("ns2" , "l4" , "overlay" , "sn8" ),
91100 addLeaseIngest ("ns2" , "l4" , "ingest-6" ),
92101 addLeaseIngest ("ns2" , "l4" , "ingest-7" ),
102+
103+ addLease ("ns3" , "l1" , labelmap (string (labelGCFlat ), time .Now ().Add (time .Hour ).Format (time .RFC3339 ))),
104+ addLeaseContent ("ns3" , "l1" , dgst (1 )),
105+ addLeaseSnapshot ("ns3" , "l1" , "overlay" , "sn1" ),
106+ addLeaseIngest ("ns3" , "l1" , "ingest-1" ),
93107 }
94108
95109 expected := []gc.Node {
@@ -121,6 +135,10 @@ func TestGCRoots(t *testing.T) {
121135 gcnode (ResourceIngest , "ns1" , "ingest-3" ),
122136 gcnode (ResourceIngest , "ns2" , "ingest-4" ),
123137 gcnode (ResourceIngest , "ns2" , "ingest-5" ),
138+ gcnode (ResourceLease , "ns3" , "l1" ),
139+ gcnode (ResourceIngest , "ns3" , "ingest-1" ),
140+ gcnode (resourceContentFlat , "ns3" , dgst (1 ).String ()),
141+ gcnode (resourceSnapshotFlat , "ns3" , "overlay/sn1" ),
124142 }
125143
126144 if err := db .Update (func (tx * bolt.Tx ) error {
@@ -268,6 +286,14 @@ func TestGCRefs(t *testing.T) {
268286 addSnapshot ("ns2" , "overlay" , "sn3" , "" , labelmap (
269287 string (labelGCContentRef ), dgst (1 ).String (),
270288 string (labelGCContentRef )+ ".keep-me" , dgst (6 ).String ())),
289+
290+ // Test flat references don't follow label references
291+ addContent ("ns3" , dgst (1 ), nil ),
292+ addContent ("ns3" , dgst (2 ), labelmap (string (labelGCContentRef )+ ".0" , dgst (1 ).String ())),
293+
294+ addSnapshot ("ns3" , "overlay" , "sn1" , "" , nil ),
295+ addSnapshot ("ns3" , "overlay" , "sn2" , "sn1" , nil ),
296+ addSnapshot ("ns3" , "overlay" , "sn3" , "" , labelmap (string (labelGCSnapRef )+ "btrfs" , "sn1" , string (labelGCSnapRef )+ "overlay" , "sn1" )),
271297 }
272298
273299 refs := map [gc.Node ][]gc.Node {
@@ -316,6 +342,18 @@ func TestGCRefs(t *testing.T) {
316342 gcnode (ResourceIngest , "ns2" , "ingest-2" ): {
317343 gcnode (ResourceContent , "ns2" , dgst (8 ).String ()),
318344 },
345+ gcnode (resourceSnapshotFlat , "ns3" , "overlay/sn2" ): {
346+ gcnode (resourceSnapshotFlat , "ns3" , "overlay/sn1" ),
347+ },
348+ gcnode (ResourceSnapshot , "ns3" , "overlay/sn2" ): {
349+ gcnode (ResourceSnapshot , "ns3" , "overlay/sn1" ),
350+ },
351+ gcnode (resourceSnapshotFlat , "ns3" , "overlay/sn1" ): nil ,
352+ gcnode (resourceSnapshotFlat , "ns3" , "overlay/sn3" ): nil ,
353+ gcnode (ResourceSnapshot , "ns3" , "overlay/sn3" ): {
354+ gcnode (ResourceSnapshot , "ns3" , "btrfs/sn1" ),
355+ gcnode (ResourceSnapshot , "ns3" , "overlay/sn1" ),
356+ },
319357 }
320358
321359 if err := db .Update (func (tx * bolt.Tx ) error {
0 commit comments