Remove tools from the repository (#4683)
This commit is contained in:
parent
74915f1e2a
commit
01d4425658
6
Makefile
6
Makefile
|
@ -50,6 +50,7 @@ go-mod-cache: go.sum
|
|||
go.sum: go.mod
|
||||
@echo "--> Ensure dependencies have not been modified"
|
||||
@go mod verify
|
||||
@go mod tidy
|
||||
|
||||
clean:
|
||||
rm -rf snapcraft-local.yaml build/
|
||||
|
@ -125,8 +126,9 @@ test_sim_benchmark_invariants:
|
|||
|
||||
# Don't move it into tools - this will be gone once gaia has moved into the new repo
|
||||
runsim: $(BINDIR)/runsim
|
||||
$(BINDIR)/runsim: contrib/runsim/main.go contrib/runsim/notification.go
|
||||
go install github.com/cosmos/cosmos-sdk/contrib/runsim
|
||||
$(BINDIR)/runsim:
|
||||
go get github.com/cosmos/tools/cmd/runsim/
|
||||
go mod tidy
|
||||
|
||||
SIM_NUM_BLOCKS ?= 500
|
||||
SIM_BLOCK_SIZE ?= 200
|
||||
|
|
|
@ -52,7 +52,9 @@ CLOG = $(TOOLS_DESTDIR)/clog
|
|||
all: tools
|
||||
|
||||
tools: tools-stamp
|
||||
tools-stamp: $(STATIK) $(GOIMPORTS) $(CLOG)
|
||||
go mod tidy
|
||||
|
||||
tools-stamp: $(STATIK) $(GOIMPORTS)
|
||||
touch $@
|
||||
|
||||
$(GOLANGCI_LINT): $(mkfile_dir)/install-golangci-lint.sh
|
||||
|
@ -65,7 +67,7 @@ $(GOIMPORTS):
|
|||
go get golang.org/x/tools/cmd/goimports@v0.0.0-20190628034336-212fb13d595e
|
||||
|
||||
$(CLOG):
|
||||
$(call go_install,alessio,clog,1)
|
||||
go get github.com/cosmos/tools/cmd/clog/
|
||||
|
||||
golangci-lint: $(GOLANGCI_LINT)
|
||||
|
||||
|
|
|
@ -1,356 +0,0 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"os/signal"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
GithubConfigSep = ","
|
||||
SlackConfigSep = ","
|
||||
)
|
||||
|
||||
var (
|
||||
// default seeds
|
||||
seeds = []int{
|
||||
1, 2, 4, 7, 32, 123, 124, 582, 1893, 2989,
|
||||
3012, 4728, 37827, 981928, 87821, 891823782,
|
||||
989182, 89182391, 11, 22, 44, 77, 99, 2020,
|
||||
3232, 123123, 124124, 582582, 18931893,
|
||||
29892989, 30123012, 47284728, 7601778, 8090485,
|
||||
977367484, 491163361, 424254581, 673398983,
|
||||
}
|
||||
seedOverrideList = ""
|
||||
|
||||
// goroutine-safe process map
|
||||
procs map[int]*os.Process
|
||||
mutex *sync.Mutex
|
||||
|
||||
// results channel
|
||||
results chan bool
|
||||
|
||||
// command line arguments and options
|
||||
jobs = runtime.GOMAXPROCS(0)
|
||||
pkgName string
|
||||
blocks string
|
||||
period string
|
||||
testname string
|
||||
genesis string
|
||||
exitOnFail bool
|
||||
githubConfig string
|
||||
logObjKey string
|
||||
slackConfig string
|
||||
|
||||
// integration with Slack and Github
|
||||
slackToken string
|
||||
slackChannel string
|
||||
slackThread string
|
||||
|
||||
// logs temporary directory
|
||||
tempdir string
|
||||
)
|
||||
|
||||
func init() {
|
||||
log.SetPrefix("")
|
||||
log.SetFlags(0)
|
||||
|
||||
runsimLogfile, err := os.OpenFile("sim_log_file", os.O_RDWR|os.O_APPEND|os.O_CREATE, 0666)
|
||||
if err != nil {
|
||||
log.Printf("ERROR: opening log file: %v", err.Error())
|
||||
} else {
|
||||
log.SetOutput(io.MultiWriter(os.Stdout, runsimLogfile))
|
||||
}
|
||||
|
||||
procs = map[int]*os.Process{}
|
||||
mutex = &sync.Mutex{}
|
||||
|
||||
flag.IntVar(&jobs, "j", jobs, "Number of parallel processes")
|
||||
flag.StringVar(&genesis, "g", "", "Genesis file")
|
||||
flag.StringVar(&seedOverrideList, "seeds", "", "run the supplied comma-separated list of seeds instead of defaults")
|
||||
flag.BoolVar(&exitOnFail, "e", false, "Exit on fail during multi-sim, print error")
|
||||
flag.StringVar(&logObjKey, "log", "", "S3 object key for log files")
|
||||
flag.StringVar(&githubConfig, "github", "", "Report results to Github's PR")
|
||||
flag.StringVar(&slackConfig, "slack", "", "Report results to slack channel")
|
||||
|
||||
flag.Usage = func() {
|
||||
_, _ = fmt.Fprintf(flag.CommandLine.Output(),
|
||||
`Usage: %s [-j maxprocs] [-seeds comma-separated-seed-list] [-rev git-commmit-hash] [-g genesis.json] [-e] [-github token,pr-url] [-slack token,channel,thread] [package] [blocks] [period] [testname]
|
||||
Run simulations in parallel`, filepath.Base(os.Args[0]))
|
||||
flag.PrintDefaults()
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
var err error
|
||||
|
||||
flag.Parse()
|
||||
if flag.NArg() != 4 {
|
||||
log.Fatal("wrong number of arguments")
|
||||
}
|
||||
|
||||
if githubConfig != "" {
|
||||
opts := strings.Split(githubConfig, GithubConfigSep)
|
||||
if len(opts) != 2 {
|
||||
log.Fatal("incorrect github config string format")
|
||||
}
|
||||
}
|
||||
|
||||
if slackConfig != "" {
|
||||
opts := strings.Split(slackConfig, SlackConfigSep)
|
||||
if len(opts) != 3 {
|
||||
log.Fatal("incorrect slack config string format")
|
||||
}
|
||||
slackToken, slackChannel, slackThread = opts[0], opts[1], opts[2]
|
||||
}
|
||||
|
||||
seedOverrideList = strings.TrimSpace(seedOverrideList)
|
||||
if seedOverrideList != "" {
|
||||
seeds, err = makeSeedList(seedOverrideList)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
queue := make(chan int, len(seeds))
|
||||
for _, seed := range seeds {
|
||||
queue <- seed
|
||||
}
|
||||
close(queue)
|
||||
|
||||
// jobs cannot be > len(seeds)
|
||||
if jobs > len(seeds) {
|
||||
jobs = len(seeds)
|
||||
}
|
||||
results = make(chan bool, len(seeds))
|
||||
|
||||
// setup signal handling
|
||||
sigs := make(chan os.Signal, 1)
|
||||
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
|
||||
|
||||
go func() {
|
||||
_ = <-sigs
|
||||
fmt.Println()
|
||||
|
||||
// drain the queue
|
||||
log.Printf("Draining seeds queue...")
|
||||
for seed := range queue {
|
||||
log.Printf("%d", seed)
|
||||
}
|
||||
log.Printf("Kill all remaining processes...")
|
||||
killAllProcs()
|
||||
os.Exit(1)
|
||||
}()
|
||||
|
||||
// initialise common test parameters
|
||||
pkgName = flag.Arg(0)
|
||||
blocks = flag.Arg(1)
|
||||
period = flag.Arg(2)
|
||||
testname = flag.Arg(3)
|
||||
tempdir, err = ioutil.TempDir("", "")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// set up worker pool
|
||||
log.Printf("Allocating %d workers...", jobs)
|
||||
wg := sync.WaitGroup{}
|
||||
for workerID := 0; workerID < jobs; workerID++ {
|
||||
wg.Add(1)
|
||||
|
||||
go func(workerID int) {
|
||||
defer wg.Done()
|
||||
worker(workerID, queue)
|
||||
}(workerID)
|
||||
}
|
||||
|
||||
// idiomatic hack required to use wg.Wait() with select
|
||||
waitCh := make(chan struct{})
|
||||
go func() {
|
||||
defer close(waitCh)
|
||||
wg.Wait()
|
||||
}()
|
||||
|
||||
wait:
|
||||
for {
|
||||
select {
|
||||
case <-waitCh:
|
||||
break wait
|
||||
case <-time.After(1 * time.Minute):
|
||||
fmt.Println(".")
|
||||
}
|
||||
}
|
||||
|
||||
// analyse results and exit with 1 on first error
|
||||
close(results)
|
||||
for rc := range results {
|
||||
if !rc {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
if slackConfigSupplied() {
|
||||
seedStrings := make([]string, len(seeds))
|
||||
for i, seed := range seeds {
|
||||
seedStrings[i] = fmt.Sprintf("%d", seed)
|
||||
}
|
||||
slackMessage(slackToken, slackChannel, &slackThread, fmt.Sprintf("Finished running simulation for seeds: %s", strings.Join(seedStrings, " ")))
|
||||
}
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
func buildCommand(testName, blocks, period, genesis string, seed int) string {
|
||||
return fmt.Sprintf("go test %s -run %s -SimulationEnabled=true "+
|
||||
"-SimulationNumBlocks=%s -SimulationGenesis=%s "+
|
||||
"-SimulationVerbose=true -SimulationCommit=true -SimulationSeed=%d -SimulationPeriod=%s -v -timeout 24h",
|
||||
pkgName, testName, blocks, genesis, seed, period)
|
||||
}
|
||||
|
||||
func makeCmd(cmdStr string) *exec.Cmd {
|
||||
cmdSlice := strings.Split(cmdStr, " ")
|
||||
return exec.Command(cmdSlice[0], cmdSlice[1:]...)
|
||||
}
|
||||
|
||||
func makeFilename(seed int) string {
|
||||
return fmt.Sprintf("app-simulation-seed-%d-date-%s", seed, time.Now().Format("01-02-2006_150405"))
|
||||
}
|
||||
|
||||
func makeFailSlackMsg(seed int, stdoutKey, stderrKey, bucket string, logsPushed bool) string {
|
||||
if logsPushed {
|
||||
return fmt.Sprintf("*Seed %s: FAILED*. *<https://%s.s3.amazonaws.com/%s|stdout>* *<https://%s.s3.amazonaws.com/%s|stderr>*\nTo reproduce run: ```\n%s\n```",
|
||||
strconv.Itoa(seed), bucket, stdoutKey, bucket, stderrKey, buildCommand(testname, blocks, period, genesis, seed))
|
||||
}
|
||||
return fmt.Sprintf("*Seed %s: FAILED*. \nTo reproduce run: ```\n%s\n```\n*Could not upload logs:* ```\n%s\n```",
|
||||
strconv.Itoa(seed), buildCommand(testname, blocks, period, genesis, seed), bucket)
|
||||
}
|
||||
|
||||
func worker(id int, seeds <-chan int) {
|
||||
log.Printf("[W%d] Worker is up and running", id)
|
||||
for seed := range seeds {
|
||||
stdOut, stdErr, err := spawnProc(id, seed)
|
||||
if err != nil {
|
||||
results <- false
|
||||
log.Printf("[W%d] Seed %d: FAILED", id, seed)
|
||||
log.Printf("To reproduce run: %s", buildCommand(testname, blocks, period, genesis, seed))
|
||||
if slackConfigSupplied() {
|
||||
objKeys, bucket, err := pushLogs(stdOut, stdErr, logObjKey)
|
||||
if err != nil {
|
||||
slackMessage(slackToken, slackChannel, nil, makeFailSlackMsg(seed, "", "", err.Error(), false))
|
||||
}
|
||||
slackMessage(slackToken, slackChannel, nil, makeFailSlackMsg(seed, objKeys[0], objKeys[1], *bucket, true))
|
||||
}
|
||||
if exitOnFail {
|
||||
log.Printf("\bERROR OUTPUT \n\n%s", err)
|
||||
panic("halting simulations")
|
||||
}
|
||||
}
|
||||
log.Printf("[W%d] Seed %d: OK", id, seed)
|
||||
if slackConfigSupplied() {
|
||||
_, _, err = pushLogs(stdOut, stdErr, logObjKey)
|
||||
if err != nil {
|
||||
log.Printf("%v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
log.Printf("[W%d] no seeds left, shutting down", id)
|
||||
}
|
||||
|
||||
func spawnProc(workerID int, seed int) (*os.File, *os.File, error) {
|
||||
stderrFile, _ := os.Create(filepath.Join(tempdir, makeFilename(seed)+".stderr"))
|
||||
stdoutFile, _ := os.Create(filepath.Join(tempdir, makeFilename(seed)+".stdout"))
|
||||
s := buildCommand(testname, blocks, period, genesis, seed)
|
||||
cmd := makeCmd(s)
|
||||
cmd.Stdout = stdoutFile
|
||||
|
||||
var err error
|
||||
var stderr io.ReadCloser
|
||||
if !exitOnFail {
|
||||
cmd.Stderr = stderrFile
|
||||
} else {
|
||||
stderr, err = cmd.StderrPipe()
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
}
|
||||
sc := bufio.NewScanner(stderr)
|
||||
|
||||
err = cmd.Start()
|
||||
if err != nil {
|
||||
log.Printf("couldn't start %q", s)
|
||||
return nil, nil, err
|
||||
}
|
||||
log.Printf("[W%d] Spawned simulation with pid %d [seed=%d stdout=%s stderr=%s]",
|
||||
workerID, cmd.Process.Pid, seed, stdoutFile.Name(), stderrFile.Name())
|
||||
pushProcess(cmd.Process)
|
||||
defer popProcess(cmd.Process)
|
||||
|
||||
err = cmd.Wait()
|
||||
if err != nil {
|
||||
fmt.Printf("%s\n", err)
|
||||
}
|
||||
if exitOnFail {
|
||||
for sc.Scan() {
|
||||
fmt.Printf("stderr: %s\n", sc.Text())
|
||||
}
|
||||
}
|
||||
return stdoutFile, stderrFile, err
|
||||
}
|
||||
|
||||
func pushProcess(proc *os.Process) {
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
procs[proc.Pid] = proc
|
||||
}
|
||||
|
||||
func popProcess(proc *os.Process) {
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
if _, ok := procs[proc.Pid]; ok {
|
||||
delete(procs, proc.Pid)
|
||||
}
|
||||
}
|
||||
|
||||
func killAllProcs() {
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
for _, proc := range procs {
|
||||
checkSignal(proc, syscall.SIGTERM)
|
||||
checkSignal(proc, syscall.SIGKILL)
|
||||
}
|
||||
}
|
||||
|
||||
func checkSignal(proc *os.Process, signal syscall.Signal) {
|
||||
if err := proc.Signal(signal); err != nil {
|
||||
log.Printf("Failed to send %s to PID %d", signal, proc.Pid)
|
||||
}
|
||||
}
|
||||
|
||||
func makeSeedList(seeds string) ([]int, error) {
|
||||
strSeedsLst := strings.Split(seeds, ",")
|
||||
if len(strSeedsLst) == 0 {
|
||||
return nil, fmt.Errorf("seeds was empty")
|
||||
}
|
||||
intSeeds := make([]int, len(strSeedsLst))
|
||||
for i, seedstr := range strSeedsLst {
|
||||
intSeed, err := strconv.Atoi(strings.TrimSpace(seedstr))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("cannot convert seed to integer: %v", err)
|
||||
}
|
||||
intSeeds[i] = intSeed
|
||||
}
|
||||
return intSeeds, nil
|
||||
}
|
||||
|
||||
func slackConfigSupplied() bool { return slackConfig != "" }
|
|
@ -1,244 +0,0 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||
"github.com/aws/aws-sdk-go/aws/session"
|
||||
"github.com/aws/aws-sdk-go/service/s3"
|
||||
"github.com/nlopes/slack"
|
||||
)
|
||||
|
||||
const (
|
||||
logBucketPrefix = "sim-logs-"
|
||||
awsRegion = "us-east-1"
|
||||
)
|
||||
|
||||
func awsErrHandler(err error) error {
|
||||
if awsErr, ok := err.(awserr.Error); ok {
|
||||
switch awsErr.Code() {
|
||||
default:
|
||||
return awsErr
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func makeObjKey(objKeyPrefix string, fileName string) string {
|
||||
return fmt.Sprintf("%s/%s", objKeyPrefix, fileName)
|
||||
}
|
||||
|
||||
// putObjects attempts to upload to an S3 bucket the content of each file from fileHandles.
|
||||
// File descriptors have their read offset set to 0 to ensure all the content is uploaded.
|
||||
// Each file will become an S3 bucket object that can be accessed via its object key.
|
||||
//
|
||||
// Function returns the list of object keys and an error, if any.
|
||||
func putObjects(svc *s3.S3, objKeyPrefix string, bucketName string, fileHandles ...*os.File) ([]string, error) {
|
||||
objKeys := make([]string, len(fileHandles))
|
||||
for index, fileHandle := range fileHandles {
|
||||
_, _ = fileHandle.Seek(0, 0)
|
||||
objKey := makeObjKey(objKeyPrefix, filepath.Base(fileHandle.Name()))
|
||||
stdOutObjInput := &s3.PutObjectInput{
|
||||
Body: aws.ReadSeekCloser(fileHandle),
|
||||
Bucket: aws.String(bucketName),
|
||||
Key: aws.String(objKey),
|
||||
}
|
||||
_, err := svc.PutObject(stdOutObjInput)
|
||||
if err != nil {
|
||||
return nil, awsErrHandler(err)
|
||||
}
|
||||
objKeys[index] = objKey
|
||||
}
|
||||
return objKeys, nil
|
||||
}
|
||||
|
||||
func pushLogs(stdOut *os.File, stdErr *os.File, folderName string) ([]string, *string, error) {
|
||||
var logBucket *string
|
||||
|
||||
sessionS3 := s3.New(session.Must(session.NewSession(&aws.Config{
|
||||
Region: aws.String(awsRegion),
|
||||
})))
|
||||
listBucketsOutput, err := sessionS3.ListBuckets(&s3.ListBucketsInput{})
|
||||
if err != nil {
|
||||
return nil, nil, awsErrHandler(err)
|
||||
}
|
||||
for _, bucket := range listBucketsOutput.Buckets {
|
||||
if strings.Contains(*bucket.Name, logBucketPrefix) {
|
||||
logBucket = bucket.Name
|
||||
objKeys, err := putObjects(sessionS3, folderName, *logBucket, stdOut, stdErr)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
return objKeys, bucket.Name, nil
|
||||
}
|
||||
}
|
||||
return nil, nil, nil
|
||||
}
|
||||
|
||||
func slackMessage(token string, channel string, threadTS *string, message string) {
|
||||
client := slack.New(token)
|
||||
if threadTS != nil {
|
||||
_, _, err := client.PostMessage(channel, slack.MsgOptionText(message, false), slack.MsgOptionTS(*threadTS))
|
||||
if err != nil {
|
||||
log.Printf("ERROR: %v", err)
|
||||
}
|
||||
} else {
|
||||
_, _, err := client.PostMessage(channel, slack.MsgOptionText(message, false))
|
||||
if err != nil {
|
||||
log.Printf("ERROR: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//type GithubPayload struct {
|
||||
// Issue struct {
|
||||
// Number int `json:"number"`
|
||||
// Pull struct {
|
||||
// Url string `json:"url,omitempty"`
|
||||
// } `json:"pull_request,omitempty"`
|
||||
// } `json:"issue"`
|
||||
//
|
||||
// Comment struct {
|
||||
// Body string `json:"body"`
|
||||
// } `json:"comment"`
|
||||
//
|
||||
// Repository struct {
|
||||
// Name string `json:"name"`
|
||||
// Owner struct {
|
||||
// Login string `json:"login"`
|
||||
// } `json:"owner"`
|
||||
// } `json:"repository"`
|
||||
//}
|
||||
//
|
||||
//type PullRequestDetails struct {
|
||||
// Head struct {
|
||||
// Ref string `json:"ref"`
|
||||
// Sha string `json:"sha"`
|
||||
// } `json:"head"`
|
||||
//}
|
||||
|
||||
//func createCheckRun(client *github.Client, payload GithubPayload, pr PullRequestDetails) error {
|
||||
// var opt github.CreateCheckRunOptions
|
||||
// opt.Name = "Test Check"
|
||||
// opt.HeadBranch = pr.Head.Ref
|
||||
// opt.HeadSHA = pr.Head.Sha
|
||||
//
|
||||
// checkRUn, resp, err := client.Checks.CreateCheckRun(context.Background(), payload.Repository.Owner.Login, payload.Repository.Name, opt)
|
||||
// log.Printf("%v", resp)
|
||||
// log.Printf("%v", checkRUn)
|
||||
// if err != nil {
|
||||
// log.Printf("ERROR: CreateCheckRun: %v", err.Error())
|
||||
// return err
|
||||
// }
|
||||
// return err
|
||||
//}
|
||||
//
|
||||
//func getPrDetails(prUrl string) (*PullRequestDetails, error) {
|
||||
// request, err := http.Get(prUrl)
|
||||
// if err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
//
|
||||
// var details PullRequestDetails
|
||||
// if err := json.NewDecoder(request.Body).Decode(&details); err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
//
|
||||
// return &details, nil
|
||||
//}
|
||||
//
|
||||
//func updateCheckRun(client *github.Client, payload GithubPayload, pr PullRequestDetails) error {
|
||||
// status := "completed"
|
||||
// conclusion := "success"
|
||||
// var opt github.UpdateCheckRunOptions
|
||||
// opt.Name = "Test Check"
|
||||
// opt.Status = &status
|
||||
// opt.Conclusion = &conclusion
|
||||
// ts := github.Timestamp{Time: time.Now()}
|
||||
// opt.CompletedAt = &ts
|
||||
//
|
||||
// updatedCheck, resp, err := client.Checks.UpdateCheckRun(context.Background(), payload.Repository.Owner.Login, payload.Repository.Name, 136693316, opt)
|
||||
// log.Printf("%v", updatedCheck)
|
||||
// log.Printf("%v", resp)
|
||||
// if err != nil {
|
||||
// log.Printf("ERROR: UpdateCheckRun: %v", err.Error())
|
||||
// return err
|
||||
// }
|
||||
// return nil
|
||||
//}
|
||||
|
||||
//func githubCheckHandler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
|
||||
// response := events.APIGatewayProxyResponse{StatusCode: 200}
|
||||
// var comment GithubPayload
|
||||
// if err := json.NewDecoder(bytes.NewBufferString(request.Body)).Decode(&comment); err != nil {
|
||||
// response.StatusCode = 500
|
||||
// response.Body = err.Error()
|
||||
// return response, err
|
||||
// }
|
||||
//
|
||||
// itr, err := ghinstallation.NewKeyFromFile(http.DefaultTransport, 30867, 997580, "github-integration/gaia-sim.2019-05-16.private-key.pem")
|
||||
// if err != nil {
|
||||
// response.StatusCode = 500
|
||||
// response.Body = err.Error()
|
||||
// log.Printf("AuthError: %v", err)
|
||||
// return response, err
|
||||
// }
|
||||
// client := github.NewClient(&http.Client{Transport: itr})
|
||||
// message := "App comment"
|
||||
// issue := new(github.IssueComment)
|
||||
// issue.Body = &message
|
||||
//
|
||||
// if comment.Comment.Body == "Start sim" && comment.Issue.Pull.Url != "" {
|
||||
// prDetails, err := getPrDetails(comment.Issue.Pull.Url)
|
||||
// if err != nil {
|
||||
// response.StatusCode = 500
|
||||
// response.Body = err.Error()
|
||||
// log.Printf("ERROR: getPrDetails: %v", err.Error())
|
||||
// return response, err
|
||||
// }
|
||||
// log.Printf("%v", prDetails)
|
||||
//
|
||||
// if err := createCheckRun(client, comment, *prDetails); err != nil {
|
||||
// response.StatusCode = 500
|
||||
// response.Body = err.Error()
|
||||
// return response, err
|
||||
// }
|
||||
//
|
||||
// comments, resp, err := client.Issues.CreateComment(context.Background(),
|
||||
// comment.Repository.Owner.Login, comment.Repository.Name, comment.Issue.Number, issue)
|
||||
//
|
||||
// log.Printf("%v", resp)
|
||||
// log.Printf("%v", comments)
|
||||
// if err != nil {
|
||||
// log.Printf("ERROR: CreateComment: %v", err.Error())
|
||||
// response.StatusCode = 500
|
||||
// response.Body = err.Error()
|
||||
// return response, err
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if comment.Comment.Body == "Update check" && comment.Issue.Pull.Url != "" {
|
||||
// prDetails, err := getPrDetails(comment.Issue.Pull.Url)
|
||||
// if err != nil {
|
||||
// response.StatusCode = 500
|
||||
// response.Body = err.Error()
|
||||
// log.Printf("ERROR: getPrDetails: %v", err.Error())
|
||||
// return response, err
|
||||
// }
|
||||
// log.Printf("%v", prDetails)
|
||||
//
|
||||
// if err := updateCheckRun(client, comment, *prDetails); err != nil {
|
||||
// response.StatusCode = 500
|
||||
// response.Body = err.Error()
|
||||
// log.Printf("ERROR: getPrDetails: %v", err.Error())
|
||||
// return response, err
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return response, nil
|
||||
//}
|
4
go.mod
4
go.mod
|
@ -1,7 +1,6 @@
|
|||
module github.com/cosmos/cosmos-sdk
|
||||
|
||||
require (
|
||||
github.com/aws/aws-sdk-go v1.20.11
|
||||
github.com/bartekn/go-bip39 v0.0.0-20171116152956-a05967ea095d
|
||||
github.com/bgentry/speakeasy v0.1.0
|
||||
github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d
|
||||
|
@ -15,10 +14,7 @@ require (
|
|||
github.com/golang/snappy v0.0.1 // indirect
|
||||
github.com/gorilla/mux v1.7.0
|
||||
github.com/gorilla/websocket v1.4.0 // indirect
|
||||
github.com/lusis/go-slackbot v0.0.0-20180109053408-401027ccfef5 // indirect
|
||||
github.com/lusis/slack-test v0.0.0-20190426140909-c40012f20018 // indirect
|
||||
github.com/mattn/go-isatty v0.0.6
|
||||
github.com/nlopes/slack v0.5.0
|
||||
github.com/pelletier/go-toml v1.2.0
|
||||
github.com/pkg/errors v0.8.1
|
||||
github.com/prometheus/client_golang v0.9.2 // indirect
|
||||
|
|
10
go.sum
10
go.sum
|
@ -7,8 +7,6 @@ github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBA
|
|||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
|
||||
github.com/aws/aws-sdk-go v1.20.11 h1:xDc2f/8KmwPW7WkuB0kDUCEP4jpx1PIMMMZkav6cbU4=
|
||||
github.com/aws/aws-sdk-go v1.20.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
|
||||
github.com/bartekn/go-bip39 v0.0.0-20171116152956-a05967ea095d h1:1aAija9gr0Hyv4KfQcRcwlmFIrhkDmIj2dz5bkg/s/8=
|
||||
github.com/bartekn/go-bip39 v0.0.0-20171116152956-a05967ea095d/go.mod h1:icNx/6QdFblhsEjZehARqbNumymUT/ydwlLojFdv7Sk=
|
||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
|
||||
|
@ -84,8 +82,6 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
|
|||
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||
github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U=
|
||||
github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ=
|
||||
github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=
|
||||
|
@ -96,10 +92,6 @@ github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6
|
|||
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 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY=
|
||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
|
||||
github.com/lusis/go-slackbot v0.0.0-20180109053408-401027ccfef5 h1:AsEBgzv3DhuYHI/GiQh2HxvTP71HCCE9E/tzGUzGdtU=
|
||||
github.com/lusis/go-slackbot v0.0.0-20180109053408-401027ccfef5/go.mod h1:c2mYKRyMb1BPkO5St0c/ps62L4S0W2NAkaTXj9qEI+0=
|
||||
github.com/lusis/slack-test v0.0.0-20190426140909-c40012f20018 h1:MNApn+Z+fIT4NPZopPfCc1obT6aY3SVM6DOctz1A9ZU=
|
||||
github.com/lusis/slack-test v0.0.0-20190426140909-c40012f20018/go.mod h1:sFlOUpQL1YcjhFVXhg1CG8ZASEs/Mf1oVb6H75JL/zg=
|
||||
github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY=
|
||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/mattn/go-isatty v0.0.6 h1:SrwhHcpV4nWrMGdNcC2kXpMfcBVYGDuTArqyhocJgvA=
|
||||
|
@ -110,8 +102,6 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk
|
|||
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
|
||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/nlopes/slack v0.5.0 h1:NbIae8Kd0NpqaEI3iUrsuS0KbcEDhzhc939jLW5fNm0=
|
||||
github.com/nlopes/slack v0.5.0/go.mod h1:jVI4BBK3lSktibKahxBF74txcK2vyvkza1z/+rRnVAM=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs=
|
||||
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
|
|
Loading…
Reference in New Issue