diff --git a/.gitignore b/.gitignore index d4c0eca..a0067ed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ bin/ e2e/persist +e2e/supporty/supporty .env blobsfiles \ No newline at end of file diff --git a/e2e/docker-compose.yml b/e2e/docker-compose.yml index 474649b..fae02ae 100644 --- a/e2e/docker-compose.yml +++ b/e2e/docker-compose.yml @@ -21,7 +21,7 @@ services: ## Wallet Server ## ################### walletserver: - image: lbry/wallet-server:v0.39.2 + image: lbry/wallet-server:v0.39.3 restart: always environment: - DB_DIRECTORY=/database @@ -47,7 +47,7 @@ services: ## Lbrynet ## ############# lbrynet: - image: lbry/lbrynet:v0.39.2 + image: lbry/lbrynet:v0.39.3 restart: always ports: - "15100:5279" @@ -93,14 +93,13 @@ services: depends_on: - mysql - lbrycrd - - lbrynet environment: - MYSQL_DSN=lbry:lbry@tcp(mysql:3306)/lbry - LBRYCRD_CONNECT=rpc://lbry:lbry@lbrycrd:29245 - MYSQL_USER=lbry - MYSQL_PASS=lbry - MYSQL_DATABASE=lbry - entrypoint: wait-for-it -t 0 mysql:3306 -- wait-for-it -t 0 lbrynet:5279 -- ./latest serve + entrypoint: wait-for-it -t 0 mysql:3306 -- wait-for-it -t 0 lbrycrd:29245 -- ./latest serve ###################### ## MySQL Chainquery ## ###################### diff --git a/e2e/e2e.sh b/e2e/e2e.sh index 560f856..e744f7c 100755 --- a/e2e/e2e.sh +++ b/e2e/e2e.sh @@ -4,6 +4,8 @@ set -e #Always compile ytsync make +#Always compile supporty +cd e2e/supporty && make && cd ../.. #OVERRIDE this in your .env file if running from mac. Check docker-compose.yml for details export LOCAL_TMP_DIR="/var/tmp:/var/tmp" @@ -55,11 +57,12 @@ echo "successfully started..." status=$(mysql -u lbry -plbry -ss -D lbry -h "127.0.0.1" -P 15500 -e 'SELECT status FROM youtube_data WHERE id=1') videoStatus=$(mysql -u lbry -plbry -ss -D lbry -h "127.0.0.1" -P 15500 -e 'SELECT status FROM synced_video WHERE id=1') videoClaimID=$(mysql -u lbry -plbry -ss -D lbry -h "127.0.0.1" -P 15500 -e 'SELECT claim_id FROM synced_video WHERE id=1') +videoClaimAddress=$(mysql -u lbry -plbry -ss -D chainquery -h "127.0.0.1" -P 15600 -e 'SELECT claim_address FROM claim WHERE id=2') # Create Supports for published claim -curl --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"supportclaim","params":["@BeamerTest","'${videoClaimID}'",1.0]}' -H 'content-type:text/plain;' --user lbry:lbry http://localhost:15200 -curl --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"supportclaim","params":["@BeamerTest","'${videoClaimID}'",2.0]}' -H 'content-type:text/plain;' --user lbry:lbry http://localhost:15200 -curl --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"supportclaim","params":["@BeamerTest","'${videoClaimID}'",3.0]}' -H 'content-type:text/plain;' --user lbry:lbry http://localhost:15200 -curl --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"supportclaim","params":["@BeamerTest","'${videoClaimID}'",3.0]}' -H 'content-type:text/plain;' --user lbry:lbry http://localhost:15200 +./supporty/supporty @BeamerTest "${videoClaimID}" "${videoClaimAddress}" lbrycrd_regtest 1.0 +./supporty/supporty @BeamerTest "${videoClaimID}" "${videoClaimAddress}" lbrycrd_regtest 2.0 +./supporty/supporty @BeamerTest "${videoClaimID}" "${videoClaimAddress}" lbrycrd_regtest 3.0 +./supporty/supporty @BeamerTest "${videoClaimID}" "${videoClaimAddress}" lbrycrd_regtest 3.0 curl --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"generate","params":[1]}' -H 'content-type:text/plain;' --user lbry:lbry http://localhost:15200 # Reset status for tranfer test mysql -u lbry -plbry -ss -D lbry -h "127.0.0.1" -P 15500 -e "UPDATE youtube_data SET status = 'queued' WHERE id = 1" @@ -70,12 +73,14 @@ curl -i -H 'Accept: application/json' -H 'Content-Type: application/json' 'http: # ALSO CHECK THAT VIDEO IS MARKED TRANSFERRED channelTransferStatus=$(mysql -u lbry -plbry -ss -D lbry -h "127.0.0.1" -P 15500 -e 'SELECT transfer_state FROM youtube_data WHERE id=1') videoTransferStatus=$(mysql -u lbry -plbry -ss -D lbry -h "127.0.0.1" -P 15500 -e 'SELECT transferred FROM synced_video WHERE id=1') -if [[ $status != "synced" || $videoStatus != "published" || $channelTransferStatus != "2" || $videoTransferStatus != "1" ]]; then +nrUnspentSupports=$(mysql -u lbry -plbry -ss -D chainquery -h "127.0.0.1" -P 15600 -e 'SELECT COUNT(*) FROM chainquery.support INNER JOIN output ON output.transaction_hash = support.transaction_hash_id AND output.vout = support.vout WHERE output.is_spent = 0') +if [[ $status != "synced" || $videoStatus != "published" || $channelTransferStatus != "2" || $videoTransferStatus != "1" || $nrUnspentSupports != "0" ]]; then echo "~~!!!~~~FAILED~~~!!!~~" echo "Channel Status: $status" echo "Video Status: $videoStatus" echo "Channel Transfer Status: $channelTransferStatus" echo "Video Transfer Status: $videoTransferStatus" + echo "Nr Unspent Supports: $nrUnspentSupports" #docker-compose logs --tail="all" lbrycrd #docker-compose logs --tail="all" walletserver #docker-compose logs --tail="all" lbrynet diff --git a/e2e/supporty/Makefile b/e2e/supporty/Makefile new file mode 100644 index 0000000..4c54d83 --- /dev/null +++ b/e2e/supporty/Makefile @@ -0,0 +1,12 @@ +BINARY=supporty + +DIR = $(shell cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) +BIN_DIR = ${DIR} + +.PHONY: build clean test lint +.DEFAULT_GOAL: build + + +build: + mkdir -p ${BIN_DIR} && CGO_ENABLED=0 go build -asmflags -trimpath=${DIR} -o ${BIN_DIR}/${BINARY} supporty.go + chmod +x ${BIN_DIR}/${BINARY} \ No newline at end of file diff --git a/e2e/supporty/supporty.go b/e2e/supporty/supporty.go new file mode 100644 index 0000000..e6e7422 --- /dev/null +++ b/e2e/supporty/supporty.go @@ -0,0 +1,43 @@ +package main + +import ( + "os" + "strconv" + "strings" + + "github.com/lbryio/ytsync/util" + + "github.com/sirupsen/logrus" +) + +func main() { + if len(os.Args) != 6 { + logrus.Info(strings.Join(os.Args, ",")) + logrus.Fatal("Not enough arguments: name, claimID, address, blockchainName, claimAmount") + } + println("Supporty!") + lbrycrd, err := util.GetLbrycrdClient(os.Getenv("LBRYCRD_STRING")) + if err != nil { + logrus.Fatal(err) + } + if lbrycrd == nil { + logrus.Fatal("Lbrycrd Client is nil") + } + amount, err := strconv.ParseFloat(os.Args[5], 64) + if err != nil { + logrus.Error(err) + } + name := os.Args[1] + claimid := os.Args[2] + claimAddress := os.Args[3] + blockChainName := os.Args[4] + logrus.Infof("Supporting %s[%s] with %.2f LBC on chain %s at address %s", name, claimid, amount, blockChainName, claimAddress) + hash, err := lbrycrd.SupportClaim(name, claimid, claimAddress, blockChainName, amount) + if err != nil { + logrus.Error(err) + } + if hash == nil { + logrus.Fatal("Tx not created!") + } + logrus.Info("Tx: ", hash.String()) +} diff --git a/go.mod b/go.mod index 93b8dc6..8bb89c3 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/hashicorp/serf v0.8.2 // indirect github.com/kr/pretty v0.1.0 // indirect github.com/lbryio/errors.go v0.0.0-20180223142025-ad03d3cc6a5c - github.com/lbryio/lbry.go v0.0.0-20190826222547-3a3377d0e5ec + github.com/lbryio/lbry.go v0.0.0-20190828031244-ecbd404da042 github.com/lbryio/reflector.go v1.0.6-0.20190806185326-2e4f235489f4 github.com/mitchellh/go-ps v0.0.0-20170309133038-4fdf99ab2936 github.com/opencontainers/go-digest v1.0.0-rc1 // indirect diff --git a/go.sum b/go.sum index fa04109..f1332ce 100644 --- a/go.sum +++ b/go.sum @@ -177,10 +177,10 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lbryio/errors.go v0.0.0-20180223142025-ad03d3cc6a5c h1:BhdcWGsuKif/XoSZnqVGNqJ1iEmH0czWR5upj+AuR8M= github.com/lbryio/errors.go v0.0.0-20180223142025-ad03d3cc6a5c/go.mod h1:muH7wpUqE8hRA3OrYYosw9+Sl681BF9cwcjzE+OCNK8= github.com/lbryio/lbry.go v0.0.0-20190109223729-30c312501602/go.mod h1:YEuFJD/oHNra6BFy+NfuvS84Wg6RMWJFGtiCCCc6MmQ= -github.com/lbryio/lbry.go v0.0.0-20190826222547-3a3377d0e5ec h1:wusAaT6POFVJwkwNA25I48Nr1DYTcuCAqmmum+WCYP8= -github.com/lbryio/lbry.go v0.0.0-20190826222547-3a3377d0e5ec/go.mod h1:JtyI30bU51rm0LZ/po3mQuzf++14OWb6kR/6mMRAmKU= -github.com/lbryio/lbryschema.go v0.0.0-20190428231007-c54836bca002 h1:urfYK5ElpUrAv90auPLldoVC60LwiGAcY0OE6HJB9KI= -github.com/lbryio/lbryschema.go v0.0.0-20190428231007-c54836bca002/go.mod h1:dAzPCBj3CKKWBGYBZxK6tKBP5SCgY2tqd9SnQd/OyKo= +github.com/lbryio/lbry.go v0.0.0-20190828031244-ecbd404da042 h1:L1AZ4DOGEKKKqfufdfqUgOnvBwWHwjH6in9FbQCg2+4= +github.com/lbryio/lbry.go v0.0.0-20190828031244-ecbd404da042/go.mod h1:qR+Ui0hYhemIU4fXqM3d1P9eiaRFlof777VJgV7KJ8w= +github.com/lbryio/lbryschema.go v0.0.0-20190602173230-6d2f69a36f46 h1:LemfR+rMxhf7nnOrzy2HqS7Me7SZ5gEwOcNFzKC8ySQ= +github.com/lbryio/lbryschema.go v0.0.0-20190602173230-6d2f69a36f46/go.mod h1:dAzPCBj3CKKWBGYBZxK6tKBP5SCgY2tqd9SnQd/OyKo= github.com/lbryio/ozzo-validation v0.0.0-20170323141101-d1008ad1fd04 h1:Nze+C2HbeKvhjI/kVn+9Poj/UuEW5sOQxcsxqO7L3GI= github.com/lbryio/ozzo-validation v0.0.0-20170323141101-d1008ad1fd04/go.mod h1:fbG/dzobG8r95KzMwckXiLMHfFjZaBRQqC9hPs2XAQ4= github.com/lbryio/reflector.go v1.0.6-0.20190806185326-2e4f235489f4 h1:SpUbq2YBg3ncetkw8APUgn8nFF8dscKzzhyiWMM7XCc= diff --git a/manager/transfer.go b/manager/transfer.go index 60a4d1a..203eafa 100644 --- a/manager/transfer.go +++ b/manager/transfer.go @@ -102,7 +102,7 @@ func transferVideos(s *Sync) error { videoStatus.Status = VideoStatusTranferFailed videoStatus.IsTransferred = util.PtrToBool(false) } - log.Printf("TRANSFER RESULT %+v", *result) //TODO: actually check the results to be sure it worked + log.Infof("TRANSFERRED %t", len(result.Outputs) != 0) statusErr := s.APIConfig.MarkVideoStatus(videoStatus) if statusErr != nil { return errors.Err(statusErr) @@ -134,7 +134,7 @@ func transferChannel(s *Sync) error { }, } result, err := s.daemon.ChannelUpdate(s.lbryChannelID, updateOptions) - log.Printf("TRANSFER RESULT %+v", *result) //TODO: actually check the results to be sure it worked + log.Infof("TRANSFERRED %t", len(result.Outputs) != 0) return errors.Err(err) } diff --git a/util/util.go b/util/util.go index 3b5a081..d44de77 100644 --- a/util/util.go +++ b/util/util.go @@ -173,10 +173,10 @@ func CleanForStartup() error { if err != nil { return errors.Err(err) } - const minBlocksForUTXO = 110 + const minBlocksForUTXO = 200 if height < minBlocksForUTXO { - //Start reg test will some credits - txs, err := lbrycrd.Generate(uint32(110) - uint32(height)) + //Start reg test with some credits + txs, err := lbrycrd.Generate(uint32(minBlocksForUTXO) - uint32(height)) if err != nil { return errors.Err(err) }