From 7298512113bedaa6f951d1afba0bfc753ece5a34 Mon Sep 17 00:00:00 2001 From: Yun Date: Thu, 8 Aug 2019 12:47:26 +0900 Subject: [PATCH] feegiver to santa add testcode attach codecov badge --- .circleci/config.yml | 24 ++++++ .gitignore | 1 + .vscode/launch.json | 17 +++++ keys/keys.db/LOCK => MANDATE.md | 0 MOTIVATION.md | 0 Makefile | 2 +- README.md | 57 +++++++------- cmd/config.go | 6 +- cmd/keys.go | 10 +-- cmd/root.go | 25 ++++--- cmd/start.go | 12 ++- coverage.txt | 1 + go.mod | 2 +- go.sum | 4 + keys/keys.db/000004.ldb | Bin 484 -> 0 bytes keys/keys.db/000007.ldb | Bin 184 -> 0 bytes keys/keys.db/000010.log | Bin 406 -> 0 bytes keys/keys.db/CURRENT | 1 - keys/keys.db/CURRENT.bak | 1 - keys/keys.db/LOG | 54 -------------- keys/keys.db/MANIFEST-000011 | Bin 207 -> 0 bytes main.go | 2 +- utils/{generator.go => app.go} | 34 ++++----- utils/app_test.go | 48 ++++++++++++ utils/errors.go | 19 ----- utils/keys.go | 24 +++--- utils/keys_test.go | 128 ++++++++++++++++++++++++++++++++ utils/rpc.go | 88 +--------------------- utils/test_common.go | 110 +++++++++++++++++++++++++++ utils/websocket.go | 21 +++--- utils/websocket_test.go | 24 ++++++ 31 files changed, 462 insertions(+), 253 deletions(-) create mode 100644 .circleci/config.yml create mode 100644 .vscode/launch.json rename keys/keys.db/LOCK => MANDATE.md (100%) create mode 100644 MOTIVATION.md create mode 100644 coverage.txt delete mode 100644 keys/keys.db/000004.ldb delete mode 100644 keys/keys.db/000007.ldb delete mode 100644 keys/keys.db/000010.log delete mode 100644 keys/keys.db/CURRENT delete mode 100644 keys/keys.db/CURRENT.bak delete mode 100644 keys/keys.db/LOG delete mode 100644 keys/keys.db/MANIFEST-000011 rename utils/{generator.go => app.go} (75%) create mode 100644 utils/app_test.go delete mode 100644 utils/errors.go create mode 100644 utils/keys_test.go create mode 100644 utils/test_common.go create mode 100644 utils/websocket_test.go diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..65cef85 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,24 @@ +version: 2.1 + +jobs: + build: + docker: + - image: circleci/golang:1.11 + steps: + - checkout + - run: + name: install + command: make install + - run: + name: codecov report + command: | + go test -timeout 3600s ./utils/... -coverprofile=coverage.txt + - run: + name: upload + command: bash <(curl -s https://codecov.io/bash) -f coverage.txt + +workflows: + version: 2 + test-suite: + jobs: + - build \ No newline at end of file diff --git a/.gitignore b/.gitignore index dfce386..53a6eb6 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ *.dylib .DS_Store +.vscode # Test binary, build with `go test -c` *.test diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..0ec831d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "${fileDirname}", + "env": {}, + "args": [] + } + ] +} \ No newline at end of file diff --git a/keys/keys.db/LOCK b/MANDATE.md similarity index 100% rename from keys/keys.db/LOCK rename to MANDATE.md diff --git a/MOTIVATION.md b/MOTIVATION.md new file mode 100644 index 0000000..e69de29 diff --git a/Makefile b/Makefile index 826b4ae..9817b73 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -BINARY = feegiver +BINARY = santa GITHUB_USERNAME = terra-project VERSION = v0.1.0 GOARCH = amd64 diff --git a/README.md b/README.md index a86595b..d2c397a 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,55 @@ -# Build & Install +# Santa Claus + +![banner](docs/terra-core.png) + +Santa Claus subsidizes block rewards for Terra's Columbus mainnet. It is intended to subsidize the security of the network until Terra transaction volume (and attendent staking returns from transaction fees) has had sufficient time to mature. A detailed explanation on the [motivation](./MOTIVATION.md) for starting Santa Claus is explained. + +## Build & Install + +First, check out the rep + ``` -$ git clone https://github.com/terra-project/feegiver.git +$ git clone https://github.com/terra-project/santa.git $ git checkout master ``` -## Install +### Install ``` $ make install ``` -## make config +### Make config ``` -$ feegiver config +$ santa config ``` -## change config +### Change config ``` -$ vim ~/.feegiver/config.yaml +$ vim ~/.santa/config.yaml ``` -## Add Key +### Add / Recover Key ``` -$ feegiver keys add yun -Enter a passphrase to encrypt your key to disk: -Repeat the passphrase: -{"name":"yun","type":"local","address":"terra1a26sc2vqs20hfx239kejhd88v6cl87yfswvk0t","pubkey":"terrapub1addwnpepqwspkmsl724h9azfvgqgs8jkyuyyr3d6eme432afvlvulk3al0mwwnxwlxv","mnemonic":"decade urge pond sustain unit film milk sunny wash accuse profit staff what black problem treat velvet metal leg review math history juice soccer"} +$ feegiver keys add yun ``` + ## Recover Key ``` $ feegiver keys add yun --recover -Enter a passphrase to encrypt your key to disk: -Repeat the passphrase: -> Enter your bip39 mnemonic -theory fat merge under hungry utility toss much trend turkey degree glare bread connect trend grain silk toe pupil crouch innocent pause zero shove - -{"name":"yun","type":"local","address":"terra1gn37dh0jl4zu4fp48d8y4c0hqs9cel83x7st7v","pubkey":"terrapub1addwnpepqfukqlgu8chxwwqns6adgjxvfny6y6tcvqmqkkn2xk6e6kefdaggvh4j7f0","mnemonic":"spatial fantasy weekend romance entire million celery final moon solid route theory way hockey north trigger advice balcony melody fabric alter bullet twice push"} ``` -## Add Key with Old HD Path -``` -$ feegiver keys add yun --recover --old-hd-path -Enter a passphrase to encrypt your key to disk: -Repeat the passphrase: -> Enter your bip39 mnemonic -flash until glimpse chase cradle adjust brick view uncover analyst test pact sponsor example item victory memory attract visual hover pink meadow mosquito torch -{"name":"yun","type":"local","address":"terra1gn37dh0jl4zu4fp48d8y4c0hqs9cel83x7st7v","pubkey":"terrapub1addwnpepqfukqlgu8chxwwqns6adgjxvfny6y6tcvqmqkkn2xk6e6kefdaggvh4j7f0","mnemonic":"spatial fantasy weekend romance entire million celery final moon solid route theory way hockey north trigger advice balcony melody fabric alter bullet twice push"} -``` ## Start Server ``` -$ feegiver start yun +$ santa start yun Enter the passphrase: ``` + + +## Status + + + +## Mechanism + + diff --git a/cmd/config.go b/cmd/config.go index 2a6c845..4fb8ad5 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -6,7 +6,7 @@ import ( homedir "github.com/mitchellh/go-homedir" "github.com/spf13/cobra" - "github.com/terra-project/feegiver/utils" + "github.com/terra-project/santa/utils" yaml "gopkg.in/yaml.v2" ) @@ -21,8 +21,8 @@ var configCmd = &cobra.Command{ return } - g := utils.Generator{ - KeyDir: fmt.Sprintf("%s/.feegiver", home), + g := utils.SantaApp{ + KeyDir: fmt.Sprintf("%s/.santa", home), Node: "http://localhost:26657", TriggerInterval: "5", diff --git a/cmd/keys.go b/cmd/keys.go index 7b7fd18..92c45c4 100644 --- a/cmd/keys.go +++ b/cmd/keys.go @@ -29,7 +29,7 @@ var keysList = &cobra.Command{ Use: "list", Short: "Fetch all keys managed by the server", Run: func(cmd *cobra.Command, args []string) { - out, err := generator.GetKeys() + out, err := app.GetKeys() if err != nil { log.Fatalf("Failed: %s", err.Error()) return @@ -76,7 +76,7 @@ var keysAdd = &cobra.Command{ return } - out, err := generator.AddNewKey(args[0], password, mnemonic, oldHdPath) + out, err := app.AddNewKey(args[0], password, mnemonic, oldHdPath) if err != nil { log.Fatalf("Failed: %s", err.Error()) @@ -92,7 +92,7 @@ var keyShow = &cobra.Command{ Args: cobra.ExactArgs(1), Short: "Fetch details for one key", Run: func(cmd *cobra.Command, args []string) { - out, err := generator.GetKey(args[0], viper.GetString(flagBech)) + out, err := app.GetKey(args[0], viper.GetString(flagBech)) if err != nil { log.Fatalf("Failed: %s", err.Error()) @@ -123,7 +123,7 @@ var keyPut = &cobra.Command{ log.Fatalf("failed reading new password: %s", err.Error()) return } - err = generator.UpdateKey(args[0], password, newPassword) + err = app.UpdateKey(args[0], password, newPassword) if err != nil { log.Fatalf("Failed: %s", err.Error()) return @@ -145,7 +145,7 @@ var keyDelete = &cobra.Command{ return } - err = generator.DeleteKey(args[0], password) + err = app.DeleteKey(args[0], password) if err != nil { log.Fatalf("Failed: %s", err.Error()) return diff --git a/cmd/root.go b/cmd/root.go index f192639..b5e7df6 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -7,7 +7,7 @@ import ( homedir "github.com/mitchellh/go-homedir" "github.com/spf13/cobra" - "github.com/terra-project/feegiver/utils" + "github.com/terra-project/santa/utils" yaml "gopkg.in/yaml.v2" ) @@ -16,7 +16,7 @@ var ( cfgFile string // The actual app config - generator utils.Generator + app utils.SantaApp // Version for the application. Set via ldflags Version = "undefined" @@ -30,7 +30,7 @@ var ( // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ - Use: "feegiver", + Use: "santa", Short: "An fee giver server for terra", } @@ -45,12 +45,12 @@ func Execute() { func init() { cobra.OnInitialize(initConfig) - rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.feegiver/config.yaml)") + rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.santa/config.yaml)") rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") } func initConfig() { - generator = utils.Generator{ + app = utils.SantaApp{ Version: Version, Commit: Commit, Branch: Branch, @@ -72,13 +72,16 @@ func initConfig() { os.Exit(1) } - cfgFile = fmt.Sprintf("%s/.feegiver/config.yaml", home) - bz, err = ioutil.ReadFile(cfgFile) - if err != nil { - fmt.Println(err) - os.Exit(1) + cfgFile = fmt.Sprintf("%s/.santa/config.yaml", home) + if _, err := os.Stat(cfgFile); err == nil { + bz, err = ioutil.ReadFile(cfgFile) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + yaml.Unmarshal(bz, &app) } } - yaml.Unmarshal(bz, &generator) } diff --git a/cmd/start.go b/cmd/start.go index dfb02f1..44ff7f6 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -24,24 +24,22 @@ var startCmd = &cobra.Command{ return } - generator.KeyName = args[0] - generator.KeyPassword = password + app.KeyName = args[0] + app.KeyPassword = password - kb, err := keys.NewKeyBaseFromDir(generator.KeyDir) + kb, err := keys.NewKeyBaseFromDir(app.KeyDir) if err != nil { log.Fatalf("failed to open keybase: %s", err.Error()) return } - _, err = kb.Get(generator.KeyName) + _, err = kb.Get(app.KeyName) if err != nil { log.Fatalf("failed to get account: %s", err.Error()) return } - generator.ListenNewBLock() - // err := generator.SendTx(10000, "vodka") - // fmt.Println(err) + app.ListenNewBLock(false) }, } diff --git a/coverage.txt b/coverage.txt new file mode 100644 index 0000000..5f02b11 --- /dev/null +++ b/coverage.txt @@ -0,0 +1 @@ +mode: set diff --git a/go.mod b/go.mod index 8417f04..a9adfb9 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/terra-project/feegiver +module github.com/terra-project/santa go 1.12 diff --git a/go.sum b/go.sum index 607b145..6a4b09b 100644 --- a/go.sum +++ b/go.sum @@ -103,6 +103,7 @@ github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bz github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf h1:+RRA9JqSOZFfKrOeqr2z77+8R2RKyh8PG66dcu1V0ck= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= @@ -128,8 +129,10 @@ github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM52 github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/magiconair/properties v1.7.6/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -318,6 +321,7 @@ google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= diff --git a/keys/keys.db/000004.ldb b/keys/keys.db/000004.ldb deleted file mode 100644 index c4be06b69ab29c8e4bd667e606cdfd3109994c22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 484 zcmeBRe!*bFQIc9zlxUcqXKbF5VUU$$QdMe_R$yY0Vo_<5Y>-h{Y?+*zV_{rjUR+{c zrk9wKQj}U;%*e#Rz{sRiS(>MpnU|K&Ah484kcWklkx}YH1OvljCf>E8wp`3WX(6@O zQ7_vSnJN=%W$g6QEri>4UGX^Mb8=B;MS>Z3RF>)1xzU>W0c}$68FfLx$<^J{Pa(wB z&&4&!*V8XVAt1;z%rV4O!P_;GQQ^ZyU9RkuG%JOq7`_F0PRD9OIHOv#?^Lq!gF1kbqq8(lk>er*uDk zgYZH>-(a_*q@cm i72|(SMiquAxXh1FyPD&<@a( diff --git a/keys/keys.db/000010.log b/keys/keys.db/000010.log deleted file mode 100644 index e08bd0d4642bc4cc9c1cb025768ad0fd970337bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmWgbH8QqkWMpT607f9i$Wd9Er!_FQicI?#>~h~3 z^w=!Mt@dAce+!Fr()s!C^%gs5yG`j`+8^dF^`21|1e{#mJ^d6yT>V^JgM2;xLKFgm zJi{DATot@sBf$!|vQyHm6q1sQDho=uiW756tQ6dwoJ}lTEKCdy&791PoQ;f)oQ<80 zOiY}dot%taEiAaWioMbuGrht>oXR{hvdSaO4V{dQETTNkBOJqvyb?^K9v(h8OxtzU9BlW9NN>Z}2L&A-{d`z4Q6Wx7{OOiuP z!t%n6D$^r^O(G&9ZMkeCEDIyJz%B*)0iQ>f?EU=E8yIZJVQ5m4T2z#1Se|Z_n^RPg tlAD*8on4uoUYKrDm6u&G^qfJR_ zQBk5{dY-X)N`^sJj!9LiNm_x4MT$kGNwPskVX