github.com/janelia-flyem/dvid@v1.0.0/datatype/labelarray/labelidx_test.go (about) 1 package labelarray 2 3 import ( 4 "testing" 5 6 "github.com/janelia-flyem/dvid/datastore" 7 "github.com/janelia-flyem/dvid/dvid" 8 "github.com/janelia-flyem/dvid/server" 9 ) 10 11 // Stress-test indexing during ingestion handling. 12 func TestIndexing(t *testing.T) { 13 if err := server.OpenTest(); err != nil { 14 t.Fatalf("can't open test server: %v\n", err) 15 } 16 defer server.CloseTest() 17 18 uuid, _ := datastore.NewTestRepo() 19 if len(uuid) < 5 { 20 t.Fatalf("Bad root UUID for new repo: %s\n", uuid) 21 } 22 server.CreateTestInstance(t, uuid, "labelarray", "labels", dvid.Config{}) 23 d, err := GetByUUIDName(uuid, "labels") 24 if err != nil { 25 t.Fatal(err) 26 } 27 v, err := datastore.VersionFromUUID(uuid) 28 if err != nil { 29 t.Fatal(err) 30 } 31 32 // pretend we are ingesting bvsize x bvsize x bvsize blocks and for labels are tiled in 5x5x5 33 // block subvolumes. 34 var bvsize, bx, by, bz, numVoxels int32 35 bvsize = 10 36 numVoxels = 64 * 64 * 64 / 20 37 maxLabel := uint64(bvsize*bvsize*bvsize) / 5 38 var label uint64 39 var changes int 40 for bz = 0; bz < bvsize; bz++ { 41 for by = 0; by < bvsize; by++ { 42 for bx = 0; bx < bvsize; bx++ { 43 if bx%5 == 0 { 44 label++ 45 } 46 ldm := make(map[uint64]blockDiffMap) 47 izyxstr := dvid.ChunkPoint3d{bx, by, bz}.ToIZYXString() 48 for i := uint64(0); i < 4; i++ { 49 j := label + i*maxLabel 50 bdm, found := ldm[j] 51 if !found { 52 bdm = make(blockDiffMap) 53 ldm[j] = bdm 54 } 55 bdm[izyxstr] = labelDiff{numVoxels, true} 56 } 57 for label, bdm := range ldm { 58 changes++ 59 ChangeLabelIndex(d, v, label, bdm) 60 } 61 } 62 } 63 } 64 65 // make sure are indexing on disk is correct. 66 for label = 1; label <= maxLabel*4; label++ { 67 meta, err := GetLabelIndex(d, v, label) 68 if err != nil { 69 t.Fatalf("label %d had no meta data associated with it\n", label) 70 } 71 if len(meta.Blocks) != 5 { 72 t.Errorf("label %d had %d blocks: %s\n", label, len(meta.Blocks), meta.Blocks) 73 } 74 } 75 }