From 825c06c3bb6a9e44138ff68aabe59c8d1bf96950 Mon Sep 17 00:00:00 2001 From: lash Date: Fri, 17 Jan 2025 10:36:02 +0000 Subject: [PATCH 01/16] Rehabilitate dump tool --- debug/db.go | 26 +++++++++++++------------- debug/db_debug.go | 3 +++ devtools/store/dump/main.go | 18 ++++++++++-------- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/debug/db.go b/debug/db.go index ba01abe..11dd48f 100644 --- a/debug/db.go +++ b/debug/db.go @@ -32,18 +32,17 @@ func (k KeyInfo) String() string { func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { o := KeyInfo{} - b := []byte(sessionId) + //b := []byte(sessionId) - if len(k) <= len(b) { - return o, fmt.Errorf("storage key missing") - } +// if len(k) <= len(b) { +// return o, fmt.Errorf("storage key missing") +// } o.SessionId = sessionId - o.Typ = uint8(k[0]) k = k[1:] - o.SessionId = string(k[:len(b)]) - k = k[len(b):] + //o.SessionId = string(k[:len(b)]) + //k = k[len(b):] if o.Typ == visedb.DATATYPE_USERDATA { if len(k) == 0 { @@ -53,22 +52,23 @@ func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { o.SubTyp = storedb.DataTyp(v) o.Label = subTypToString(o.SubTyp) k = k[2:] + if len(k) != 0 { + return o, fmt.Errorf("excess key information: %x", k) + } } else { o.Label = typToString(o.Typ) + k = k[2:] } - if len(k) != 0 { - return o, fmt.Errorf("excess key information") - } - + return o, nil } func FromKey(k []byte) (KeyInfo, error) { o := KeyInfo{} - if len(k) < 4 { - return o, fmt.Errorf("insufficient key length") + if len(k) < 3 { + return o, fmt.Errorf("insufficient key length: %d", len(k)) } sessionIdBytes := k[1:len(k)-2] diff --git a/debug/db_debug.go b/debug/db_debug.go index 13de8ac..03be181 100644 --- a/debug/db_debug.go +++ b/debug/db_debug.go @@ -29,6 +29,9 @@ func init() { dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_PUBLIC_KEY_REVERSE] = "public_key_reverse" dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_ACTIVE_DECIMAL] = "active decimal" dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_ACTIVE_ADDRESS] = "active address" + dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_INCORRECT_PIN_ATTEMPTS] = "incorrect pin attempts" + dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_SELECTED_LANGUAGE_CODE] = "selected language" + dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_INITIAL_LANGUAGE_CODE] = "initial language" dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_VOUCHER_SYMBOLS] = "voucher symbols" dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_VOUCHER_BALANCES] = "voucher balances" dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_VOUCHER_DECIMALS] = "voucher decimals" diff --git a/devtools/store/dump/main.go b/devtools/store/dump/main.go index d896da8..cd9304d 100644 --- a/devtools/store/dump/main.go +++ b/devtools/store/dump/main.go @@ -19,8 +19,9 @@ var ( scriptDir = path.Join("services", "registration") ) -func formatItem(k []byte, v []byte) (string, error) { - o, err := debug.FromKey(k) +func formatItem(k []byte, v []byte, sessionId string) (string, error) { + //o, err := debug.FromKey(k) + o, err := debug.ToKeyInfo(k, sessionId) if err != nil { return "", err } @@ -38,16 +39,16 @@ func main() { var err error flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") - flag.StringVar(&connStr, "c", ".state", "connection string") + flag.StringVar(&connStr, "c", "", "connection string") flag.BoolVar(&engineDebug, "d", false, "use engine debug output") flag.Parse() - if connStr != "" { + if connStr == "" { connStr = config.DbConn() } connData, err := storage.ToConnData(connStr) if err != nil { - fmt.Fprintf(os.Stderr, "connstr err: %v", err) + fmt.Fprintf(os.Stderr, "connstr err: %v\n", err) os.Exit(1) } @@ -65,9 +66,10 @@ func main() { fmt.Fprintf(os.Stderr, "get userdata db: %v\n", err.Error()) os.Exit(1) } + store.SetSession(sessionId) store.SetPrefix(db.DATATYPE_USERDATA) - d, err := store.Dump(ctx, []byte(sessionId)) + d, err := store.Dump(ctx, []byte("")) if err != nil { fmt.Fprintf(os.Stderr, "store dump fail: %v\n", err.Error()) os.Exit(1) @@ -78,9 +80,9 @@ func main() { if k == nil { break } - r, err := formatItem(k, v) + r, err := formatItem(append([]byte{db.DATATYPE_USERDATA}, k...), v, sessionId) if err != nil { - fmt.Fprintf(os.Stderr, "format db item error: %v", err) + fmt.Fprintf(os.Stderr, "format db item error: %v\n", err) os.Exit(1) } fmt.Printf(r) -- 2.45.2 From 9b66146ef121286357046bf56d11df68a7ee51cd Mon Sep 17 00:00:00 2001 From: lash Date: Fri, 17 Jan 2025 10:36:29 +0000 Subject: [PATCH 02/16] Remove generate tool (use devapi main instead) --- devtools/store/generate/main.go | 86 --------------------------------- 1 file changed, 86 deletions(-) delete mode 100644 devtools/store/generate/main.go diff --git a/devtools/store/generate/main.go b/devtools/store/generate/main.go deleted file mode 100644 index bfcc483..0000000 --- a/devtools/store/generate/main.go +++ /dev/null @@ -1,86 +0,0 @@ -package main - -import ( - "context" - "crypto/sha1" - "flag" - "fmt" - "os" - "path" - - testdataloader "github.com/peteole/testdata-loader" - "git.defalsify.org/vise.git/logging" - "git.grassecon.net/grassrootseconomics/sarafu-vise/config" - "git.grassecon.net/grassrootseconomics/visedriver/storage" - "git.grassecon.net/grassrootseconomics/sarafu-vise/store" - storedb "git.grassecon.net/grassrootseconomics/sarafu-vise/store/db" -) - -var ( - logg = logging.NewVanilla() - baseDir = testdataloader.GetBasePath() - scriptDir = path.Join("services", "registration") -) - -func main() { - config.LoadConfig() - - var connStr string - var sessionId string - var database string - var engineDebug bool - var err error - - flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") - flag.StringVar(&connStr, "c", "", "connection string") - flag.BoolVar(&engineDebug, "d", false, "use engine debug output") - flag.Parse() - - if connStr != "" { - connStr = config.DbConn() - } - connData, err := storage.ToConnData(connStr) - if err != nil { - fmt.Fprintf(os.Stderr, "connstr err: %v", err) - os.Exit(1) - } - - logg.Infof("start command", "conn", connData) - - ctx := context.Background() - ctx = context.WithValue(ctx, "SessionId", sessionId) - ctx = context.WithValue(ctx, "Database", database) - - resourceDir := scriptDir - menuStorageService := storage.NewMenuStorageService(connData, resourceDir) - - userDb, err := menuStorageService.GetUserdataDb(ctx) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - userStore := store.UserDataStore{userDb} - - h := sha1.New() - h.Write([]byte(sessionId)) - address := h.Sum(nil) - addressString := fmt.Sprintf("%x", address) - - err = userStore.WriteEntry(ctx, sessionId, storedb.DATA_PUBLIC_KEY, []byte(addressString)) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - - err = userStore.WriteEntry(ctx, addressString, storedb.DATA_PUBLIC_KEY_REVERSE, []byte(sessionId)) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - - err = userDb.Close() - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } -} -- 2.45.2 From ab03e6d529a6e31151fb1bd5b097497dcaf5c46d Mon Sep 17 00:00:00 2001 From: lash Date: Fri, 17 Jan 2025 11:09:30 +0000 Subject: [PATCH 03/16] Rehabilitate debug db tets, improve dump format --- debug/db.go | 20 +------------------- debug/db_test.go | 2 -- devtools/store/dump/main.go | 9 +++++++-- 3 files changed, 8 insertions(+), 23 deletions(-) diff --git a/debug/db.go b/debug/db.go index 11dd48f..d241a40 100644 --- a/debug/db.go +++ b/debug/db.go @@ -32,17 +32,10 @@ func (k KeyInfo) String() string { func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { o := KeyInfo{} - //b := []byte(sessionId) - -// if len(k) <= len(b) { -// return o, fmt.Errorf("storage key missing") -// } - + o.SessionId = sessionId o.Typ = uint8(k[0]) k = k[1:] - //o.SessionId = string(k[:len(b)]) - //k = k[len(b):] if o.Typ == visedb.DATATYPE_USERDATA { if len(k) == 0 { @@ -64,17 +57,6 @@ func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { return o, nil } -func FromKey(k []byte) (KeyInfo, error) { - o := KeyInfo{} - - if len(k) < 3 { - return o, fmt.Errorf("insufficient key length: %d", len(k)) - } - - sessionIdBytes := k[1:len(k)-2] - return ToKeyInfo(k, string(sessionIdBytes)) -} - func subTypToString(v storedb.DataTyp) string { return dbTypStr[v + visedb.DATATYPE_USERDATA + 1] } diff --git a/debug/db_test.go b/debug/db_test.go index c8c4d30..4c89fa9 100644 --- a/debug/db_test.go +++ b/debug/db_test.go @@ -10,7 +10,6 @@ import ( func TestDebugDbSubKeyInfo(t *testing.T) { s := "foo" b := []byte{0x20} - b = append(b, []byte(s)...) b = append(b, []byte{0x00, 0x02}...) r, err := ToKeyInfo(b, s) if err != nil { @@ -56,7 +55,6 @@ func TestDebugDbKeyInfo(t *testing.T) { func TestDebugDbKeyInfoRestore(t *testing.T) { s := "bar" b := []byte{visedb.DATATYPE_USERDATA} - b = append(b, []byte(s)...) k := storedb.ToBytes(storedb.DATA_ACTIVE_SYM) b = append(b, k...) diff --git a/devtools/store/dump/main.go b/devtools/store/dump/main.go index cd9304d..c1879bf 100644 --- a/devtools/store/dump/main.go +++ b/devtools/store/dump/main.go @@ -20,12 +20,12 @@ var ( ) func formatItem(k []byte, v []byte, sessionId string) (string, error) { - //o, err := debug.FromKey(k) o, err := debug.ToKeyInfo(k, sessionId) if err != nil { return "", err } - s := fmt.Sprintf("%vValue: %v\n\n", o, string(v)) + s := fmt.Sprintf("%v\t%v\n", o.Label, string(v)) + return s, nil } @@ -37,6 +37,7 @@ func main() { var database string var engineDebug bool var err error + var first bool flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") flag.StringVar(&connStr, "c", "", "connection string") @@ -80,6 +81,10 @@ func main() { if k == nil { break } + if !first { + fmt.Printf("Session ID: %s\n---\n", sessionId) + first = true + } r, err := formatItem(append([]byte{db.DATATYPE_USERDATA}, k...), v, sessionId) if err != nil { fmt.Fprintf(os.Stderr, "format db item error: %v\n", err) -- 2.45.2 From bc2abc2464b3d3db83161436270228c72e10a193 Mon Sep 17 00:00:00 2001 From: lash Date: Sat, 18 Jan 2025 08:23:40 +0000 Subject: [PATCH 04/16] Update govise dep, dump keys fix --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9148b5f..733e4d4 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250115000535-e2d329b3f739 + git.defalsify.org/vise.git v0.2.3-0.20250115150139-d9e2356e47f3 git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250115003256-c0534ede1b63 diff --git a/go.sum b/go.sum index c450543..f9de0e5 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -git.defalsify.org/vise.git v0.2.3-0.20250115000535-e2d329b3f739 h1:w7pj1oh7jXrfajahVYU7m7AfHst4C6jNVzDVoaqJ7e8= -git.defalsify.org/vise.git v0.2.3-0.20250115000535-e2d329b3f739/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250115150139-d9e2356e47f3 h1:jaSdMI6WAikIA26LIUxelECIS89qEAFyGugyEyNYPPw= +git.defalsify.org/vise.git v0.2.3-0.20250115150139-d9e2356e47f3/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 h1:BenzGx6aDHKDwE23/mWIFD2InYIXyzHroZWV3MF5WUk= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f h1:FgccQi8vipX6dUt+GRiRDYHMR3UqC+plz73vw7y3fyU= -- 2.45.2 From 16cb2846b712794a9bf8f818b23fa4fad3f9b421 Mon Sep 17 00:00:00 2001 From: lash Date: Sat, 18 Jan 2025 09:00:30 +0000 Subject: [PATCH 05/16] Update govise dep; removes hardcoded datatype --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 733e4d4..56f9718 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250115150139-d9e2356e47f3 + git.defalsify.org/vise.git v0.2.3-0.20250118085844-93b0c2db1e5a git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250115003256-c0534ede1b63 diff --git a/go.sum b/go.sum index f9de0e5..5580d44 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -git.defalsify.org/vise.git v0.2.3-0.20250115150139-d9e2356e47f3 h1:jaSdMI6WAikIA26LIUxelECIS89qEAFyGugyEyNYPPw= -git.defalsify.org/vise.git v0.2.3-0.20250115150139-d9e2356e47f3/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250118085844-93b0c2db1e5a h1:8gYSGdjDBxqdb4XRIGWmkP7wz1w6WsoRuyce+K0kREM= +git.defalsify.org/vise.git v0.2.3-0.20250118085844-93b0c2db1e5a/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 h1:BenzGx6aDHKDwE23/mWIFD2InYIXyzHroZWV3MF5WUk= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f h1:FgccQi8vipX6dUt+GRiRDYHMR3UqC+plz73vw7y3fyU= -- 2.45.2 From c719db8b920cbb4acd48bb1715aca078ba9d5d3a Mon Sep 17 00:00:00 2001 From: lash Date: Sat, 18 Jan 2025 19:35:48 +0000 Subject: [PATCH 06/16] Update dep --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 56f9718..187953f 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250118085844-93b0c2db1e5a + git.defalsify.org/vise.git v0.2.3-0.20250118155735-c1256156ed8b git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250115003256-c0534ede1b63 diff --git a/go.sum b/go.sum index 5580d44..f45e963 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -git.defalsify.org/vise.git v0.2.3-0.20250118085844-93b0c2db1e5a h1:8gYSGdjDBxqdb4XRIGWmkP7wz1w6WsoRuyce+K0kREM= -git.defalsify.org/vise.git v0.2.3-0.20250118085844-93b0c2db1e5a/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250118155735-c1256156ed8b h1:ac6OThj6nqQb3TUyXHqv/vQOQUQZ98XKpYTBHZFbxUI= +git.defalsify.org/vise.git v0.2.3-0.20250118155735-c1256156ed8b/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 h1:BenzGx6aDHKDwE23/mWIFD2InYIXyzHroZWV3MF5WUk= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f h1:FgccQi8vipX6dUt+GRiRDYHMR3UqC+plz73vw7y3fyU= -- 2.45.2 From be47c999ca64637df350bbf7eee25860f4ee3a54 Mon Sep 17 00:00:00 2001 From: lash Date: Sun, 19 Jan 2025 09:46:37 +0000 Subject: [PATCH 07/16] Integrate tx enabled vise db --- cmd/africastalking/main.go | 7 ++++--- cmd/async/main.go | 8 ++++---- cmd/http/main.go | 7 ++++--- cmd/main.go | 14 ++++++++++++++ cmd/ssh/main.go | 2 +- cmd/ssh/sshkey/main.go | 2 +- devtools/store/dump/main.go | 2 +- go.mod | 6 +++--- go.sum | 12 ++++++------ handlers/application/menuhandler_test.go | 2 +- ssh/keystore.go | 4 ++-- ssh/ssh.go | 4 ++-- store/vouchers_test.go | 2 +- testutil/engine.go | 4 ++-- 14 files changed, 46 insertions(+), 30 deletions(-) diff --git a/cmd/africastalking/main.go b/cmd/africastalking/main.go index fe24975..483cb19 100644 --- a/cmd/africastalking/main.go +++ b/cmd/africastalking/main.go @@ -101,7 +101,6 @@ func main() { fmt.Fprintf(os.Stderr, "userdatadb: %v\n", err) os.Exit(1) } - defer userdataStore.Close() dbResource, ok := rs.(*resource.DbResource) if !ok { @@ -133,7 +132,6 @@ func main() { fmt.Fprintf(os.Stderr, "getstatestore: %v\n", err) os.Exit(1) } - defer stateStore.Close() rp := &at.ATRequestParser{} bsh := request.NewBaseRequestHandler(cfg, rs, stateStore, userdataStore, rp, hl) @@ -146,7 +144,10 @@ func main() { Addr: fmt.Sprintf("%s:%s", host, strconv.Itoa(int(port))), Handler: mux, } - s.RegisterOnShutdown(sh.Shutdown) + shutdownFunc := func() { + sh.Shutdown(ctx) + } + s.RegisterOnShutdown(shutdownFunc) cint := make(chan os.Signal) cterm := make(chan os.Signal) diff --git a/cmd/async/main.go b/cmd/async/main.go index e68efe8..b092fba 100644 --- a/cmd/async/main.go +++ b/cmd/async/main.go @@ -116,7 +116,7 @@ func main() { fmt.Fprintf(os.Stderr, err.Error()) os.Exit(1) } - defer userdataStore.Close() + //defer userdataStore.Close(ctx) dbResource, ok := rs.(*resource.DbResource) if !ok { @@ -139,7 +139,7 @@ func main() { fmt.Fprintf(os.Stderr, err.Error()) os.Exit(1) } - defer stateStore.Close() + //defer stateStore.Close(ctx) rp := &asyncRequestParser{ sessionId: sessionId, @@ -161,7 +161,7 @@ func main() { case _ = <-cint: case _ = <-cterm: } - sh.Shutdown() + sh.Shutdown(ctx) }() for true { @@ -177,7 +177,7 @@ func main() { fmt.Errorf("error in output: %v", err) os.Exit(1) } - rqs, err = sh.Reset(rqs) + rqs, err = sh.Reset(ctx, rqs) if err != nil { logg.ErrorCtxf(ctx, "error in reset: %v", "err", err) fmt.Errorf("error in reset: %v", err) diff --git a/cmd/http/main.go b/cmd/http/main.go index 10f0874..a024808 100644 --- a/cmd/http/main.go +++ b/cmd/http/main.go @@ -101,7 +101,6 @@ func main() { fmt.Fprintf(os.Stderr, err.Error()) os.Exit(1) } - defer userdataStore.Close() dbResource, ok := rs.(*resource.DbResource) if !ok { @@ -129,7 +128,6 @@ func main() { fmt.Fprintf(os.Stderr, err.Error()) os.Exit(1) } - defer stateStore.Close() //accountService := services.New(ctx, menuStorageService, connData) @@ -140,7 +138,10 @@ func main() { Addr: fmt.Sprintf("%s:%s", host, strconv.Itoa(int(port))), Handler: sh, } - s.RegisterOnShutdown(sh.Shutdown) + shutdownFunc := func() { + sh.Shutdown(ctx) + } + s.RegisterOnShutdown(shutdownFunc) cint := make(chan os.Signal) cterm := make(chan os.Signal) diff --git a/cmd/main.go b/cmd/main.go index 81aad6f..a6351b4 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -5,7 +5,9 @@ import ( "flag" "fmt" "os" + "os/signal" "path" + "syscall" "git.defalsify.org/vise.git/engine" "git.defalsify.org/vise.git/logging" @@ -135,6 +137,18 @@ func main() { en = en.WithDebug(nil) } + cint := make(chan os.Signal) + cterm := make(chan os.Signal) + signal.Notify(cint, os.Interrupt, syscall.SIGINT) + signal.Notify(cterm, os.Interrupt, syscall.SIGTERM) + go func() { + select { + case _ = <-cint: + case _ = <-cterm: + } + menuStorageService.Close(ctx) + }() + err = engine.Loop(ctx, en, os.Stdin, os.Stdout, nil) if err != nil { fmt.Fprintf(os.Stderr, "loop exited with error: %v\n", err) diff --git a/cmd/ssh/main.go b/cmd/ssh/main.go index c04252b..5119a88 100644 --- a/cmd/ssh/main.go +++ b/cmd/ssh/main.go @@ -102,7 +102,7 @@ func main() { } defer func() { logg.TraceCtxf(ctx, "shutdown auth key store reached") - err = authKeyStore.Close() + err = authKeyStore.Close(ctx) if err != nil { logg.ErrorCtxf(ctx, "keystore close error", "err", err) } diff --git a/cmd/ssh/sshkey/main.go b/cmd/ssh/sshkey/main.go index 3aac78c..b05fe06 100644 --- a/cmd/ssh/sshkey/main.go +++ b/cmd/ssh/sshkey/main.go @@ -34,7 +34,7 @@ func main() { fmt.Fprintf(os.Stderr, "%v\n", err) os.Exit(1) } - defer store.Close() + defer store.Close(ctx) err = store.AddFromFile(ctx, sshKeyFile, sessionId) if err != nil { diff --git a/devtools/store/dump/main.go b/devtools/store/dump/main.go index c1879bf..34e4400 100644 --- a/devtools/store/dump/main.go +++ b/devtools/store/dump/main.go @@ -93,7 +93,7 @@ func main() { fmt.Printf(r) } - err = store.Close() + err = store.Close(ctx) if err != nil { fmt.Fprintf(os.Stderr, err.Error()) os.Exit(1) diff --git a/go.mod b/go.mod index 187953f..b6ca4b6 100644 --- a/go.mod +++ b/go.mod @@ -3,11 +3,11 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250118155735-c1256156ed8b + git.defalsify.org/vise.git v0.2.3-0.20250119084238-8ad1d92d2127 git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f - git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250115003256-c0534ede1b63 - git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250113103030-f0b2056fd87d + git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250119094010-c9b92191f3ad + git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119094241-c3a51127772d github.com/alecthomas/assert/v2 v2.2.2 github.com/gofrs/uuid v4.4.0+incompatible github.com/grassrootseconomics/ussd-data-service v1.2.0-beta diff --git a/go.sum b/go.sum index f45e963..be0c921 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,13 @@ -git.defalsify.org/vise.git v0.2.3-0.20250118155735-c1256156ed8b h1:ac6OThj6nqQb3TUyXHqv/vQOQUQZ98XKpYTBHZFbxUI= -git.defalsify.org/vise.git v0.2.3-0.20250118155735-c1256156ed8b/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250119084238-8ad1d92d2127 h1:4AZoazfzGAHGNMn3kAWsXZQGO3Sme4PYLV8gvMjIZ0A= +git.defalsify.org/vise.git v0.2.3-0.20250119084238-8ad1d92d2127/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 h1:BenzGx6aDHKDwE23/mWIFD2InYIXyzHroZWV3MF5WUk= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f h1:FgccQi8vipX6dUt+GRiRDYHMR3UqC+plz73vw7y3fyU= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f/go.mod h1:tbA4whUGMUIDgQVdIW0sxWPuuXOvZRSny5zeku5hX4k= -git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250115003256-c0534ede1b63 h1:bX7klKZpX+ZZu1LKbtOXDAhV/KK0YwExehiIi0jusAM= -git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250115003256-c0534ede1b63/go.mod h1:Syw9TZyigPAM7t9FvicOm36iUnidt45f0SxzT2JniQ8= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250113103030-f0b2056fd87d h1:q/NO1rEgK3pia32D/tCq5hXfEuJp84COZRwceFvy/MM= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250113103030-f0b2056fd87d/go.mod h1:AH15xABcvaJr1TCGlih3oGSuwWC0E5IdbHQwuu+E1KI= +git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250119094010-c9b92191f3ad h1:hZCsa0rHn2r0S1ToaPbPSN05W71dLSndyPYE9J/gv2Y= +git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250119094010-c9b92191f3ad/go.mod h1:jukqi0wbhwsVKywcq8XUnjLnLak/iuxpkrUpAOoTJBE= +git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119094241-c3a51127772d h1:ikmaRBGMG0KMxZpcO0yC4tyCJkgWrbXkpisl3m1lKoY= +git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119094241-c3a51127772d/go.mod h1:2EBjn9MKNe3DUep+NljRU/AczgKmRoUwEb6yIO+Atx0= github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= github.com/alecthomas/participle/v2 v2.0.0 h1:Fgrq+MbuSsJwIkw3fEj9h75vDP0Er5JzepJ0/HNHv0g= diff --git a/handlers/application/menuhandler_test.go b/handlers/application/menuhandler_test.go index 4c0fa7f..1ec3177 100644 --- a/handlers/application/menuhandler_test.go +++ b/handlers/application/menuhandler_test.go @@ -54,7 +54,7 @@ func InitializeTestStore(t *testing.T) (context.Context, *store.UserDataStore) { store := &store.UserDataStore{Db: db} t.Cleanup(func() { - db.Close() // Ensure the DB is closed after each test + db.Close(ctx) // Ensure the DB is closed after each test }) return ctx, store diff --git a/ssh/keystore.go b/ssh/keystore.go index 85c703f..1219e0d 100644 --- a/ssh/keystore.go +++ b/ssh/keystore.go @@ -63,6 +63,6 @@ func(s *SshKeyStore) Get(ctx context.Context, pubKey ssh.PublicKey) (string, err return string(v), nil } -func(s *SshKeyStore) Close() error { - return s.store.Close() +func(s *SshKeyStore) Close(ctx context.Context) error { + return s.store.Close(ctx) } diff --git a/ssh/ssh.go b/ssh/ssh.go index 18e930d..6408f76 100644 --- a/ssh/ssh.go +++ b/ssh/ssh.go @@ -194,7 +194,7 @@ func(s *SshRunner) GetEngine(sessionId string) (engine.Engine, func(), error) { } // TODO: this is getting very hacky! closer := func() { - err := menuStorageService.Close() + err := menuStorageService.Close(ctx) if err != nil { logg.ErrorCtxf(ctx, "menu storage service cleanup fail", "err", err) } @@ -268,7 +268,7 @@ func(s *SshRunner) Run(ctx context.Context, keyStore *SshKeyStore) { return } defer func() { - err := en.Finish() + err := en.Finish(ctx) if err != nil { logg.ErrorCtxf(ctx, "engine won't stop", "err", err) } diff --git a/store/vouchers_test.go b/store/vouchers_test.go index 5e3a99b..a98ffc3 100644 --- a/store/vouchers_test.go +++ b/store/vouchers_test.go @@ -27,7 +27,7 @@ func InitializeTestDb(t *testing.T) (context.Context, *UserDataStore) { store := &UserDataStore{Db: db} t.Cleanup(func() { - db.Close() // Ensure the DB is closed after each test + db.Close(ctx) // Ensure the DB is closed after each test }) return ctx, store diff --git a/testutil/engine.go b/testutil/engine.go index 6c37c87..8f3c2f7 100644 --- a/testutil/engine.go +++ b/testutil/engine.go @@ -195,12 +195,12 @@ func TestEngine(sessionId string) (engine.Engine, func(), chan bool) { en := lhs.GetEngine() en = en.WithFirst(hl.Init) cleanFn := func() { - err := en.Finish() + err := en.Finish(ctx) if err != nil { logg.Errorf(err.Error()) } - err = menuStorageService.Close() + err = menuStorageService.Close(ctx) if err != nil { logg.Errorf(err.Error()) } -- 2.45.2 From 0f54ab4b4af2b5dc3c053f2b5d635b18afbacf5f Mon Sep 17 00:00:00 2001 From: lash Date: Sun, 19 Jan 2025 11:11:34 +0000 Subject: [PATCH 08/16] Update deps, fix connbusy error in postgres get --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index b6ca4b6..d874429 100644 --- a/go.mod +++ b/go.mod @@ -3,11 +3,11 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250119084238-8ad1d92d2127 + git.defalsify.org/vise.git v0.2.3-0.20250119110446-6c29d5ba580a git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f - git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250119094010-c9b92191f3ad - git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119094241-c3a51127772d + git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250119110807-c5bb1c80a55d + git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119111003-681d58fad95b github.com/alecthomas/assert/v2 v2.2.2 github.com/gofrs/uuid v4.4.0+incompatible github.com/grassrootseconomics/ussd-data-service v1.2.0-beta diff --git a/go.sum b/go.sum index be0c921..72de5d0 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,13 @@ -git.defalsify.org/vise.git v0.2.3-0.20250119084238-8ad1d92d2127 h1:4AZoazfzGAHGNMn3kAWsXZQGO3Sme4PYLV8gvMjIZ0A= -git.defalsify.org/vise.git v0.2.3-0.20250119084238-8ad1d92d2127/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250119110446-6c29d5ba580a h1:LXg7l5g3jiNSKWCwjO2nmMyZcNYZzuNPyuxiFtfOE6U= +git.defalsify.org/vise.git v0.2.3-0.20250119110446-6c29d5ba580a/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 h1:BenzGx6aDHKDwE23/mWIFD2InYIXyzHroZWV3MF5WUk= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f h1:FgccQi8vipX6dUt+GRiRDYHMR3UqC+plz73vw7y3fyU= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f/go.mod h1:tbA4whUGMUIDgQVdIW0sxWPuuXOvZRSny5zeku5hX4k= -git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250119094010-c9b92191f3ad h1:hZCsa0rHn2r0S1ToaPbPSN05W71dLSndyPYE9J/gv2Y= -git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250119094010-c9b92191f3ad/go.mod h1:jukqi0wbhwsVKywcq8XUnjLnLak/iuxpkrUpAOoTJBE= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119094241-c3a51127772d h1:ikmaRBGMG0KMxZpcO0yC4tyCJkgWrbXkpisl3m1lKoY= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119094241-c3a51127772d/go.mod h1:2EBjn9MKNe3DUep+NljRU/AczgKmRoUwEb6yIO+Atx0= +git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250119110807-c5bb1c80a55d h1:s3bxpfFSIMgEzFxRSsiCBUWzvddEkpc/5eD57xzDj/M= +git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250119110807-c5bb1c80a55d/go.mod h1:mGZ7IPJtQcqhdo+ahxs+pAVKUowTpQ+2kMxfJ3/j3q8= +git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119111003-681d58fad95b h1:OHs6PzAgiConvOoDcYthtWi4ioyivR36mzKx5wHUsRc= +git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119111003-681d58fad95b/go.mod h1:qmGSnl1BZAIHY+NdaGbkwHsngtPMru6yeCwS5KkrPsE= github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= github.com/alecthomas/participle/v2 v2.0.0 h1:Fgrq+MbuSsJwIkw3fEj9h75vDP0Er5JzepJ0/HNHv0g= -- 2.45.2 From 8d5d3f1dc87ae29f086c4977184cc38e400cc7f9 Mon Sep 17 00:00:00 2001 From: lash Date: Sun, 19 Jan 2025 16:32:55 +0000 Subject: [PATCH 09/16] WIP implement multi connstr config --- cmd/africastalking/main.go | 24 +++++++++++------------- cmd/async/main.go | 26 +++++++++++++------------- cmd/http/main.go | 24 ++++++++++++------------ cmd/main.go | 23 +++++++++++------------ cmd/ssh/main.go | 28 ++++++++++++---------------- config/args.go | 17 +++++++++++++++++ config/config.go | 9 ++++----- devtools/admin/main.go | 24 +++++++++++++----------- devtools/store/dump/main.go | 20 ++++++++++---------- internal/cmd/cmd.go | 5 +++-- services/local.go | 2 +- ssh/ssh.go | 7 +++---- testutil/engine.go | 24 +++++++++++++++++++----- 13 files changed, 129 insertions(+), 104 deletions(-) create mode 100644 config/args.go diff --git a/cmd/africastalking/main.go b/cmd/africastalking/main.go index 483cb19..ef72f5d 100644 --- a/cmd/africastalking/main.go +++ b/cmd/africastalking/main.go @@ -36,8 +36,7 @@ var ( func main() { config.LoadConfig() - var connStr string - var resourceDir string + var override config.Override var size uint var engineDebug bool var host string @@ -46,10 +45,11 @@ func main() { var gettextDir string var langs args.LangVar - - flag.StringVar(&resourceDir, "resourcedir", path.Join("services", "registration"), "resource dir") - flag.StringVar(&connStr, "c", "", "connection string") flag.BoolVar(&engineDebug, "d", false, "use engine debug output") + flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(&override.StateConn, "state", "?", "state store connection string") flag.UintVar(&size, "s", 160, "max size of output") flag.StringVar(&host, "h", config.Host(), "http host") flag.UintVar(&port, "p", config.Port(), "http port") @@ -57,16 +57,14 @@ func main() { flag.Var(&langs, "language", "add symbol resolution for language") flag.Parse() - if connStr == "" { - connStr = config.DbConn() - } - connData, err := storage.ToConnData(connStr) + config.Apply(&override) + conns, err := config.GetConns() if err != nil { - fmt.Fprintf(os.Stderr, "connstr err: %v", err) + fmt.Fprintf(os.Stderr, "conn specification error: %v\n", err) os.Exit(1) } - logg.Infof("start command", "build", build, "conn", connData, "resourcedir", resourceDir, "outputsize", size) + logg.Infof("start command", "build", build, "conn", conns, "outputsize", size) ctx := context.Background() ln, err := lang.LanguageFromCode(config.Language()) @@ -89,7 +87,7 @@ func main() { cfg.EngineDebug = true } - menuStorageService := storage.NewMenuStorageService(connData, resourceDir) + menuStorageService := storage.NewMenuStorageService(conns) rs, err := menuStorageService.GetResource(ctx) if err != nil { fmt.Fprintf(os.Stderr, "menustorageservice: %v\n", err) @@ -119,7 +117,7 @@ func main() { os.Exit(1) } - accountService := services.New(ctx, menuStorageService, connData) + accountService := services.New(ctx, menuStorageService) hl, err := lhs.GetHandler(accountService) if err != nil { diff --git a/cmd/async/main.go b/cmd/async/main.go index b092fba..2241c17 100644 --- a/cmd/async/main.go +++ b/cmd/async/main.go @@ -43,10 +43,9 @@ func (p *asyncRequestParser) GetInput(r any) ([]byte, error) { func main() { config.LoadConfig() - - var connStr string + + var override config.Override var sessionId string - var resourceDir string var size uint var engineDebug bool var host string @@ -56,8 +55,11 @@ func main() { var langs args.LangVar flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") - flag.StringVar(&resourceDir, "resourcedir", path.Join("services", "registration"), "resource dir") - flag.StringVar(&connStr, "c", "", "connection string") + flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(&override.StateConn, "state", "?", "state store connection string") + flag.BoolVar(&engineDebug, "d", false, "use engine debug output") flag.UintVar(&size, "s", 160, "max size of output") flag.StringVar(&host, "h", config.Host(), "http host") @@ -66,16 +68,14 @@ func main() { flag.Var(&langs, "language", "add symbol resolution for language") flag.Parse() - if connStr == "" { - connStr = config.DbConn() - } - connData, err := storage.ToConnData(connStr) + config.Apply(&override) + conns, err := config.GetConns() if err != nil { - fmt.Fprintf(os.Stderr, "connstr err: %v", err) + fmt.Fprintf(os.Stderr, "conn specification error: %v\n", err) os.Exit(1) } - logg.Infof("start command", "conn", connData, "resourcedir", resourceDir, "outputsize", size, "sessionId", sessionId) + logg.Infof("start command", "conn", conns, "outputsize", size, "sessionId", sessionId) ctx := context.Background() @@ -99,7 +99,7 @@ func main() { cfg.EngineDebug = true } - menuStorageService := storage.NewMenuStorageService(connData, resourceDir) + menuStorageService := storage.NewMenuStorageService(conns) if err != nil { fmt.Fprintf(os.Stderr, err.Error()) os.Exit(1) @@ -126,7 +126,7 @@ func main() { lhs, err := handlers.NewLocalHandlerService(ctx, pfp, true, dbResource, cfg, rs) lhs.SetDataStore(&userdataStore) - accountService := services.New(ctx, menuStorageService, connData) + accountService := services.New(ctx, menuStorageService) hl, err := lhs.GetHandler(accountService) if err != nil { diff --git a/cmd/http/main.go b/cmd/http/main.go index a024808..f2e5813 100644 --- a/cmd/http/main.go +++ b/cmd/http/main.go @@ -35,8 +35,7 @@ var ( func main() { config.LoadConfig() - var connStr string - var resourceDir string + var override config.Override var size uint var engineDebug bool var host string @@ -45,8 +44,11 @@ func main() { var gettextDir string var langs args.LangVar - flag.StringVar(&resourceDir, "resourcedir", path.Join("services", "registration"), "resource dir") - flag.StringVar(&connStr, "c", "", "connection string") +flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(&override.StateConn, "state", "?", "state store connection string") + flag.BoolVar(&engineDebug, "d", false, "use engine debug output") flag.UintVar(&size, "s", 160, "max size of output") flag.StringVar(&host, "h", config.Host(), "http host") @@ -55,16 +57,14 @@ func main() { flag.Var(&langs, "language", "add symbol resolution for language") flag.Parse() - if connStr == "" { - connStr = config.DbConn() - } - connData, err := storage.ToConnData(connStr) + config.Apply(&override) + conns, err := config.GetConns() if err != nil { - fmt.Fprintf(os.Stderr, "connstr err: %v", err) + fmt.Fprintf(os.Stderr, "conn specification error: %v\n", err) os.Exit(1) } - logg.Infof("start command", "conn", connData, "resourcedir", resourceDir, "outputsize", size) + logg.Infof("start command", "conn", conns, "outputsize", size) ctx := context.Background() @@ -88,7 +88,7 @@ func main() { cfg.EngineDebug = true } - menuStorageService := storage.NewMenuStorageService(connData, resourceDir) + menuStorageService := storage.NewMenuStorageService(conns) rs, err := menuStorageService.GetResource(ctx) if err != nil { @@ -115,7 +115,7 @@ func main() { os.Exit(1) } - accountService := services.New(ctx, menuStorageService, connData) + accountService := services.New(ctx, menuStorageService) hl, err := lhs.GetHandler(accountService) if err != nil { diff --git a/cmd/main.go b/cmd/main.go index a6351b4..defd00e 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -29,34 +29,33 @@ var ( func main() { config.LoadConfig() - var connStr string + var override config.Override var size uint var sessionId string var engineDebug bool - var resourceDir string var err error var gettextDir string var langs args.LangVar - flag.StringVar(&resourceDir, "resourcedir", scriptDir, "resource dir") flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") - flag.StringVar(&connStr, "c", "", "connection string") + flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(&override.StateConn, "state", "?", "state store connection string") flag.BoolVar(&engineDebug, "d", false, "use engine debug output") flag.UintVar(&size, "s", 160, "max size of output") flag.StringVar(&gettextDir, "gettext", "", "use gettext translations from given directory") flag.Var(&langs, "language", "add symbol resolution for language") flag.Parse() - if connStr == "" { - connStr = config.DbConn() - } - connData, err := storage.ToConnData(connStr) + config.Apply(&override) + conns, err := config.GetConns() if err != nil { - fmt.Fprintf(os.Stderr, "connstr err: %v\n", err) + fmt.Fprintf(os.Stderr, "conn specification error: %v\n", err) os.Exit(1) } - logg.Infof("start command", "conn", connData, "outputsize", size) + logg.Infof("start command", "conn", conns, "outputsize", size) if len(langs.Langs()) == 0 { langs.Set(config.Language()) @@ -82,7 +81,7 @@ func main() { MenuSeparator: menuSeparator, } - menuStorageService := storage.NewMenuStorageService(connData, resourceDir) + menuStorageService := storage.NewMenuStorageService(conns) if err != nil { fmt.Fprintf(os.Stderr, "menu storage service error: %v\n", err) os.Exit(1) @@ -124,7 +123,7 @@ func main() { os.Exit(1) } - accountService := services.New(ctx, menuStorageService, connData) + accountService := services.New(ctx, menuStorageService) hl, err := lhs.GetHandler(accountService) if err != nil { fmt.Fprintf(os.Stderr, "get accounts service handler: %v\n", err) diff --git a/cmd/ssh/main.go b/cmd/ssh/main.go index 5119a88..e375ad1 100644 --- a/cmd/ssh/main.go +++ b/cmd/ssh/main.go @@ -31,34 +31,31 @@ var ( func main() { config.LoadConfig() - var connStr string + var override config.Override var authConnStr string - var resourceDir string var size uint var engineDebug bool var stateDebug bool var host string var port uint - flag.StringVar(&connStr, "c", "", "connection string") - flag.StringVar(&authConnStr, "authdb", "", "auth connection string") - flag.StringVar(&resourceDir, "resourcedir", path.Join("services", "registration"), "resource dir") + //flag.StringVar(&authConnStr, "authdb", "", "auth connection string") + flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(&override.StateConn, "state", "?", "state store connection string") flag.BoolVar(&engineDebug, "d", false, "use engine debug output") flag.UintVar(&size, "s", 160, "max size of output") flag.StringVar(&host, "h", config.HostSSH(), "socket host") flag.UintVar(&port, "p", config.PortSSH(), "socket port") flag.Parse() - if connStr == "" { - connStr = config.DbConn() - } - if authConnStr == "" { - authConnStr = connStr - } - connData, err := storage.ToConnData(connStr) + config.Apply(&override) + conns, err := config.GetConns() if err != nil { - fmt.Fprintf(os.Stderr, "connstr err: %v", err) + fmt.Fprintf(os.Stderr, "conn specification error: %v\n", err) os.Exit(1) } + authConnData, err := storage.ToConnData(authConnStr) if err != nil { fmt.Fprintf(os.Stderr, "auth connstr err: %v", err) @@ -79,7 +76,7 @@ func main() { logg.WarnCtxf(ctx, "!!!!! Do not expose to internet and only use with tunnel!") logg.WarnCtxf(ctx, "!!!!! (See ssh -L <...>)") - logg.Infof("start command", "conn", connData, "authconn", authConnData, "resourcedir", resourceDir, "outputsize", size, "keyfile", sshKeyFile, "host", host, "port", port) + logg.Infof("start command", "conn", conns, "authconn", authConnData, "outputsize", size, "keyfile", sshKeyFile, "host", host, "port", port) pfp := path.Join(scriptDir, "pp.csv") @@ -117,8 +114,7 @@ func main() { Cfg: cfg, Debug: engineDebug, FlagFile: pfp, - Conn: connData, - ResourceDir: resourceDir, + Conn: conns, SrvKeyFile: sshKeyFile, Host: host, Port: port, diff --git a/config/args.go b/config/args.go new file mode 100644 index 0000000..969d221 --- /dev/null +++ b/config/args.go @@ -0,0 +1,17 @@ +package config + +import ( + viseconfig "git.grassecon.net/grassrootseconomics/visedriver/config" +) + +type Override struct { + DbConn string + StateConn string + ResourceConn string + UserConn string +} + +func Apply(o *Override) error { + viseconfig.ApplyConn(&o.DbConn, &o.StateConn, &o.ResourceConn, &o.UserConn) + return nil +} diff --git a/config/config.go b/config/config.go index 61521f2..0a1b5c1 100644 --- a/config/config.go +++ b/config/config.go @@ -6,6 +6,10 @@ import ( apiconfig "git.grassecon.net/grassrootseconomics/sarafu-api/config" ) +var ( + GetConns = viseconfig.GetConns +) + func init() { env.LoadEnvVariables() } @@ -17,7 +21,6 @@ const ( defaultHTTPPort uint = 7123 ) - func LoadConfig() error { err := viseconfig.LoadConfig() if err != nil { @@ -30,10 +33,6 @@ func LoadConfig() error { return nil } -func DbConn() string { - return viseconfig.DbConn -} - func Language() string { return viseconfig.DefaultLanguage } diff --git a/devtools/admin/main.go b/devtools/admin/main.go index 3ef0466..762360f 100644 --- a/devtools/admin/main.go +++ b/devtools/admin/main.go @@ -24,21 +24,23 @@ func main() { config.LoadConfig() var sessionId string - var connStr string + var override config.Override flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") - flag.StringVar(&connStr, "c", "", "connection string") + flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(&override.StateConn, "state", "?", "state store connection string") + flag.Parse() - - if connStr == "" { - connStr = config.DbConn() - } - connData, err := storage.ToConnData(connStr) + config.Apply(&override) + conns, err := config.GetConns() if err != nil { - fmt.Fprintf(os.Stderr, "connstr err: %v\n", err) + fmt.Fprintf(os.Stderr, "conn specification error: %v\n", err) os.Exit(1) } + ctx := context.Background() ctx = context.WithValue(ctx, "SessionId", sessionId) @@ -49,16 +51,16 @@ func main() { os.Exit(1) } - x := cmd.NewCmd(connData, sessionId, flagParser) + x := cmd.NewCmd(sessionId, flagParser) err = x.Parse(flag.Args()) if err != nil { fmt.Fprintf(os.Stderr, "cmd parse fail: %v\n", err) os.Exit(1) } - logg.Infof("start command", "conn", connData, "subcmd", x) + logg.Infof("start command", "conn", conns, "subcmd", x) - menuStorageService := storage.NewMenuStorageService(connData, "") + menuStorageService := storage.NewMenuStorageService(conns) if err != nil { fmt.Fprintf(os.Stderr, "menu storage service error: %v\n", err) os.Exit(1) diff --git a/devtools/store/dump/main.go b/devtools/store/dump/main.go index 34e4400..c0cb2bd 100644 --- a/devtools/store/dump/main.go +++ b/devtools/store/dump/main.go @@ -32,7 +32,7 @@ func formatItem(k []byte, v []byte, sessionId string) (string, error) { func main() { config.LoadConfig() - var connStr string + var override config.Override var sessionId string var database string var engineDebug bool @@ -40,27 +40,27 @@ func main() { var first bool flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") - flag.StringVar(&connStr, "c", "", "connection string") + flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(&override.StateConn, "state", "?", "state store connection string") flag.BoolVar(&engineDebug, "d", false, "use engine debug output") flag.Parse() - if connStr == "" { - connStr = config.DbConn() - } - connData, err := storage.ToConnData(connStr) + config.Apply(&override) + conns, err := config.GetConns() if err != nil { - fmt.Fprintf(os.Stderr, "connstr err: %v\n", err) + fmt.Fprintf(os.Stderr, "conn specification error: %v\n", err) os.Exit(1) } - logg.Infof("start command", "conn", connData) + logg.Infof("start command", "conn", conns) ctx := context.Background() ctx = context.WithValue(ctx, "SessionId", sessionId) ctx = context.WithValue(ctx, "Database", database) - resourceDir := scriptDir - menuStorageService := storage.NewMenuStorageService(connData, resourceDir) + menuStorageService := storage.NewMenuStorageService(conns) store, err := menuStorageService.GetUserdataDb(ctx) if err != nil { diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index 1ebfd11..fe98f31 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -22,9 +22,10 @@ type Cmd struct { exec func(ctx context.Context, ss storage.StorageService) error } -func NewCmd(conn storage.ConnData, sessionId string, flagParser *application.FlagManager) *Cmd { +//func NewCmd(conn storage.ConnData, sessionId string, flagParser *application.FlagManager) *Cmd { +func NewCmd(sessionId string, flagParser *application.FlagManager) *Cmd { return &Cmd{ - conn: conn, +// conn: conn, sessionId: sessionId, flagParser: flagParser, } diff --git a/services/local.go b/services/local.go index e79c8fb..3f266a9 100644 --- a/services/local.go +++ b/services/local.go @@ -37,7 +37,7 @@ func (d *localEmitter) emit(ctx context.Context, msg apievent.Msg) error { return err } -func New(ctx context.Context, storageService storage.StorageService, conn storage.ConnData) remote.AccountService { +func New(ctx context.Context, storageService storage.StorageService) remote.AccountService { svc := devremote.NewDevAccountService(ctx, storageService) svc = svc.WithAutoVoucher(ctx, "FOO", 42) eu := event.NewEventsUpdater(svc, storageService) diff --git a/ssh/ssh.go b/ssh/ssh.go index 6408f76..530291d 100644 --- a/ssh/ssh.go +++ b/ssh/ssh.go @@ -75,8 +75,7 @@ type SshRunner struct { Ctx context.Context Cfg engine.Config FlagFile string - Conn storage.ConnData - ResourceDir string + Conn storage.Conns Debug bool SrvKeyFile string Host string @@ -148,7 +147,7 @@ func(s *SshRunner) Stop() error { func(s *SshRunner) GetEngine(sessionId string) (engine.Engine, func(), error) { ctx := s.Ctx - menuStorageService := storage.NewMenuStorageService(s.Conn, s.ResourceDir) + menuStorageService := storage.NewMenuStorageService(s.Conn) rs, err := menuStorageService.GetResource(ctx) if err != nil { @@ -180,7 +179,7 @@ func(s *SshRunner) GetEngine(sessionId string) (engine.Engine, func(), error) { } // TODO: clear up why pointer here and by-value other cmds - accountService := services.New(ctx, menuStorageService, s.Conn) + accountService := services.New(ctx, menuStorageService) hl, err := lhs.GetHandler(accountService) if err != nil { diff --git a/testutil/engine.go b/testutil/engine.go index 8f3c2f7..37e89a9 100644 --- a/testutil/engine.go +++ b/testutil/engine.go @@ -112,10 +112,16 @@ func TestEngine(sessionId string) (engine.Engine, func(), chan bool) { } if setDbType == "postgres" { - setConnStr = config.DbConn + conns, err := config.GetConns() + if err != nil { + fmt.Fprintf(os.Stderr, "Getconns error: %v", err) + os.Exit(1) + } + conn := conns[storage.STORETYPE_USER] + setConnStr = conn.String() setConnStr, err = updateSearchPath(setConnStr, setDbSchema) if err != nil { - fmt.Println("Error:", err) + fmt.Fprintf(os.Stderr, "Update search paths Error: %v\n", err) os.Exit(1) } } else { @@ -125,15 +131,23 @@ func TestEngine(sessionId string) (engine.Engine, func(), chan bool) { os.Exit(1) } } - conn, err := storage.ToConnData(setConnStr) if err != nil { fmt.Fprintf(os.Stderr, "connstr parse err: %v", err) os.Exit(1) } + conns := storage.NewConns() + conns.Set(conn, storage.STORETYPE_STATE) + conns.Set(conn, storage.STORETYPE_USER) + + conn, err = storage.ToConnData(scriptDir) + if err != nil { + fmt.Fprintf(os.Stderr, "connstr parse err: %v", err) + os.Exit(1) + } + conns.Set(conn, storage.STORETYPE_RESOURCE) - resourceDir := scriptDir - menuStorageService := storage.NewMenuStorageService(conn, resourceDir) + menuStorageService := storage.NewMenuStorageService(conns) rs, err := menuStorageService.GetResource(ctx) if err != nil { -- 2.45.2 From 20feef4103777efd88f16a9f71ac33de399882c4 Mon Sep 17 00:00:00 2001 From: lash Date: Sun, 19 Jan 2025 18:27:47 +0000 Subject: [PATCH 10/16] WIP integrate multiple conns, menutraversal now panics --- testutil/engine.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/testutil/engine.go b/testutil/engine.go index 37e89a9..67e5d60 100644 --- a/testutil/engine.go +++ b/testutil/engine.go @@ -13,6 +13,7 @@ import ( testdataloader "github.com/peteole/testdata-loader" "github.com/jackc/pgx/v5/pgxpool" "git.defalsify.org/vise.git/engine" + fsdb "git.defalsify.org/vise.git/db/fs" "git.defalsify.org/vise.git/logging" "git.defalsify.org/vise.git/resource" "git.grassecon.net/grassrootseconomics/visedriver/env" @@ -139,15 +140,20 @@ func TestEngine(sessionId string) (engine.Engine, func(), chan bool) { conns := storage.NewConns() conns.Set(conn, storage.STORETYPE_STATE) conns.Set(conn, storage.STORETYPE_USER) - + conn, err = storage.ToConnData(scriptDir) if err != nil { fmt.Fprintf(os.Stderr, "connstr parse err: %v", err) os.Exit(1) } - conns.Set(conn, storage.STORETYPE_RESOURCE) - + resourceConn := fsdb.NewFsDb() + err = resourceConn.Connect(ctx, scriptDir) + if err != nil { + fmt.Fprintf(os.Stderr, "resource connect err: %v", err) + os.Exit(1) + } menuStorageService := storage.NewMenuStorageService(conns) + menuStorageService = menuStorageService.WithDb(resourceConn, storage.STORETYPE_RESOURCE) rs, err := menuStorageService.GetResource(ctx) if err != nil { -- 2.45.2 From 933943636e3890a33cce4f40c23129af201ea673 Mon Sep 17 00:00:00 2001 From: lash Date: Mon, 20 Jan 2025 10:28:42 +0000 Subject: [PATCH 11/16] Implement conns in testutil --- cmd/africastalking/main.go | 8 +- cmd/async/main.go | 8 +- cmd/http/main.go | 8 +- cmd/main.go | 8 +- cmd/ssh/main.go | 8 +- config/args.go | 10 +- config/config.go | 10 +- devtools/admin/main.go | 9 +- devtools/store/dump/main.go | 8 +- internal/cmd/cmd.go | 2 - menutraversal_test/menu_traversal_test.go | 19 ++- testutil/engine.go | 153 ++++++---------------- testutil/fsdb.go | 21 +++ testutil/setup.go | 32 +++++ 14 files changed, 144 insertions(+), 160 deletions(-) create mode 100644 testutil/fsdb.go create mode 100644 testutil/setup.go diff --git a/cmd/africastalking/main.go b/cmd/africastalking/main.go index ef72f5d..da54be8 100644 --- a/cmd/africastalking/main.go +++ b/cmd/africastalking/main.go @@ -46,10 +46,10 @@ func main() { var langs args.LangVar flag.BoolVar(&engineDebug, "d", false, "use engine debug output") - flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") - flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") - flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") - flag.StringVar(&override.StateConn, "state", "?", "state store connection string") + flag.StringVar(override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(override.StateConn, "state", "?", "state store connection string") flag.UintVar(&size, "s", 160, "max size of output") flag.StringVar(&host, "h", config.Host(), "http host") flag.UintVar(&port, "p", config.Port(), "http port") diff --git a/cmd/async/main.go b/cmd/async/main.go index 2241c17..85266d0 100644 --- a/cmd/async/main.go +++ b/cmd/async/main.go @@ -55,10 +55,10 @@ func main() { var langs args.LangVar flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") - flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") - flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") - flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") - flag.StringVar(&override.StateConn, "state", "?", "state store connection string") + flag.StringVar(override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(override.StateConn, "state", "?", "state store connection string") flag.BoolVar(&engineDebug, "d", false, "use engine debug output") flag.UintVar(&size, "s", 160, "max size of output") diff --git a/cmd/http/main.go b/cmd/http/main.go index f2e5813..3618bb9 100644 --- a/cmd/http/main.go +++ b/cmd/http/main.go @@ -44,10 +44,10 @@ func main() { var gettextDir string var langs args.LangVar -flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") - flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") - flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") - flag.StringVar(&override.StateConn, "state", "?", "state store connection string") + flag.StringVar(override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(override.StateConn, "state", "?", "state store connection string") flag.BoolVar(&engineDebug, "d", false, "use engine debug output") flag.UintVar(&size, "s", 160, "max size of output") diff --git a/cmd/main.go b/cmd/main.go index defd00e..ead2edb 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -38,10 +38,10 @@ func main() { var langs args.LangVar flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") - flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") - flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") - flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") - flag.StringVar(&override.StateConn, "state", "?", "state store connection string") + flag.StringVar(override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(override.StateConn, "state", "?", "state store connection string") flag.BoolVar(&engineDebug, "d", false, "use engine debug output") flag.UintVar(&size, "s", 160, "max size of output") flag.StringVar(&gettextDir, "gettext", "", "use gettext translations from given directory") diff --git a/cmd/ssh/main.go b/cmd/ssh/main.go index e375ad1..31d5f65 100644 --- a/cmd/ssh/main.go +++ b/cmd/ssh/main.go @@ -39,10 +39,10 @@ func main() { var host string var port uint //flag.StringVar(&authConnStr, "authdb", "", "auth connection string") - flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") - flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") - flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") - flag.StringVar(&override.StateConn, "state", "?", "state store connection string") + flag.StringVar(override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(override.StateConn, "state", "?", "state store connection string") flag.BoolVar(&engineDebug, "d", false, "use engine debug output") flag.UintVar(&size, "s", 160, "max size of output") flag.StringVar(&host, "h", config.HostSSH(), "socket host") diff --git a/config/args.go b/config/args.go index 969d221..18305a3 100644 --- a/config/args.go +++ b/config/args.go @@ -5,13 +5,13 @@ import ( ) type Override struct { - DbConn string - StateConn string - ResourceConn string - UserConn string + DbConn *string + StateConn *string + ResourceConn *string + UserConn *string } func Apply(o *Override) error { - viseconfig.ApplyConn(&o.DbConn, &o.StateConn, &o.ResourceConn, &o.UserConn) + viseconfig.ApplyConn(o.DbConn, o.StateConn, o.ResourceConn, o.UserConn) return nil } diff --git a/config/config.go b/config/config.go index 0a1b5c1..397c4c6 100644 --- a/config/config.go +++ b/config/config.go @@ -8,10 +8,15 @@ import ( var ( GetConns = viseconfig.GetConns + EnvPath string ) -func init() { - env.LoadEnvVariables() +func loadEnv() { + if EnvPath == "" { + env.LoadEnvVariables() + } else { + env.LoadEnvVariablesPath(EnvPath) + } } const ( @@ -22,6 +27,7 @@ const ( ) func LoadConfig() error { + loadEnv() err := viseconfig.LoadConfig() if err != nil { return err diff --git a/devtools/admin/main.go b/devtools/admin/main.go index 762360f..7508905 100644 --- a/devtools/admin/main.go +++ b/devtools/admin/main.go @@ -27,11 +27,10 @@ func main() { var override config.Override flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") - flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") - flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") - flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") - flag.StringVar(&override.StateConn, "state", "?", "state store connection string") - + flag.StringVar(override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(override.StateConn, "state", "?", "state store connection string") flag.Parse() config.Apply(&override) diff --git a/devtools/store/dump/main.go b/devtools/store/dump/main.go index c0cb2bd..dcbc4c7 100644 --- a/devtools/store/dump/main.go +++ b/devtools/store/dump/main.go @@ -40,10 +40,10 @@ func main() { var first bool flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") - flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") - flag.StringVar(&override.ResourceConn, "resource", "?", "resource connection string") - flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string") - flag.StringVar(&override.StateConn, "state", "?", "state store connection string") + flag.StringVar(override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)") + flag.StringVar(override.ResourceConn, "resource", "?", "resource connection string") + flag.StringVar(override.UserConn, "userdata", "?", "userdata store connection string") + flag.StringVar(override.StateConn, "state", "?", "state store connection string") flag.BoolVar(&engineDebug, "d", false, "use engine debug output") flag.Parse() diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index fe98f31..d693787 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -22,10 +22,8 @@ type Cmd struct { exec func(ctx context.Context, ss storage.StorageService) error } -//func NewCmd(conn storage.ConnData, sessionId string, flagParser *application.FlagManager) *Cmd { func NewCmd(sessionId string, flagParser *application.FlagManager) *Cmd { return &Cmd{ -// conn: conn, sessionId: sessionId, flagParser: flagParser, } diff --git a/menutraversal_test/menu_traversal_test.go b/menutraversal_test/menu_traversal_test.go index 3b546ae..381a508 100644 --- a/menutraversal_test/menu_traversal_test.go +++ b/menutraversal_test/menu_traversal_test.go @@ -10,11 +10,13 @@ import ( "testing" "github.com/gofrs/uuid" + "git.defalsify.org/vise.git/logging" "git.grassecon.net/grassrootseconomics/visedriver/testutil/driver" "git.grassecon.net/grassrootseconomics/sarafu-vise/testutil" ) var ( + logg = logging.NewVanilla().WithDomain("menutraversaltest") testData = driver.ReadData() sessionID string src = rand.NewSource(42) @@ -22,9 +24,6 @@ var ( ) var groupTestFile = flag.String("test-file", "group_test.json", "The test file to use for running the group tests") -var database = flag.String("db", "gdbm", "Specify the database (gdbm or postgres)") -var connStr = flag.String("conn", ".test_state", "connection string") -var dbSchema = flag.String("schema", "test", "Specify the database schema (default test)") func GenerateSessionId() string { uu := uuid.NewGenWithOptions(uuid.WithRandomReader(g)) @@ -80,12 +79,7 @@ func extractSendAmount(response []byte) string { } func TestMain(m *testing.M) { - // Parse the flags - flag.Parse() sessionID = GenerateSessionId() - // set the db - testutil.SetDatabase(*database, *connStr, *dbSchema) - // Cleanup the db after tests defer testutil.CleanDatabase() @@ -100,7 +94,8 @@ func TestAccountCreationSuccessful(t *testing.T) { for _, session := range sessions { groups := driver.FilterGroupsByName(session.Groups, "account_creation_successful") for _, group := range groups { - for _, step := range group.Steps { + for i, step := range group.Steps { + logg.TraceCtxf(ctx, "executing step", "i", i, "step", step) cont, err := en.Exec(ctx, []byte(step.Input)) if err != nil { t.Fatalf("Test case '%s' failed at input '%s': %v", group.Name, step.Input, err) @@ -142,7 +137,8 @@ func TestAccountRegistrationRejectTerms(t *testing.T) { for _, session := range sessions { groups := driver.FilterGroupsByName(session.Groups, "account_creation_reject_terms") for _, group := range groups { - for _, step := range group.Steps { + for i, step := range group.Steps { + logg.TraceCtxf(ctx, "executing step", "i", i, "step", step) cont, err := en.Exec(ctx, []byte(step.Input)) if err != nil { t.Fatalf("Test case '%s' failed at input '%s': %v", group.Name, step.Input, err) @@ -177,7 +173,8 @@ func TestMainMenuHelp(t *testing.T) { for _, session := range sessions { groups := driver.FilterGroupsByName(session.Groups, "main_menu_help") for _, group := range groups { - for _, step := range group.Steps { + for i, step := range group.Steps { + logg.TraceCtxf(ctx, "executing step", "i", i, "step", step) cont, err := en.Exec(ctx, []byte(step.Input)) if err != nil { t.Fatalf("Test case '%s' failed at input '%s': %v", group.Name, step.Input, err) diff --git a/testutil/engine.go b/testutil/engine.go index 67e5d60..50af445 100644 --- a/testutil/engine.go +++ b/testutil/engine.go @@ -4,20 +4,15 @@ import ( "context" "fmt" "log" - "net/url" "os" "path" "path/filepath" "time" - testdataloader "github.com/peteole/testdata-loader" "github.com/jackc/pgx/v5/pgxpool" "git.defalsify.org/vise.git/engine" - fsdb "git.defalsify.org/vise.git/db/fs" - "git.defalsify.org/vise.git/logging" "git.defalsify.org/vise.git/resource" - "git.grassecon.net/grassrootseconomics/visedriver/env" - "git.grassecon.net/grassrootseconomics/visedriver/config" + "git.grassecon.net/grassrootseconomics/sarafu-vise/config" "git.grassecon.net/grassrootseconomics/sarafu-vise/handlers" "git.grassecon.net/grassrootseconomics/visedriver/storage" "git.grassecon.net/grassrootseconomics/sarafu-api/testutil/testservice" @@ -26,81 +21,58 @@ import ( "git.grassecon.net/grassrootseconomics/sarafu-vise/testutil/testtag" ) -var ( - logg = logging.NewVanilla() - baseDir = testdataloader.GetBasePath() - scriptDir = path.Join(baseDir, "services", "registration") - setDbType string - setConnStr string - setDbSchema string -) - -func init() { - env.LoadEnvVariablesPath(baseDir) - config.LoadConfig() -} - -// SetDatabase updates the database used by TestEngine -func SetDatabase(database, connStr, dbSchema string) { - setDbType = database - setConnStr = connStr - setDbSchema = dbSchema -} - // CleanDatabase removes all test data from the database func CleanDatabase() { - if setDbType == "postgres" { - ctx := context.Background() - // Update the connection string with the new search path - updatedConnStr, err := updateSearchPath(setConnStr, setDbSchema) - if err != nil { - log.Fatalf("Failed to update search path: %v", err) - } + for _, v := range([]int8{ + storage.STORETYPE_STATE, + storage.STORETYPE_USER, + }) { + conn := conns[v] + logg.Infof("cleaning test database", "typ", v, "db", conn) + if conn.DbType() == storage.DBTYPE_POSTGRES { + ctx := context.Background() + // Update the connection string with the new search path + updatedConnStr := conn.String() - dbConn, err := pgxpool.New(ctx, updatedConnStr) - if err != nil { - log.Fatalf("Failed to connect to database for cleanup: %v", err) - } - defer dbConn.Close() + dbConn, err := pgxpool.New(ctx, updatedConnStr) + if err != nil { + log.Fatalf("Failed to connect to database for cleanup: %v", err) + } + defer dbConn.Close() - query := fmt.Sprintf("DELETE FROM %s.kv_vise;", setDbSchema) - _, execErr := dbConn.Exec(ctx, query) - if execErr != nil { - log.Printf("Failed to cleanup table %s.kv_vise: %v", setDbSchema, execErr) + setDbSchema := conn.Domain() + + query := fmt.Sprintf("DELETE FROM %s.kv_vise;", setDbSchema) + _, execErr := dbConn.Exec(ctx, query) + if execErr != nil { + log.Printf("Failed to cleanup table %s.kv_vise: %v", setDbSchema, execErr) + } else { + log.Printf("Successfully cleaned up table %s.kv_vise", setDbSchema) + } + } else if conn.DbType() == storage.DBTYPE_FS || conn.DbType() == storage.DBTYPE_GDBM { + connStr, _ := filepath.Abs(conn.Path()) + if err := os.RemoveAll(connStr); err != nil { + log.Fatalf("Failed to delete state store %v: %v", conn, err) + } } else { - log.Printf("Successfully cleaned up table %s.kv_vise", setDbSchema) - } - } else { - setConnStr, _ := filepath.Abs(setConnStr) - if err := os.RemoveAll(setConnStr); err != nil { - log.Fatalf("Failed to delete state store %s: %v", setConnStr, err) + logg.Errorf("store cleanup not handled") } } } -// updateSearchPath updates the search_path (schema) to be used in the connection -func updateSearchPath(connStr string, newSearchPath string) (string, error) { - u, err := url.Parse(connStr) - if err != nil { - return "", fmt.Errorf("invalid connection string: %w", err) - } - - // Parse the query parameters - q := u.Query() - - // Update or add the search_path parameter - q.Set("search_path", newSearchPath) - - // Rebuild the connection string with updated parameters - u.RawQuery = q.Encode() - - return u.String(), nil -} - func TestEngine(sessionId string) (engine.Engine, func(), chan bool) { - var err error + config.LoadConfig() + err := config.Apply(&override) + if err != nil { + panic(fmt.Errorf("args override fail: %v\n", err)) + } + conns, err = config.GetConns() + if err != nil { + panic(fmt.Errorf("get conns fail: %v\n", err)) + } ctx := context.Background() ctx = context.WithValue(ctx, "SessionId", sessionId) + logg.InfoCtxf(ctx, "loaded engine setup", "conns", conns) pfp := path.Join(scriptDir, "pp.csv") var eventChannel = make(chan bool) @@ -112,48 +84,8 @@ func TestEngine(sessionId string) (engine.Engine, func(), chan bool) { FlagCount: uint32(128), } - if setDbType == "postgres" { - conns, err := config.GetConns() - if err != nil { - fmt.Fprintf(os.Stderr, "Getconns error: %v", err) - os.Exit(1) - } - conn := conns[storage.STORETYPE_USER] - setConnStr = conn.String() - setConnStr, err = updateSearchPath(setConnStr, setDbSchema) - if err != nil { - fmt.Fprintf(os.Stderr, "Update search paths Error: %v\n", err) - os.Exit(1) - } - } else { - setConnStr, err = filepath.Abs(setConnStr) - if err != nil { - fmt.Fprintf(os.Stderr, "connstr err: %v", err) - os.Exit(1) - } - } - conn, err := storage.ToConnData(setConnStr) - if err != nil { - fmt.Fprintf(os.Stderr, "connstr parse err: %v", err) - os.Exit(1) - } - conns := storage.NewConns() - conns.Set(conn, storage.STORETYPE_STATE) - conns.Set(conn, storage.STORETYPE_USER) - - conn, err = storage.ToConnData(scriptDir) - if err != nil { - fmt.Fprintf(os.Stderr, "connstr parse err: %v", err) - os.Exit(1) - } - resourceConn := fsdb.NewFsDb() - err = resourceConn.Connect(ctx, scriptDir) - if err != nil { - fmt.Fprintf(os.Stderr, "resource connect err: %v", err) - os.Exit(1) - } menuStorageService := storage.NewMenuStorageService(conns) - menuStorageService = menuStorageService.WithDb(resourceConn, storage.STORETYPE_RESOURCE) + menuStorageService = menuStorageService.WithDb(resourceDb, storage.STORETYPE_RESOURCE) rs, err := menuStorageService.GetResource(ctx) if err != nil { @@ -182,7 +114,6 @@ func TestEngine(sessionId string) (engine.Engine, func(), chan bool) { lhs, err := handlers.NewLocalHandlerService(ctx, pfp, true, dbResource, cfg, rs) lhs.SetDataStore(&userDataStore) lhs.SetPersister(pe) - if err != nil { fmt.Fprintf(os.Stderr, err.Error()) os.Exit(1) diff --git a/testutil/fsdb.go b/testutil/fsdb.go new file mode 100644 index 0000000..03de985 --- /dev/null +++ b/testutil/fsdb.go @@ -0,0 +1,21 @@ +// +build testfsdb + +package testutil + +import ( + "os" + +) + +func init() { + d, err := os.MkdirTemp("", "sarafu-vise-menutraversal-state-") + if err != nil { + panic(err) + } + override.StateConn = &d + d, err = os.MkdirTemp("", "sarafu-vise-menutraversal-user-") + if err != nil { + panic(err) + } + override.UserConn = &d +} diff --git a/testutil/setup.go b/testutil/setup.go new file mode 100644 index 0000000..919641c --- /dev/null +++ b/testutil/setup.go @@ -0,0 +1,32 @@ +package testutil + +import ( + "context" + "path" + + testdataloader "github.com/peteole/testdata-loader" + "git.defalsify.org/vise.git/logging" + fsdb "git.defalsify.org/vise.git/db/fs" + "git.defalsify.org/vise.git/db" + "git.grassecon.net/grassrootseconomics/visedriver/storage" + "git.grassecon.net/grassrootseconomics/sarafu-vise/config" +) + +var ( + logg = logging.NewVanilla().WithDomain("sarafu-vise.testutil").WithContextKey("SessionId") + conns storage.Conns + resourceDb db.Db + baseDir = testdataloader.GetBasePath() + scriptDir = path.Join(baseDir, "services", "registration") + override config.Override +) + +func init() { + ctx := context.Background() + config.EnvPath = baseDir + resourceDb = fsdb.NewFsDb() + err := resourceDb.Connect(ctx, scriptDir) + if err != nil { + panic(err) + } +} -- 2.45.2 From b31011b39058ee83ef1a3ee14b610dd9021daee2 Mon Sep 17 00:00:00 2001 From: lash Date: Mon, 20 Jan 2025 12:37:02 +0000 Subject: [PATCH 12/16] Update deps --- go.mod | 4 ++-- go.sum | 8 ++++---- services/registration/send.bin | Bin 175 -> 175 bytes 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index d874429..34884d4 100644 --- a/go.mod +++ b/go.mod @@ -3,10 +3,10 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250119110446-6c29d5ba580a + git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9 git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f - git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250119110807-c5bb1c80a55d + git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250120123120-90ecec17987c git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119111003-681d58fad95b github.com/alecthomas/assert/v2 v2.2.2 github.com/gofrs/uuid v4.4.0+incompatible diff --git a/go.sum b/go.sum index 72de5d0..f907fe3 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,11 @@ -git.defalsify.org/vise.git v0.2.3-0.20250119110446-6c29d5ba580a h1:LXg7l5g3jiNSKWCwjO2nmMyZcNYZzuNPyuxiFtfOE6U= -git.defalsify.org/vise.git v0.2.3-0.20250119110446-6c29d5ba580a/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9 h1:sPcqXQcywxA8W3W+9qQncLPmsrgqTIlec7vmD4/7vyA= +git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 h1:BenzGx6aDHKDwE23/mWIFD2InYIXyzHroZWV3MF5WUk= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f h1:FgccQi8vipX6dUt+GRiRDYHMR3UqC+plz73vw7y3fyU= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f/go.mod h1:tbA4whUGMUIDgQVdIW0sxWPuuXOvZRSny5zeku5hX4k= -git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250119110807-c5bb1c80a55d h1:s3bxpfFSIMgEzFxRSsiCBUWzvddEkpc/5eD57xzDj/M= -git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250119110807-c5bb1c80a55d/go.mod h1:mGZ7IPJtQcqhdo+ahxs+pAVKUowTpQ+2kMxfJ3/j3q8= +git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250120123120-90ecec17987c h1:JLSBpODsyFmUw0yX0G0V7Hh+QGYN5sE59oKrHUYrhJs= +git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250120123120-90ecec17987c/go.mod h1:Oi+cZvA6asDvgE+IYKWAD1G1v9w3PZsDUj783J2AnTI= git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119111003-681d58fad95b h1:OHs6PzAgiConvOoDcYthtWi4ioyivR36mzKx5wHUsRc= git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119111003-681d58fad95b/go.mod h1:qmGSnl1BZAIHY+NdaGbkwHsngtPMru6yeCwS5KkrPsE= github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= diff --git a/services/registration/send.bin b/services/registration/send.bin index 0c1c15bbf9fe8978da5fbf9a0dc2ac183033f920..90e5f6639e7a334f463d87b1ada1c820b5fa2ceb 100644 GIT binary patch delta 11 ScmZ3_xSnxBG^5ePm|y@GW&^(f delta 11 ScmZ3_xSnxBG^5DGm|y@F?gOC! -- 2.45.2 From 8b68130ed495587b456dc04819e05f3b81d7c8dd Mon Sep 17 00:00:00 2001 From: lash Date: Tue, 21 Jan 2025 08:11:26 +0000 Subject: [PATCH 13/16] Remove bin files --- services/registration/_catch.bin | Bin 2 -> 0 bytes services/registration/account_creation.bin | Bin 56 -> 0 bytes services/registration/account_creation_failed.bin | Bin 20 -> 0 bytes services/registration/account_pending.bin | Bin 35 -> 0 bytes services/registration/address.bin | Bin 94 -> 0 bytes services/registration/amount.bin | Bin 230 -> 0 bytes services/registration/api_failure.bin | Bin 36 -> 0 bytes services/registration/balances.bin | Bin 153 -> 0 bytes services/registration/blocked_account.bin | Bin 27 -> 0 bytes services/registration/change_language.bin | Bin 141 -> 0 bytes services/registration/check_statement.bin | Bin 175 -> 0 bytes services/registration/community_balance.bin | Bin 166 -> 0 bytes services/registration/confirm_create_pin.bin | Bin 68 -> 0 bytes services/registration/confirm_others_new_pin.bin | Bin 271 -> 0 bytes services/registration/confirm_pin_change.bin | Bin 56 -> 0 bytes services/registration/create_pin.bin | Bin 142 -> 0 bytes services/registration/create_pin_mismatch.bin | Bin 53 -> 0 bytes services/registration/display_profile_info.bin | Bin 17 -> 0 bytes services/registration/edit_family_name.bin | Bin 312 -> 0 bytes services/registration/edit_first_name.bin | Bin 311 -> 0 bytes services/registration/edit_location.bin | Bin 234 -> 0 bytes services/registration/edit_offerings.bin | Bin 208 -> 0 bytes services/registration/edit_profile.bin | Bin 378 -> 0 bytes services/registration/edit_yob.bin | Bin 313 -> 0 bytes services/registration/enter_other_number.bin | Bin 122 -> 0 bytes services/registration/enter_others_new_pin.bin | Bin 239 -> 0 bytes services/registration/enter_pin.bin | Bin 42 -> 0 bytes services/registration/help.bin | Bin 21 -> 0 bytes services/registration/incorrect_date_format.bin | Bin 68 -> 0 bytes services/registration/incorrect_pin.bin | Bin 113 -> 0 bytes services/registration/invalid_amount.bin | Bin 81 -> 0 bytes services/registration/invalid_others_pin.bin | Bin 55 -> 0 bytes services/registration/invalid_pin.bin | Bin 17 -> 0 bytes services/registration/invalid_recipient.bin | Bin 77 -> 0 bytes services/registration/invite_recipient.bin | Bin 86 -> 0 bytes services/registration/invite_result.bin | Bin 29 -> 0 bytes services/registration/language_changed.bin | Bin 35 -> 0 bytes services/registration/list_offering.bin | 0 services/registration/main.bin | Bin 267 -> 0 bytes services/registration/my_account.bin | Bin 251 -> 0 bytes services/registration/my_balance.bin | Bin 146 -> 0 bytes services/registration/my_vouchers.bin | Bin 151 -> 0 bytes services/registration/new_pin.bin | Bin 194 -> 0 bytes services/registration/no_admin_privilege.bin | Bin 48 -> 0 bytes services/registration/no_transfers.bin | Bin 35 -> 0 bytes services/registration/no_voucher.bin | Bin 35 -> 0 bytes services/registration/old_pin.bin | Bin 73 -> 0 bytes services/registration/others_pin_mismatch.bin | Bin 36 -> 0 bytes services/registration/pin_entry.bin | Bin 48 -> 0 bytes services/registration/pin_management.bin | Bin 96 -> 0 bytes services/registration/pin_reset_mismatch.bin | Bin 53 -> 0 bytes services/registration/pin_reset_result.bin | Bin 123 -> 0 bytes services/registration/pin_reset_success.bin | Bin 106 -> 0 bytes services/registration/profile_update_success.bin | Bin 102 -> 0 bytes services/registration/quit.bin | Bin 11 -> 0 bytes services/registration/root.bin | Bin 167 -> 0 bytes services/registration/select_gender.bin | Bin 210 -> 0 bytes services/registration/select_language.bin | Bin 58 -> 0 bytes services/registration/select_voucher.bin | Bin 175 -> 0 bytes services/registration/send.bin | Bin 175 -> 0 bytes services/registration/set_default.bin | Bin 62 -> 0 bytes services/registration/set_eng.bin | Bin 62 -> 0 bytes services/registration/set_female.bin | Bin 162 -> 0 bytes services/registration/set_male.bin | Bin 162 -> 0 bytes services/registration/set_swa.bin | Bin 62 -> 0 bytes services/registration/set_unspecified.bin | Bin 162 -> 0 bytes services/registration/terms.bin | Bin 41 -> 0 bytes services/registration/transaction_initiated.bin | Bin 157 -> 0 bytes services/registration/transaction_pin.bin | Bin 206 -> 0 bytes services/registration/transactions.bin | Bin 173 -> 0 bytes services/registration/unregistered_number.bin | Bin 93 -> 0 bytes services/registration/update_familyname.bin | Bin 46 -> 0 bytes services/registration/update_firstname.bin | Bin 45 -> 0 bytes services/registration/update_gender.bin | Bin 42 -> 0 bytes services/registration/update_location.bin | Bin 44 -> 0 bytes services/registration/update_offerings.bin | Bin 45 -> 0 bytes services/registration/update_profile_items.bin | Bin 59 -> 0 bytes services/registration/update_success.bin | Bin 35 -> 0 bytes services/registration/update_yob.bin | Bin 39 -> 0 bytes services/registration/view_profile.bin | Bin 135 -> 0 bytes services/registration/view_statement.bin | Bin 86 -> 0 bytes services/registration/view_voucher.bin | Bin 127 -> 0 bytes services/registration/voucher_details.bin | Bin 79 -> 0 bytes services/registration/voucher_set.bin | Bin 111 -> 0 bytes 84 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 services/registration/_catch.bin delete mode 100644 services/registration/account_creation.bin delete mode 100644 services/registration/account_creation_failed.bin delete mode 100644 services/registration/account_pending.bin delete mode 100644 services/registration/address.bin delete mode 100644 services/registration/amount.bin delete mode 100644 services/registration/api_failure.bin delete mode 100644 services/registration/balances.bin delete mode 100644 services/registration/blocked_account.bin delete mode 100644 services/registration/change_language.bin delete mode 100644 services/registration/check_statement.bin delete mode 100644 services/registration/community_balance.bin delete mode 100644 services/registration/confirm_create_pin.bin delete mode 100644 services/registration/confirm_others_new_pin.bin delete mode 100644 services/registration/confirm_pin_change.bin delete mode 100644 services/registration/create_pin.bin delete mode 100644 services/registration/create_pin_mismatch.bin delete mode 100644 services/registration/display_profile_info.bin delete mode 100644 services/registration/edit_family_name.bin delete mode 100644 services/registration/edit_first_name.bin delete mode 100644 services/registration/edit_location.bin delete mode 100644 services/registration/edit_offerings.bin delete mode 100644 services/registration/edit_profile.bin delete mode 100644 services/registration/edit_yob.bin delete mode 100644 services/registration/enter_other_number.bin delete mode 100644 services/registration/enter_others_new_pin.bin delete mode 100644 services/registration/enter_pin.bin delete mode 100644 services/registration/help.bin delete mode 100644 services/registration/incorrect_date_format.bin delete mode 100644 services/registration/incorrect_pin.bin delete mode 100644 services/registration/invalid_amount.bin delete mode 100644 services/registration/invalid_others_pin.bin delete mode 100644 services/registration/invalid_pin.bin delete mode 100644 services/registration/invalid_recipient.bin delete mode 100644 services/registration/invite_recipient.bin delete mode 100644 services/registration/invite_result.bin delete mode 100644 services/registration/language_changed.bin delete mode 100644 services/registration/list_offering.bin delete mode 100644 services/registration/main.bin delete mode 100644 services/registration/my_account.bin delete mode 100644 services/registration/my_balance.bin delete mode 100644 services/registration/my_vouchers.bin delete mode 100644 services/registration/new_pin.bin delete mode 100644 services/registration/no_admin_privilege.bin delete mode 100644 services/registration/no_transfers.bin delete mode 100644 services/registration/no_voucher.bin delete mode 100644 services/registration/old_pin.bin delete mode 100644 services/registration/others_pin_mismatch.bin delete mode 100644 services/registration/pin_entry.bin delete mode 100644 services/registration/pin_management.bin delete mode 100644 services/registration/pin_reset_mismatch.bin delete mode 100644 services/registration/pin_reset_result.bin delete mode 100644 services/registration/pin_reset_success.bin delete mode 100644 services/registration/profile_update_success.bin delete mode 100644 services/registration/quit.bin delete mode 100644 services/registration/root.bin delete mode 100644 services/registration/select_gender.bin delete mode 100644 services/registration/select_language.bin delete mode 100644 services/registration/select_voucher.bin delete mode 100644 services/registration/send.bin delete mode 100644 services/registration/set_default.bin delete mode 100644 services/registration/set_eng.bin delete mode 100644 services/registration/set_female.bin delete mode 100644 services/registration/set_male.bin delete mode 100644 services/registration/set_swa.bin delete mode 100644 services/registration/set_unspecified.bin delete mode 100644 services/registration/terms.bin delete mode 100644 services/registration/transaction_initiated.bin delete mode 100644 services/registration/transaction_pin.bin delete mode 100644 services/registration/transactions.bin delete mode 100644 services/registration/unregistered_number.bin delete mode 100644 services/registration/update_familyname.bin delete mode 100644 services/registration/update_firstname.bin delete mode 100644 services/registration/update_gender.bin delete mode 100644 services/registration/update_location.bin delete mode 100644 services/registration/update_offerings.bin delete mode 100644 services/registration/update_profile_items.bin delete mode 100644 services/registration/update_success.bin delete mode 100644 services/registration/update_yob.bin delete mode 100644 services/registration/view_profile.bin delete mode 100644 services/registration/view_statement.bin delete mode 100644 services/registration/view_voucher.bin delete mode 100644 services/registration/voucher_details.bin delete mode 100644 services/registration/voucher_set.bin diff --git a/services/registration/_catch.bin b/services/registration/_catch.bin deleted file mode 100644 index 549c57749cb66e8609c040c3247ff0f62a8e2dd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2 JcmZQz2LJ#G00;m8 diff --git a/services/registration/account_creation.bin b/services/registration/account_creation.bin deleted file mode 100644 index 1bf6995044afa300bf4f70a544f44acde745e027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 zcmZQz5iCnB%1o<_PcBMLEJ=+o$joD46h?63b2E!`6HAga7kEn;L~V8IY%V8s;TVo6F&&So@V;9@B(%`9QGWMF6D LV2lR}a6knBQ6U;a diff --git a/services/registration/amount.bin b/services/registration/amount.bin deleted file mode 100644 index 35757a44177b96e7ef5158dded76aa0c0752a6a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmZ9HK?=e!5JhK5#8T0ME8V$v+5Fs7pnwrNRH@%X0FKydj!yx|R~ljp$EL{Bb| zjWRkz!#KN$0IDA7ld%R}AZ$vg^_}bsZ?FZ`ys4LtB4@D${l5Y3XcF@v>1WS)M!&Yuu rlk;2C{5CFg diff --git a/services/registration/blocked_account.bin b/services/registration/blocked_account.bin deleted file mode 100644 index c8642b4d3b17e9639284e9bf76f5535cbc703cbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27 icmZQz7AeliFON^k$xqHsO^HuTPR=jQD`8|{U5ZSOWqmxPF>0J;D(eCqj4?Ycho(j*&ElbPn zRi%L_{K14#^ex_sH5@_1E_a{Q>a(QGtX&){+JtN78Rum@dUafAP2txhY^$)E74~$m Rf&(ZbEnWO{as2vqdI6u8G(`Xa diff --git a/services/registration/community_balance.bin b/services/registration/community_balance.bin deleted file mode 100644 index 2d7034c2f477e7fda483e4d3a5092890717d2e08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZ{cy$ZrW5C-=n{+x=Wu#mihh1mKu%VpW%VseS+rpViSjdpg!Fbq|7*0(xak}+o$ z$A+qNr!EhcaTw-gzHl4+m_$K@L!6AeX#JcO4QTx@CLDiLo-E-6!ma>o^1PrX+OOIu VPuvQ;W^>$WO95O&_=-%rXW0F ziJVBx}OI#=r`4RO*l5pMu^UC>O4WSK)JctOY>$;|Yx zRmk^|4NsrY9@Mr9Csi5S;tLLtqn>wG*oJJoM74Lx8?g-ns6S`GaxJ%-&j|U?1DXR?hyW9kQW|_K0MY|_hZay@-lxv HthMJ4`Uonm diff --git a/services/registration/create_pin_mismatch.bin b/services/registration/create_pin_mismatch.bin deleted file mode 100644 index a80717af81162ed46393f55e8ab034118effefdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 zcmZSJVl7H7DXL^NWZ+^cEX^!ov}9ms;1EjA&r8cJ%8gGhN=+PZEU^UW|jODLQ-Ax1Vy zwa#M&!m@8momg4jxO(uqVXQ%;O~px>Ub0@YF<4i#a^40IWq(Z?|F>q@O`AI|G@&f- zr2QocP&moGMW-KMBd(PFGQw0=D_Il=Y-M}VasB$GVqbE^o(MUYE~z2huoG3hRUM2@ aE_fUS&EF_k%hCC&!%^60Em8hcdwv21y4t25JY#VLz5JnLMi0de6;ucBcaGEv(%A{EEjz1Pw!eMQ^;}N4m*!fOK>qI zcG(OP@CL%`G_*Fe@sh?I?49urdOCERjhnO@w3?!qo{a<_K~z0F(&q7LU)`+x#+9C_ z+K&2ti3AvY>0UG1pS8m;RsRrSr^-fs(u|KqoLkAp+q?9$DdI;WycF7TXgT4mU|YZ( eZ#ZeHOX{PuSz^FNQBzR#o|A-b#HX_L6#W6gXI~fq diff --git a/services/registration/edit_location.bin b/services/registration/edit_location.bin deleted file mode 100644 index 5964b21af98387a7c7ab3860100512388b9fa918..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmZ|J!3x4K5CqT}8n6mgK?LvW#Z&(%#55_vl9V(R{Cn4%6+G_lV|KtMM4NJUw&*cL z9tiH{u`|W#Az4#GiaZk4sdq)&S!5KMlMjQ_A^Jo>{XL>;CiDD?+GC^c#y;3$1yxTH r`WZoLUJ142sAb)PYpJH?aenbE1-GsXMJMlF4zZtj!IA*=FS)$|yo5!0 diff --git a/services/registration/edit_offerings.bin b/services/registration/edit_offerings.bin deleted file mode 100644 index b26c7e97b2cf92ac9a22f7625bc00d3b91df823f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmZ{eK?=e!6hvoez$hq!3Lc1Ld%qweg3CYuG4sG>h&JWyY&Bzu z+z?z(nUNHCbc}-_gI$Bh2kZ0 z%SkG&L+AV1rSA~!nGMdNynBRV@%!goILhu|RAK}uM=*#P8=GWpW1FN`d&YMV^BYrp z>rOYg0`Zh#!`^Vj4-k~|DOC6gVw!^sS|uAiu0cF!66%_x^-YUkAj%)hN8I#FrSuM$ x@CXH63+DI$gxem{h!Kq$(X?g9I>|pL`tL*oCmK4@9U5ZuA4wV)R%dQ{YlC;uqKG?8GcL!nyjuroiTvF wM30YSLy?$L-tBTPV|M+cXQFVM^a@=}6SwrFisiDZVFfO^jPOkihpcMcoPIn*i9fQE)CH?;Qn_gme@|IJ0%g5-?{r|AYzJv=VsbCQTTjLQoQ;7{WK diff --git a/services/registration/enter_pin.bin b/services/registration/enter_pin.bin deleted file mode 100644 index 3919ba8fcc806f14fec6e7a7d72473731e26e1d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42 vcmZSJVo6F&&So@VU}xZ9j0e&jA}N{01v!b8@dZWsX_+~x@tJvP`HWfszwHYN diff --git a/services/registration/help.bin b/services/registration/help.bin deleted file mode 100644 index 199c5db5584eee73df5cbf46ec5c6c0167ba4962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmZQz<|{1CEQv4AEXjz^NX;o=WME(i07bwC00000 diff --git a/services/registration/incorrect_date_format.bin b/services/registration/incorrect_date_format.bin deleted file mode 100644 index 8188b43ce61e6f364a4fffcc5a59bee3446d7208..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmZQzmM%&yPA!Sg%uCKMDoRZ*iBCx^NsUj-FUn0UVdP-oVl7H7DXL^NWZ+^cEX^!o Qv}9ms;9!gg3UELL0M>;Pga7~l diff --git a/services/registration/incorrect_pin.bin b/services/registration/incorrect_pin.bin deleted file mode 100644 index 8817c23b79fe082cc04974a72d0f73adf294e9c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmZQz<}XSuPA!Sg%uCKMDoRZ*VPs%nK^J3S#SmfSPs+(p&Q481qRAXe| gVl7H7DXL^NWZ+^cEX^!ov}9ms;9!gg3UELL0PuJqpa1{> diff --git a/services/registration/invalid_amount.bin b/services/registration/invalid_amount.bin deleted file mode 100644 index 52bd9da9957c0ba9f0c6541924e9639e28f9a001..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmZQzVPKIcN-a(;i7zQi%qvbzF3HT#gGq6*7NwRHRWcef XaIqAYW|lBoGO#mnFvbG~IG_RmIDZ$l diff --git a/services/registration/invalid_others_pin.bin b/services/registration/invalid_others_pin.bin deleted file mode 100644 index 5f3163d88f39b751e2bbb0c21c8ccb6c017cb9f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmZSJVl7H7DXL^NWZ+^cEX^!ov}9ms;1Eg8D@iSi&o9YHEh>)BOD&Ht$jk$(;ee_E E0FWIILI3~& diff --git a/services/registration/invalid_pin.bin b/services/registration/invalid_pin.bin deleted file mode 100644 index e154dca0896b1338ef347bb7c264644029d836b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 YcmZSJVo6F&&So@VU}xZ9jAt|e02kQ;aR2}S diff --git a/services/registration/invalid_recipient.bin b/services/registration/invalid_recipient.bin deleted file mode 100644 index dcf9d4e294e9b62874f25a700905ae0a1dd9a684..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77 zcmZQz6)H>2$xKNsNsTW`P0lRHOwB7{U=b`SO3W)xOfJdH&jX4Vr2$xKNsNsTW`P0lRHOwB7{;9@OGEh(yGG-Tjn%gigwEJ9Mk!+?|-(t^^gjgUX>rdyZtm?F(7sM|CWol@ON;Ni&hIWM2q9BDc zT}eks{w{KqL#9gWK6IW=kfJtrp!0OxL*wa!6dWzi+UGnm2g~W7U5+kCm+3(JH;6<{ A6#xJL diff --git a/services/registration/my_account.bin b/services/registration/my_account.bin deleted file mode 100644 index 7df7853dbd41853dc572768841ce9062cd1d28f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmZwB+X{m)3dRkLQEezb`kF&*WNhQ z`)GO>umCB$x1y>_WWWc=tR&sy8FCO=N5-X9Y`8K}ExP!l3-NVBf~UYQEOryzkxOmo NE(M5ufd!uM_yPPGNn`*3 diff --git a/services/registration/my_balance.bin b/services/registration/my_balance.bin deleted file mode 100644 index 3809958649d8d49866437433d1157120be4e6368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmY+6y$ZrW5C*@G_;V^Dg_W;hA+|ovvRPI<63*nj6u!OJDA*0dFlf5$FE0|4J#%&| z+@NXg;WkLGqb73#Jm?hVu5nzl^F*xw6R`aaWQvJLg1ZXhspL01V880s23{-7ODw!$ Ni$JL&d_~}e=MN4KCEx%6 diff --git a/services/registration/my_vouchers.bin b/services/registration/my_vouchers.bin deleted file mode 100644 index 7d139e5883cbe12bfa07f239ac99f72c0950e8d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151 zcmZQzmMBUsPA!Q~Ois=(%>&Yxjq3rmS)RM%^oMJ{J1}>JQ#N=#70|s^m4#s#O&4H_5?xGepU)azWr1v&*Csds)roJ`&qknX n@?pmw3|KlJ=R=5Dv;=G7G5?QkSd^2Cx)w@4Cr&tm#SYsS=`9)x diff --git a/services/registration/pin_reset_mismatch.bin b/services/registration/pin_reset_mismatch.bin deleted file mode 100644 index 6fd2407b0b5cbc293228ad08821583cd4e2922d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 zcmZSJVl7H7DXL^NWZ+^cEX^!ov}9ms;1EjA&r8cJ%8f6`%!^OXNX$!51*+hHssI3K Cn+`Yt diff --git a/services/registration/pin_reset_result.bin b/services/registration/pin_reset_result.bin deleted file mode 100644 index 07c70a433311d4241e37542925e4e5810eb06df6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmZ|EK@Ni;5Cza7R7+em?!1OuPcs4iX^8@M9D4q;=(f9;JhGEOCE^1PM_G4loNEdY uL)85{vZLUFa?uy$;xlH`({KxZ-Ob$au2IcGcXE$*oP73ABxG&te)|Q(izWsD diff --git a/services/registration/pin_reset_success.bin b/services/registration/pin_reset_success.bin deleted file mode 100644 index c5e89736bb7c66780cda80524e11a1d02e9c60a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 zcmZQz7D~>~OUo?EjW5W|i%-r-%u7#YWME*yBFw-j1X5F!TAW%EpPN~nn^=;Z!N|+V iz{Qf3n4HaM0Av)FW|lBoGO#mnu;eCY<^jbxpke^#VIE8X diff --git a/services/registration/profile_update_success.bin b/services/registration/profile_update_success.bin deleted file mode 100644 index f152be1f11123e7066f61bf586516d4819b3c753..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102 zcmZQzmMASqNi0c?Pt3`QFDS}S%gjlQ&n!vJEoNk3V8JQLz{Qf3n4HaM0Av)FW|lBo UGO#mn@T8_>mcUE_%5gyD0IQ=PHvj+t diff --git a/services/registration/quit.bin b/services/registration/quit.bin deleted file mode 100644 index 6368a904adf3c926893e3bfe3554a796ee91afe2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11 ScmZQzW+^PqEMa6|UmN@ diff --git a/services/registration/root.bin b/services/registration/root.bin deleted file mode 100644 index e6a440be5e123fd308dd9cace1c0837ca811158a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmZwAOAf*?3Rj4uoDd&rk88Cd2&$d^O%IPCh#H VtvqWoDaMj)U`^m=ar?#iYV4DPa#<9G{X6mkNXm%sn660HWq^NV@55C%BScI{BP8((4jZ m6!y+bi+k-nEWdD}6)BjiN~JnBgGx{43#;v9e;+8Eae4#fPCdT> diff --git a/services/registration/select_language.bin b/services/registration/select_language.bin deleted file mode 100644 index 7071dd0241c38ad9faeac046b62bd3ac307324d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58 zcmZSJVo%LW&&e##U^Hal;>^x0E>FzJ%*kXlVqj_CIcGE>W8CNTyuu%HMqFf!^fN-#2TFvbH7jIQb&Sg!@3E0qGxD> LekZRox8&&q({43S diff --git a/services/registration/set_default.bin b/services/registration/set_default.bin deleted file mode 100644 index 2317371db1e33e10551a1374ab246d0879ffe3c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62 zcmZQz<|$4siO)&QOD|1KPi16dU_lXJU}P;xEy^usRmg}6NDKHzYf^N-R%QpxZR$2|jH zS&Eub@iehui=n<#&Av^#Q0K@JiQ9tDz!O#WwCD#P5dD=#E!kNGU!iWR(!M8S8D@Nk K+kXHw+s7aD{4T)& diff --git a/services/registration/set_male.bin b/services/registration/set_male.bin deleted file mode 100644 index 34e11b69273f0732c1cbb400d738665a4f05c4d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmYj}TMEKJ3`G-^qKHx`F2KjWhH)k>fs&Lo3f;Y-AElq?+y@*kbN*2pNGch&aNINC zm8GZ|6;Bfjb{OhA)$H5k9_k!fB5_;r8F-?~o)-P!1ERmus3kkA;49Q^RoeGtEW?cN LaQhE{X8ZU9>&z~( diff --git a/services/registration/set_swa.bin b/services/registration/set_swa.bin deleted file mode 100644 index 2317371db1e33e10551a1374ab246d0879ffe3c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62 zcmZQz<|$4siO)&QOD|1KPi16dU_lXJU}P;xEy^us0ZB?4h2GxKMd|Xr?*~rTCI2W*B$W(XI3F4C z#!}Rbil>>q#UG%l$C diff --git a/services/registration/terms.bin b/services/registration/terms.bin deleted file mode 100644 index 90a3872f3427e86c04491cdaf638d0ac8e725511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41 vcmZSJVy;XrW;A5rV#>>BG-6<9;NVIwN=+-ZV%F(KrbL3@3?dFsc9m diff --git a/services/registration/transaction_pin.bin b/services/registration/transaction_pin.bin deleted file mode 100644 index 4980bb2370e2bd0c649cdb62bdbdbfe27ab183f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmZXN!3qK~3`7&GS_*p*@h3ca-LEOJ8#IXN+D$Khy<1#C^!R3YGvLC7Ez&(#HCTUx z>snJd$tc{)AAXw?>%e6(7YOc5>4ql=?oq|Cht-a%U2~BqM@p%k;Rd$g{&T=iH03fM eTO37kkKi%RYyPw54^~JgN+wyOsF;xPfX5f+uRmk} diff --git a/services/registration/transactions.bin b/services/registration/transactions.bin deleted file mode 100644 index be5a5051295b15b803ed7602f7c576ef82ee6d97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmZQz7D!Jmi7zQi%qvbzF3HT#D`sS1V8sw*;9^NiOwMLB05S?oGfS8(Eg863@=_~G zm<$aWcvuRGQp=c(j2PG%nEA>wQ_JIvOA<>`b5rw5fX1<)2{AA->M_bOGH@`)0S)AU V8_2UP85uYj00rN}e)Pdb7irsNk`f^aw9Gnx1rhCLhJld5>?SJfv=71P$P8>gQ>%4s l2~tr4qI%xbA9^-{HPXMMOr}vU>~7c&8`&dA!Ql?Y8!oV79Ap3h -- 2.45.2 From 156511e4992f866312f01f75727e930c4108bcfd Mon Sep 17 00:00:00 2001 From: lash Date: Tue, 21 Jan 2025 08:16:46 +0000 Subject: [PATCH 14/16] Build vise-asm binary in makefile --- services/registration/Makefile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/services/registration/Makefile b/services/registration/Makefile index 80bbba2..66b64a1 100644 --- a/services/registration/Makefile +++ b/services/registration/Makefile @@ -4,8 +4,8 @@ TXTS = $(wildcard ./*.txt.orig) VISE_PATH := ../../go-vise # Rule to build .bin files from .vis files -%.vis: - go run $(VISE_PATH)/dev/asm/main.go -f pp.csv $(basename $@).vis > $(basename $@).bin +%.vis: buildasm + ./vise-asm -f pp.csv $(basename $@).vis > $(basename $@).bin @echo "Built $(basename $@).bin from $(basename $@).vis" # Rule to copy .orig files to .txt @@ -19,5 +19,10 @@ all: $(INPUTS) $(TXTS) clean: rm -vf *.bin + rm -vf ./vise-asm + +buildasm: + go build -v -o ./vise-asm $(VISE_PATH)/dev/asm/main.go + .PHONY: clean -- 2.45.2 From 00b9079a55ca71f68ce13efe12ec0caf3edbe71a Mon Sep 17 00:00:00 2001 From: lash Date: Tue, 21 Jan 2025 13:44:32 +0000 Subject: [PATCH 15/16] Clean up spaces --- cmd/async/main.go | 2 +- debug/db.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/async/main.go b/cmd/async/main.go index 85266d0..2060cb6 100644 --- a/cmd/async/main.go +++ b/cmd/async/main.go @@ -43,7 +43,7 @@ func (p *asyncRequestParser) GetInput(r any) ([]byte, error) { func main() { config.LoadConfig() - + var override config.Override var sessionId string var size uint diff --git a/debug/db.go b/debug/db.go index d241a40..3cfadba 100644 --- a/debug/db.go +++ b/debug/db.go @@ -32,7 +32,7 @@ func (k KeyInfo) String() string { func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { o := KeyInfo{} - + o.SessionId = sessionId o.Typ = uint8(k[0]) k = k[1:] @@ -53,7 +53,7 @@ func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { k = k[2:] } - + return o, nil } -- 2.45.2 From 592c57b72d18825c593bd219695af6c8af128999 Mon Sep 17 00:00:00 2001 From: lash Date: Tue, 21 Jan 2025 14:14:52 +0000 Subject: [PATCH 16/16] Update deps, unique fsdbs in testfsdb --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- testutil/fsdb.go | 8 ++++---- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/go.mod b/go.mod index 34884d4..33ce1b6 100644 --- a/go.mod +++ b/go.mod @@ -4,10 +4,10 @@ go 1.23.4 require ( git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9 - git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 - git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f - git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250120123120-90ecec17987c - git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119111003-681d58fad95b + git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d + git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250121135150-e0b539809805 + git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250121134912-f7d31e4e8162 + git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121135340-ca97e23e8c84 github.com/alecthomas/assert/v2 v2.2.2 github.com/gofrs/uuid v4.4.0+incompatible github.com/grassrootseconomics/ussd-data-service v1.2.0-beta diff --git a/go.sum b/go.sum index f907fe3..4de0fe6 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,13 @@ git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9 h1:sPcqXQcywxA8W3W+9qQncLPmsrgqTIlec7vmD4/7vyA= git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= -git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 h1:BenzGx6aDHKDwE23/mWIFD2InYIXyzHroZWV3MF5WUk= -git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= -git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f h1:FgccQi8vipX6dUt+GRiRDYHMR3UqC+plz73vw7y3fyU= -git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f/go.mod h1:tbA4whUGMUIDgQVdIW0sxWPuuXOvZRSny5zeku5hX4k= -git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250120123120-90ecec17987c h1:JLSBpODsyFmUw0yX0G0V7Hh+QGYN5sE59oKrHUYrhJs= -git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250120123120-90ecec17987c/go.mod h1:Oi+cZvA6asDvgE+IYKWAD1G1v9w3PZsDUj783J2AnTI= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119111003-681d58fad95b h1:OHs6PzAgiConvOoDcYthtWi4ioyivR36mzKx5wHUsRc= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250119111003-681d58fad95b/go.mod h1:qmGSnl1BZAIHY+NdaGbkwHsngtPMru6yeCwS5KkrPsE= +git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d h1:5mzLas+jxTUtusOKx4XvU+n2QvrV/mH17MnJRy46siQ= +git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= +git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250121135150-e0b539809805 h1:deGnqf4YCsbxhXgjFEjYjTUCvciLEmI26T9IysRsQXY= +git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250121135150-e0b539809805/go.mod h1:9bc3d//Qqm11hz7GYRdQc1Uan+0GJIOpvRBbv8cHMu8= +git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250121134912-f7d31e4e8162 h1:NaPbgGQ1Nb+yYF+Qj1LSagpjYeDcSXST8iZwONg4afY= +git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250121134912-f7d31e4e8162/go.mod h1:pjKp9L/ZsWW3kMB0UoIl1yv9TBIuU33mn9Aghxp7vGk= +git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121135340-ca97e23e8c84 h1:VoBmqsjlRdz+IPbtKsAkc1IrMepjR+QlesZT31Jokrk= +git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121135340-ca97e23e8c84/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ= github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= github.com/alecthomas/participle/v2 v2.0.0 h1:Fgrq+MbuSsJwIkw3fEj9h75vDP0Er5JzepJ0/HNHv0g= diff --git a/testutil/fsdb.go b/testutil/fsdb.go index 03de985..5c1368b 100644 --- a/testutil/fsdb.go +++ b/testutil/fsdb.go @@ -8,14 +8,14 @@ import ( ) func init() { - d, err := os.MkdirTemp("", "sarafu-vise-menutraversal-state-") + stateDir, err := os.MkdirTemp("", "sarafu-vise-menutraversal-state-") if err != nil { panic(err) } - override.StateConn = &d - d, err = os.MkdirTemp("", "sarafu-vise-menutraversal-user-") + override.StateConn = &stateDir + userDir, err := os.MkdirTemp("", "sarafu-vise-menutraversal-user-") if err != nil { panic(err) } - override.UserConn = &d + override.UserConn = &userDir } -- 2.45.2