github.com/janelia-flyem/dvid@v1.0.0/datatype/multichan16/multichan16_test.go (about) 1 package multichan16 2 3 import ( 4 "log" 5 "sync" 6 "testing" 7 8 "github.com/janelia-flyem/dvid/datastore" 9 "github.com/janelia-flyem/dvid/dvid" 10 "github.com/janelia-flyem/dvid/server" 11 ) 12 13 var ( 14 dtype datastore.TypeService 15 testMu sync.Mutex 16 ) 17 18 // Sets package-level testRepo and TestVersionID 19 func initTestRepo() (dvid.UUID, dvid.VersionID) { 20 testMu.Lock() 21 defer testMu.Unlock() 22 if dtype == nil { 23 var err error 24 dtype, err = datastore.TypeServiceByName(TypeName) 25 if err != nil { 26 log.Fatalf("Can't get multichan16 type: %v\n", err) 27 } 28 } 29 return datastore.NewTestRepo() 30 } 31 32 func TestBasic(t *testing.T) { 33 if err := server.OpenTest(); err != nil { 34 t.Fatalf("can't open test server: %v\n", err) 35 } 36 defer server.CloseTest() 37 38 uuid, _ := initTestRepo() 39 40 config := dvid.NewConfig() 41 _, err := datastore.NewData(uuid, dtype, "instance1", config) 42 if err != nil { 43 t.Errorf("Error creating new multichan16 instance: %v\n", err) 44 } 45 } 46 47 func TestMultichan16RepoPersistence(t *testing.T) { 48 if err := server.OpenTest(); err != nil { 49 t.Fatalf("can't open test server: %v\n", err) 50 } 51 defer server.CloseTest() 52 53 uuid, _ := initTestRepo() 54 55 // Make labels and set various properties 56 config := dvid.NewConfig() 57 dataservice, err := datastore.NewData(uuid, dtype, "mymultichan16", config) 58 if err != nil { 59 t.Errorf("Unable to create multichan16 instance: %v\n", err) 60 } 61 mcdata, ok := dataservice.(*Data) 62 if !ok { 63 t.Errorf("Can't cast multichan16 data service into multichan16.Data\n") 64 } 65 oldData := *mcdata 66 67 // Restart test datastore and see if datasets are still there. 68 if err = datastore.SaveDataByUUID(uuid, mcdata); err != nil { 69 t.Fatalf("Unable to save repo during multichan16 persistence test: %v\n", err) 70 } 71 datastore.CloseReopenTest() 72 73 dataservice2, err := datastore.GetDataByUUIDName(uuid, "mymultichan16") 74 if err != nil { 75 t.Fatalf("Can't get multichan16 instance from reloaded test db: %v\n", err) 76 } 77 mcdata2, ok := dataservice2.(*Data) 78 if !ok { 79 t.Errorf("Returned new data instance 2 is not multichan16.Data\n") 80 } 81 if !oldData.Equals(mcdata2) { 82 t.Errorf("Expected %v, got %v\n", oldData, *mcdata2) 83 } 84 }