decred.org/dcrwallet/v3@v3.1.0/wallet/udb/testdata/v24.db.go (about) 1 // Copyright (c) 2021 The Decred developers 2 // Use of this source code is governed by an ISC 3 // license that can be found in the LICENSE file. 4 5 // This file should be compiled from the commit the file was introduced, 6 // otherwise it may not compile due to API changes, or may not create the 7 // database with the correct old version. This file should not be updated for 8 // API changes. 9 10 // V24 test database layout and v25 upgrade test plan 11 // 12 // importVotingAccount is the 25th version of the database. This version 13 // indicates that importing a new account type has been enabled. This 14 // account facilitates voting using a special account where the private 15 // key from indexes of the internal branch are shared with a vsp. The 16 // new type is not recognized by previous wallet versions. This version 17 // only updates the db version number so that previous versions will 18 // error on startup. 19 // 20 // This test only creates an empty v24 database. 21 22 package main 23 24 import ( 25 "compress/gzip" 26 "context" 27 "fmt" 28 "io" 29 "os" 30 "time" 31 32 _ "decred.org/dcrwallet/v3/wallet/internal/bdb" 33 "decred.org/dcrwallet/v3/wallet/udb" 34 "decred.org/dcrwallet/v3/wallet/walletdb" 35 "github.com/decred/dcrd/chaincfg/v3" 36 ) 37 38 const dbname = "v24.db" 39 40 var ( 41 epoch time.Time 42 pubPass = []byte("public") 43 privPass = []byte("private") 44 ) 45 46 var params = chaincfg.TestNet3Params() 47 48 func main() { 49 ctx, cancel := context.WithCancel(context.Background()) 50 defer cancel() 51 err := setup(ctx) 52 if err != nil { 53 fmt.Fprintf(os.Stderr, "setup: %v\n", err) 54 os.Exit(1) 55 } 56 err = compress() 57 if err != nil { 58 fmt.Fprintf(os.Stderr, "compress: %v\n", err) 59 os.Exit(1) 60 } 61 } 62 63 func setup(ctx context.Context) error { 64 db, err := walletdb.Create("bdb", dbname) 65 if err != nil { 66 return err 67 } 68 defer db.Close() 69 var seed [32]byte 70 if err = udb.Initialize(ctx, db, params, seed[:], pubPass, privPass); err != nil { 71 return err 72 } 73 return nil 74 } 75 76 func compress() error { 77 db, err := os.Open(dbname) 78 if err != nil { 79 return err 80 } 81 defer os.Remove(dbname) 82 defer db.Close() 83 dbgz, err := os.Create(dbname + ".gz") 84 if err != nil { 85 return err 86 } 87 defer dbgz.Close() 88 gz := gzip.NewWriter(dbgz) 89 _, err = io.Copy(gz, db) 90 if err != nil { 91 return err 92 } 93 return gz.Close() 94 }