Coder Social home page Coder Social logo

goadapp / goad Goto Github PK

View Code? Open in Web Editor NEW
1.9K 1.9K 190.0 25.73 MB

Goad is an AWS Lambda powered, highly distributed, load testing tool

Home Page: https://goad.io

License: MIT License

JavaScript 0.58% Go 93.74% Makefile 4.38% Ruby 0.96% Dockerfile 0.35%

goad's People

Contributors

albertogviana avatar cwaltken-edrans avatar danielmotaleite avatar gserra-olx avatar huguesalary avatar jbarratt avatar jcxplorer avatar juliosantos avatar jvsteiner avatar matiaskorhonen avatar mkubenka avatar mstrzele avatar pajp avatar palmerabollo avatar relud avatar rushipatel72 avatar sdsykes avatar simonklb avatar wmarta-edrans avatar zeph avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

goad's Issues

Host Header not being passed

Often when load testing pre-production services behind an ELB it's nice to be able to send a fake host header through. However, when goad is called with -H "Host: foobar.com" http://some-elb.us-east-1.elb.amazonaws.com the host header passed through to the hosts themselves is some-elb.us-east-1.elb.amazonaws.com. I verified that alternate headers were passed, e.g. -H "GoadHeader: yup" This makes it hard to use goad for pre-production hostname-sensitive workloads.

General questions

Hello,

Can you please answer the following questions:

1 - Am I correct that TotErrors means connection errors happened during tcp handshake?

2 - I have nginx 1.8 running on c4.4xlarge Amazon Linux instance (16 CPUs, bunch of memory), kernel is tuned like this:

net.ipv4.tcp_syncookies = 0
net.ipv4.ip_local_port_range=4000 65535
net.ipv4.tcp_fin_timeout=2
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_tw_reuse=1
net.core.somaxconn=1024
net.core.netdev_max_backlog=65535
net.ipv4.tcp_max_syn_backlog=65535
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 8388608
net.core.wmem_default = 8388608
net.ipv4.tcp_rmem = 4096 8388608 16777216
net.ipv4.tcp_wmem = 4096 8388608 16777216
fs.file-max = 1000000
fs.nr_open = 1000000

nginx meaningful options are:

worker_processes 16;
worker_cpu_affinity 0001 0010 0100 1000 01000 10000 010000 100000 0100000 1000000 01000000 10000000 010000000 100000000 0100000000 1000000000;

events {
    worker_connections 655350;
}

goad is started with:

$ build/linux/x86-64/goad -c 25000 -n 2000000 -r us-east-1 -t 30 -u "http://verygoodhost.dom/"

The results differ from time to time:

   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
   2000000      32 MB     0.023s  285493.59    4363.29
   Slowest    Fastest   Timeouts  TotErrors
   15.040s     0.000s          0      27467
HTTPStatus   Requests
       200    1972533
   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
   2000000      30 MB     0.023s   40320.49     584.64
   Slowest    Fastest   Timeouts  TotErrors
   15.057s     0.000s          0      97712
HTTPStatus   Requests
       200    1902288
   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
   1933334      29 MB     0.023s    8653.97     120.74
   Slowest    Fastest   Timeouts  TotErrors
    7.218s     0.000s          0     129231
HTTPStatus   Requests
       200    1804103
   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
   2000000      30 MB     0.023s  571338.56    7865.94
   Slowest    Fastest   Timeouts  TotErrors
   15.075s     0.000s          0      97252
HTTPStatus   Requests
       200    1902748

Can you please explain why that might happen?

3 - When I set concurrency to 25000 I expect there will be 25000 opened sockets on the target server. But it seems to be a wrong assumption:

# netstat -an|wc -l
6352
# netstat -an|wc -l
3795
# netstat -an|wc -l
2104
# netstat -an|wc -l
3620
# netstat -an|wc -l
3832
# netstat -an|wc -l
4477
# netstat -an|wc -l
2654
# netstat -an|wc -l
742

Netstat ran almost every second or two while the test was running. Nginx's internal status page also does not show 25000 connections. Why?

4 - Do you have any recommendations for tuning the system in a better way?

upload to S3 a zipped list of URLs to shuffle through

I already did some hacks on this, but they have some limitations

  • please use the INI based configuration you find on my fork github.com/zeph/goad
  • push it as payload at lambda activation
  • the gzipped file list has to go into S3

p.s. another bad hack (that required a compilation before running the code) is here

  • github.com/zeph/goad/tree/single_huge_list

InvokeAsync deprecated

Hi and thanks for the awesome tool!

After building from latest sources and running, I get the following warning:
"This operation, InvokeAsync, has been deprecated"

Can you please fix it?

Add Support for Other Protocols

Hello! I'm thinking of building out a very similar load testing platform, but I figure I'll try pitching the difference here to try and avoid XKCD#927. Goad seems like the coolest and closest tool to what I'd like, so hopefully we can come to an agreement.

At a high level, what I'd like to do is to have goad emit it's load via an adaptor which would be specified when launching the swarm. This adaptor would send load in various formats to the specified target. In addition to refactoring the existing HTTP driver out, I'd also be adding a driver for MongoDB.

Sending different types of load means the way load is generated also needs to be abstracted. In the spirit of keeping it Lambda-native, I'd like to suggest ingesting load from SNS.

So goad will create an SNS topic and attach the Lambdas (in VPC / subnets if specified) to the topics and start emitting load via SNS.

Let me know if you like this at a high level and I'll start to get familiar with the codebase and propose an implementation.

Security Token

Does GOAD pass along my AWS security token?

export AWS_ACCESS_KEY_ID=ASIAJRXSLRNXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=FnhgBd6Xs+Ywu8lm+9tm9b2G1ytzUYeXXXXXXXXX
export AWS_SESSION_TOKEN=FQoDYXdzEHwaDMZEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


Launching on AWS... (be patient)
   _____                 _
  / ____|               | |
 | |  __  ___   ____  __| |
 | | |_ |/ _ \ / _  |/ _  |
 | |__| | (_) | (_| | (_| |
  \_____|\___/ \__,_|\__,_|
 Global load testing with Go2016/11/21 14:04:54 InvalidClientTokenId: The security token included in the request is invalid
                                           	status code: 403, request id: 633c6074-b01d-11e6-8ae6-815287b1505d```

Provided binary doesn't work (linux)

https://github.com/gophergala2016/goad/releases/download/gopher-gala/goad-gopher-gala-linux-x86-64.zip does not work properly.

It will execute all lambda functions but does not receive data properly. It just says "No results received". For those of you who want to use this in linux, git clone this repo into you gopath, godep restore -v, then do make linux.

When built from master in this repo the results show properly in linux (tested in ubuntu 16).

Please update the provided binaries, thanks! :)

Panic when AWS AdministratorAccess policy missing

Your API access needs the AdministratorAccess policy otherwise goad will panic.

No results received
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x120acf]

goroutine 1 [running]:
github.com/gophergala2016/goad/infrastructure.(*Infrastructure).createIAMLambdaRole(0xc82007da70, 0x5882f0, 0x10, 0x0, 0x0, 0xeb2910, 0xc820498210)
        /Users/matt/Code/go/src/github.com/gophergala2016/goad/infrastructure/infrastructure.go:140 +0x55f
github.com/gophergala2016/goad/infrastructure.(*Infrastructure).setup(0xc82007da70, 0x0, 0x0)
        /Users/matt/Code/go/src/github.com/gophergala2016/goad/infrastructure/infrastructure.go:42 +0x57
github.com/gophergala2016/goad/infrastructure.New(0xc82007d7d0, 0x3, 0x3, 0xc8200a45a0, 0xa7f0e0, 0x0, 0x0)
        /Users/matt/Code/go/src/github.com/gophergala2016/goad/infrastructure/infrastructure.go:25 +0x9d
github.com/gophergala2016/goad.(*Test).Start(0xc820088060, 0x0)
        /Users/matt/Code/go/src/github.com/gophergala2016/goad/goad.go:62 +0x14b
main.start(0xc820088060, 0xc8200cbe90, 0xc820076540)
        /Users/matt/Code/go/src/github.com/gophergala2016/goad/cli/cli.go:80 +0xea
main.main()
        /Users/matt/Code/go/src/github.com/gophergala2016/goad/cli/cli.go:65 +0x606

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
        /usr/local/Cellar/go/1.5.3/libexec/src/runtime/asm_amd64.s:1721 +0x1

goroutine 20 [runnable]:
os/signal.process(0xea0050, 0xc8204de000)
        /usr/local/Cellar/go/1.5.3/libexec/src/os/signal/signal.go:173 +0xca
os/signal.loop()
        /usr/local/Cellar/go/1.5.3/libexec/src/os/signal/signal_unix.go:22 +0x75
created by os/signal.init.1
        /usr/local/Cellar/go/1.5.3/libexec/src/os/signal/signal_unix.go:28 +0x37

goroutine 21 [select, locked to thread]:
runtime.gopark(0x614480, 0xc82002bf28, 0x530c98, 0x6, 0x30d18, 0x2)
        /usr/local/Cellar/go/1.5.3/libexec/src/runtime/proc.go:185 +0x163
runtime.selectgoImpl(0xc82002bf28, 0x0, 0x18)
        /usr/local/Cellar/go/1.5.3/libexec/src/runtime/select.go:392 +0xa64
runtime.selectgo(0xc82002bf28)
        /usr/local/Cellar/go/1.5.3/libexec/src/runtime/select.go:212 +0x12
runtime.ensureSigM.func1()
        /usr/local/Cellar/go/1.5.3/libexec/src/runtime/signal1_unix.go:227 +0x323
runtime.goexit()
        /usr/local/Cellar/go/1.5.3/libexec/src/runtime/asm_amd64.s:1721 +0x1

goroutine 10 [IO wait]:
net.runtime_pollWait(0xea5c08, 0x72, 0xc8200780a0)
        /usr/local/Cellar/go/1.5.3/libexec/src/runtime/netpoll.go:157 +0x60
net.(*pollDesc).Wait(0xc8201960d0, 0x72, 0x0, 0x0)
        /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:73 +0x3a
net.(*pollDesc).WaitRead(0xc8201960d0, 0x0, 0x0)
        /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:78 +0x36
net.(*netFD).Read(0xc820196070, 0xc8204a7800, 0x400, 0x400, 0x0, 0xea0028, 0xc8200780a0)
        /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:232 +0x23a
net.(*conn).Read(0xc8200880d0, 0xc8204a7800, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/Cellar/go/1.5.3/libexec/src/net/net.go:172 +0xe4
crypto/tls.(*block).readFromUntil(0xc820503f50, 0xea5d18, 0xc8200880d0, 0x5, 0x0, 0x0)
        /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:455 +0xcc
crypto/tls.(*Conn).readRecord(0xc8201922c0, 0x614517, 0x0, 0x0)
        /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:540 +0x2d1
crypto/tls.(*Conn).Read(0xc8201922c0, 0xc82001d000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:901 +0x167
net/http.noteEOFReader.Read(0xe61548, 0xc8201922c0, 0xc82019c058, 0xc82001d000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1370 +0x67
net/http.(*noteEOFReader).Read(0xc8203b37a0, 0xc82001d000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        <autogenerated>:126 +0xd0
bufio.(*Reader).fill(0xc820077bc0)
        /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:97 +0x1e9
bufio.(*Reader).Peek(0xc820077bc0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
        /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:132 +0xcc
net/http.(*persistConn).readLoop(0xc82019c000)
        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:876 +0xf7
created by net/http.(*Transport).dialConn
        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:685 +0xc78

goroutine 11 [select]:
net/http.(*persistConn).writeLoop(0xc82019c000)
        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1009 +0x40c
created by net/http.(*Transport).dialConn
        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:686 +0xc9d

running inside a vpc

we want to be able to run goad within a VPC for testing non-internet-exposed staging/testing environments

break 5min lambda barrier

currently we cannot run anything above the 5min lasting time as Lambda has this inner limitation

we need to design a solution to keep the load constant and distributed even after

Utilise certificates

I have an AWS web service sitting behind a Varnish instance. In order to load test the service without varnish I need to access the ELB directly but that requires a self-signed certificate in order to be able to authenticate against.

Is it possible to specify a certificate with Goad?

Minimum AWS credentials required?

Hi,

Just wondering if you could clarify the roles required in the AWS credentials.

I try to keep separate IAM profiles with minimum credentials available but aren't sure what needs to be allocated here.

Any assistance appreciated.

Edit: I've managed to get it down to these roles:
AmazonSQSFullAccess
AWSLambdaFullAccess
IAMFullAccess

Is it possible to cache, or precreate the IAM, so that that access can be removed?

User-Agent header is hardcoded

I need to set a special user-agent and trying to use -H "User-Agent: ...." gets no effect. Looking at the code looks like it is hardcoded. If the User-agent header is detected, it should not send the hardcoded one.

AWS named profiles are not working

Support for AWS named profiles is broken and not working.

Example command:

goad -p development -r eu-west-1 -n 1000 -c 20 -u http://google.com

Fail with following error:

AccessDeniedException: Cross-account pass role is not allowed.

Clarification: Overall

Hi,

Many thanks for this tool - I'm finding it very effective.

In the default configuration, I note it appears to run across four different regions, simultaneously. It then presents "overall" statistics.

The "avgreq/s" appears to be an average across the avgreq/s from each region, however, this appears to be a confusing statistic, as the "average requests served by the target server" would be the sum of these values.

Are you able to confirm, or advise if I have read this wrong?

Requests per second > total requests

Check out the following results I got. The requests per second is more than 2x the number total requests.

Regional results

Region: ap-northeast-1
TotReqs TotBytes AvgTime AvgReq/s AvgKbps/s
193 444 kB 2.766s 2918.46 6998.45
Slowest Fastest Timeouts TotErrors
14.943s 0.000s 12 12
Region: us-east-1
TotReqs TotBytes AvgTime AvgReq/s AvgKbps/s
309 715 kB 2.208s 713.77 1710.73
Slowest Fastest Timeouts TotErrors
14.607s 0.000s 18 18
Region: eu-west-1
TotReqs TotBytes AvgTime AvgReq/s AvgKbps/s
212 489 kB 2.344s 1301.11 3119.72
Slowest Fastest Timeouts TotErrors
13.456s 0.000s 13 13

Overall

TotReqs TotBytes AvgTime AvgReq/s AvgKbps/s
714 1.6 MB 2.400s 1484.11 3558.40
Slowest Fastest Timeouts TotErrors
14.943s 0.000s 43 43
HTTPStatus Requests
200 671

Freeze after starting

Hello, I have problem with goad application. I have created new amazon account, setuped IAM user and builded last version of goad. I am trying to run goad and it's freeze.

goad -u http://srelease.hgstudio.ru

http://take.ms/XhgOK - here what I see

Environment data:
goad version 1.2.0
go version 1.7.3 darwin/amd64
macos 10.12.2 (16C67)

Can anybody help? I wanna debug goad application, but doesn't know where is start. Thanks for help and sorry for stupid question.

infrastructure.go:46: undefined: Asset

go get is raising "undefined: Asset"

ubuntu@dev01:~$ go get github.com/goadapp/goad
# github.com/gophergala2016/goad/infrastructure
/data/dev/golang/src/github.com/gophergala2016/goad/infrastructure/infrastructure.go:46: undefined: Asset

status code: 403, request id: 22

Hi All,

Would love to get this to work but when i run i get this error.

Launching on AWS... (be patient)
   _____                 _
  / ____|               | |
 | |  __  ___   ____  __| |
 | | |_ |/ _ \ / _  |/ _  |
 | |__| | (_) | (_| | (_| |
  \_____|\___/ \__,_|\__,_|
 Global load testing with Go2016/10/28 01:40:33 AccessDenied: User: arn:aws:iam::299435626701:user/asyncfolder_5812489419f37 is not authorized to perform: iam:GetRole on resource: role goad-lambda-role
                                            status code: 403, request id: 22bbe73b-9ca7-11e6-9d95-05058337c4a2

I am using the latest release

Thanks

No results received - IAM account with security policy applied

Firstly: Running goad under my administrator IAM user which has a very unrestrictive policy applied works without issue

However we need to ensure that the IAM account we use for goad in production has a limited set of permissions, we've created an IAM user the following IAM policy:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "4b79821b",
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:GetRole",
                "iam:PutRolePolicy",
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::*:role/goad-lambda-role"
            ]
        },
        {
            "Sid": "bc2a9593",
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:GetFunction",
                "lambda:CreateAlias",
                "lambda:GetAlias",
                "lambda:UpdateFunctionCode"
            ],
            "Resource": [
                "arn:aws:lambda:*:*:function:goad"
            ]
        },
        {
            "Sid": "2fa64ebc",
            "Effect": "Allow",
            "Action": [
                "sqs:*"
            ],
            "Resource": [
                "arn:aws:sqs:*:*:goad-*"
            ]
        }
    ]
}

When we run goad with the same parameters using the credentials of an account with this policy applied we are getting the 'No results received' message.

I'm unable to find in the documentation what permissions the iam user running goad needs in order to function, we've created this policy by trial and error, correcting after each error message, but the error messages stopped and now we're just left with 'No results received'; whether we have enough here and the problem is elsewhere we do not know.

Any help would be appreciated

Goad fails to build on macOS Sierra

Make build fails with: fatal error: unexpected signal during runtime execution

Admittedly, I am not very familiar with Go, so please let me know if I should be looking elsewhere.

โžœ goad git:(master) make clean
rm -rf data/lambda/goad-lambda
rm -rf build
โžœ goad git:(master) make osx
GOOS=linux GOARCH=amd64 go build -o data/lambda/goad-lambda ./lambda
# encoding/xml
fatal error: unexpected signal during runtime execution
[signal 0xb code=0x1 addr=0xb01dfacedebac1e pc=0x1ea99]

runtime stack:
runtime.throw(0x45ef80, 0x2a)
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/panic.go:527 +0x90
runtime.sigpanic()
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/sigpanic_unix.go:12 +0x5a
runtime.(*gcWork).put(0xc820020720, 0xc820063d40)
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/mgcwork.go:87 +0x49
runtime.greyobject(0xc820063d40, 0x0, 0x0, 0xc81fffce15, 0x0, 0xa06af0, 0xc820020720)
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/mgcmark.go:956 +0x2f1
runtime.shade(0xc820063d40)
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/mgcmark.go:894 +0x9a
runtime.gcmarkwb_m(0xc82048c978, 0xc820063d40)
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/mbarrier.go:91 +0xc1
runtime.writebarrierptr_nostore1.func1()
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/mbarrier.go:117 +0x134
runtime.systemstack(0xc820020a00)
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/asm_amd64.s:262 +0x79
runtime.mstart()
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/proc1.go:674

goroutine 1 [running]:
runtime.systemstack_switch()
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/asm_amd64.s:216 fp=0xc82009d6f0 sp=0xc82009d6e8
runtime.writebarrierptr_nostore1(0xc82048c978, 0xc820063d40)
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/mbarrier.go:118 +0x71 fp=0xc82009d728 sp=0xc82009d6f0
runtime.writebarrierptr(0xc82048c978, 0xc820063d40)
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/mbarrier.go:137 +0x4b fp=0xc82009d758 sp=0xc82009d728
runtime.hashGrow(0x38f160, 0xc82048c960)
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/hashmap.go:769 +0x1b9 fp=0xc82009d788 sp=0xc82009d758
runtime.mapassign1(0x38f160, 0xc82048c960, 0xc82009e6c0, 0xc82009e248)
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/hashmap.go:481 +0x55b fp=0xc82009d830 sp=0xc82009d788
cmd/compile/internal/gc.(*yyParserImpl).Parse(0xc820032048, 0xbb6728, 0x9a6260, 0x0)
go.y:1203 +0xcaec fp=0xc8200a1ab0 sp=0xc82009d830
cmd/compile/internal/gc.yyparse()
/usr/local/Cellar/go/1.5.1/libexec/src/cmd/compile/internal/gc/lex.go:1854 +0xb4 fp=0xc8200a1af0 sp=0xc8200a1ab0
cmd/compile/internal/gc.Main()
/usr/local/Cellar/go/1.5.1/libexec/src/cmd/compile/internal/gc/lex.go:348 +0x1b6f fp=0xc8200a1df0 sp=0xc8200a1af0
cmd/compile/internal/amd64.Main()
/usr/local/Cellar/go/1.5.1/libexec/src/cmd/compile/internal/amd64/galign.go:127 +0x58d fp=0xc8200a1e58 sp=0xc8200a1df0
main.main()
/usr/local/Cellar/go/1.5.1/libexec/src/cmd/compile/main.go:26 +0x189 fp=0xc8200a1f30 sp=0xc8200a1e58
runtime.main()
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/proc.go:111 +0x2b0 fp=0xc8200a1f80 sp=0xc8200a1f30
runtime.goexit()
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/asm_amd64.s:1696 +0x1 fp=0xc8200a1f88 sp=0xc8200a1f80
^Cmake: *** [lambda] Error 2

No results received

I read through this: #15

./goad -version
1.2.0

./goad -m GET -u "http://url"
No results received

I deleted the Goad Lambda, and the Goad Role, re-ran and same effect.


$ aws lambda list-functions
        {
            "Version": "$LATEST",
            "CodeSha256": "FkUektcJxRdK+r4YypiRqUHJkOHgWdMpxrkEVZQFdqQ=",
            "FunctionName": "goad",
            "MemorySize": 1536,
            "CodeSize": 2278171,
            "FunctionArn": "arn:aws:lambda:us-east-1:991612831811:function:goad",
            "Handler": "index.handler",
            "Role": "arn:aws:iam::991612831811:role/goad-lambda-role",
            "Timeout": 300,
            "LastModified": "2016-11-21T19:27:10.926+0000",
            "Runtime": "nodejs",
            "Description": ""
        },

Attempting to test

Trying to give this a whirl and getting IOWait issues on the routines

`
shat@bipolar:~$ ./goad -n 100 -c 10 -r us-east-1,us-west-2,eu-west-1,ap-northeast-1 -m PUT -u "http://myaddress.tld"

No results received
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x51efaf]

goroutine 1 [running]:
github.com/gophergala2016/goad/infrastructure.(_Infrastructure).createIAMLambdaRole(0xc820013a70, 0x9875a0, 0x10, 0x0, 0x0, 0x7f52e38d5aa8, 0xc82001c340)
/Users/matt/Code/go/src/github.com/gophergala2016/goad/infrastructure/infrastructure.go:140 +0x55f
github.com/gophergala2016/goad/infrastructure.(_Infrastructure).setup(0xc820013a70, 0x0, 0x0)
/Users/matt/Code/go/src/github.com/gophergala2016/goad/infrastructure/infrastructure.go:42 +0x57
github.com/gophergala2016/goad/infrastructure.New(0xc82001ca40, 0x4, 0x4, 0xc82006c510, 0xe7e500, 0x0, 0x0)
/Users/matt/Code/go/src/github.com/gophergala2016/goad/infrastructure/infrastructure.go:25 +0x9d
github.com/gophergala2016/goad.(*Test).Start(0xc82002c070, 0x0)
/Users/matt/Code/go/src/github.com/gophergala2016/goad/goad.go:62 +0x14b
main.start(0xc82002c070, 0xc820101e90, 0xc820018600)
/Users/matt/Code/go/src/github.com/gophergala2016/goad/cli/cli.go:80 +0xea
main.main()
/Users/matt/Code/go/src/github.com/gophergala2016/goad/cli/cli.go:65 +0x606

goroutine 5 [syscall]:
os/signal.loop()
/usr/local/Cellar/go/1.5.3/libexec/src/os/signal/signal_unix.go:22 +0x18
created by os/signal.init.1
/usr/local/Cellar/go/1.5.3/libexec/src/os/signal/signal_unix.go:28 +0x37

goroutine 6 [select, locked to thread]:
runtime.gopark(0xa13a98, 0xc82002a728, 0x9300b8, 0x6, 0x42ff18, 0x2)
/usr/local/Cellar/go/1.5.3/libexec/src/runtime/proc.go:185 +0x163
runtime.selectgoImpl(0xc82002a728, 0x0, 0x18)
/usr/local/Cellar/go/1.5.3/libexec/src/runtime/select.go:392 +0xa64
runtime.selectgo(0xc82002a728)
/usr/local/Cellar/go/1.5.3/libexec/src/runtime/select.go:212 +0x12
runtime.ensureSigM.func1()
/usr/local/Cellar/go/1.5.3/libexec/src/runtime/signal1_unix.go:227 +0x353
runtime.goexit()
/usr/local/Cellar/go/1.5.3/libexec/src/runtime/asm_amd64.s:1721 +0x1

goroutine 7 [runnable]:
github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/nsf/termbox-go.Init.func1()
/Users/matt/Code/go/src/github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/nsf/termbox-go/api.go:87 +0x40c
created by github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/nsf/termbox-go.Init
/Users/matt/Code/go/src/github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/nsf/termbox-go/api.go:106 +0x8bd

goroutine 9 [IO wait]:
net.runtime_pollWait(0x7f52e38d6b90, 0x77, 0x453150)
/usr/local/Cellar/go/1.5.3/libexec/src/runtime/netpoll.go:157 +0x60
net.(_pollDesc).Wait(0xc820049fe0, 0x77, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:73 +0x3a
net.(_pollDesc).WaitWrite(0xc820049fe0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:82 +0x36
net.(_netFD).connect(0xc820049f80, 0x0, 0x0, 0x7f52e38d5c68, 0xc82000f500, 0xece8f8c78, 0x26574034, 0xe7e3a0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:114 +0x1f6
net.(_netFD).dial(0xc820049f80, 0x7f52e38d5c20, 0x0, 0x7f52e38d5c20, 0xc8200f8240, 0xece8f8c78, 0x26574034, 0xe7e3a0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/sock_posix.go:137 +0x351
net.socket(0x930568, 0x3, 0x2, 0x1, 0x0, 0xc8200f8200, 0x7f52e38d5c20, 0x0, 0x7f52e38d5c20, 0xc8200f8240, ...)
/usr/local/Cellar/go/1.5.3/libexec/src/net/sock_posix.go:89 +0x411
net.internetSocket(0x930568, 0x3, 0x7f52e38d5c20, 0x0, 0x7f52e38d5c20, 0xc8200f8240, 0xece8f8c78, 0x5b26574034, 0xe7e3a0, 0x1, ...)
/usr/local/Cellar/go/1.5.3/libexec/src/net/ipsock_posix.go:160 +0x141
net.dialTCP(0x930568, 0x3, 0x0, 0xc8200f8240, 0xece8f8c78, 0xc826574034, 0xe7e3a0, 0xc820011510, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/tcpsock_posix.go:171 +0x11e
net.dialSingle(0xc82007c380, 0x7f52e38d5b90, 0xc8200f8240, 0xece8f8c78, 0x26574034, 0xe7e3a0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:364 +0x3f5
net.dialSerial.func1(0xece8f8c78, 0x26574034, 0xe7e3a0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:336 +0x75
net.dial(0x930568, 0x3, 0x7f52e38d5b90, 0xc8200f8240, 0xc82003f6e8, 0xece8f8c78, 0x26574034, 0xe7e3a0, 0x0, 0x0, ...)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:40 +0x60
net.dialSerial(0xc82007c380, 0xc820011510, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:338 +0x760
net.(_Dialer).Dial(0xc82001a410, 0x930568, 0x3, 0xc82000f4c0, 0x12, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:232 +0x50f
net.(_Dialer).Dial-fm(0x930568, 0x3, 0xc82000f4c0, 0x12, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:38 +0x6e
net/http.(_Transport).dial(0xc82006c120, 0x930568, 0x3, 0xc82000f4c0, 0x12, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:499 +0x79
net/http.(_Transport).dialConn(0xc82006c120, 0x0, 0xc82001cd40, 0x4, 0xc82000f4c0, 0x12, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:596 +0x19a9
net/http.(_Transport).getConn.func4(0xc82006c120, 0x0, 0xc82001cd40, 0x4, 0xc82000f4c0, 0x12, 0xc820018840)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:549 +0x66
created by net/http.(_Transport).getConn
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:551 +0x265

goroutine 11 [chan receive]:
net/http.(_Transport).getConn.func2.1(0xc820018840, 0xc82006c120, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:536 +0x4c
created by net/http.(_Transport).getConn.func2
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:542 +0x77

goroutine 12 [IO wait]:
net.runtime_pollWait(0x7f52e38d6ad0, 0x77, 0x453150)
/usr/local/Cellar/go/1.5.3/libexec/src/runtime/netpoll.go:157 +0x60
net.(_pollDesc).Wait(0xc82010e1b0, 0x77, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:73 +0x3a
net.(_pollDesc).WaitWrite(0xc82010e1b0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:82 +0x36
net.(_netFD).connect(0xc82010e150, 0x0, 0x0, 0x7f52e38d5c68, 0xc82000f600, 0xece8f8c7d, 0x28d9ea98, 0xe7e3a0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:114 +0x1f6
net.(_netFD).dial(0xc82010e150, 0x7f52e38d5c20, 0x0, 0x7f52e38d5c20, 0xc8200f8330, 0xece8f8c7d, 0x28d9ea98, 0xe7e3a0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/sock_posix.go:137 +0x351
net.socket(0x930568, 0x3, 0x2, 0x1, 0x0, 0xc8200f8300, 0x7f52e38d5c20, 0x0, 0x7f52e38d5c20, 0xc8200f8330, ...)
/usr/local/Cellar/go/1.5.3/libexec/src/net/sock_posix.go:89 +0x411
net.internetSocket(0x930568, 0x3, 0x7f52e38d5c20, 0x0, 0x7f52e38d5c20, 0xc8200f8330, 0xece8f8c7d, 0xc828d9ea98, 0xe7e3a0, 0x1, ...)
/usr/local/Cellar/go/1.5.3/libexec/src/net/ipsock_posix.go:160 +0x141
net.dialTCP(0x930568, 0x3, 0x0, 0xc8200f8330, 0xece8f8c7d, 0xc828d9ea98, 0xe7e3a0, 0xc820011650, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/tcpsock_posix.go:171 +0x11e
net.dialSingle(0xc82007c580, 0x7f52e38d5b90, 0xc8200f8330, 0xece8f8c7d, 0x28d9ea98, 0xe7e3a0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:364 +0x3f5
net.dialSerial.func1(0xece8f8c7d, 0x28d9ea98, 0xe7e3a0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:336 +0x75
net.dial(0x930568, 0x3, 0x7f52e38d5b90, 0xc8200f8330, 0xc8200c96e8, 0xece8f8c7d, 0x28d9ea98, 0xe7e3a0, 0x0, 0x0, ...)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:40 +0x60
net.dialSerial(0xc82007c580, 0xc820011650, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:338 +0x760
net.(_Dialer).Dial(0xc82001a410, 0x930568, 0x3, 0xc82000f5c0, 0x12, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:232 +0x50f
net.(_Dialer).Dial-fm(0x930568, 0x3, 0xc82000f5c0, 0x12, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:38 +0x6e
net/http.(_Transport).dial(0xc82006c120, 0x930568, 0x3, 0xc82000f5c0, 0x12, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:499 +0x79
net/http.(_Transport).dialConn(0xc82006c120, 0x0, 0xc82001cd40, 0x4, 0xc82000f5c0, 0x12, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:596 +0x19a9
net/http.(_Transport).getConn.func4(0xc82006c120, 0x0, 0xc82001cd40, 0x4, 0xc82000f5c0, 0x12, 0xc820018b40)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:549 +0x66
created by net/http.(_Transport).getConn
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:551 +0x265

goroutine 14 [chan receive]:
net/http.(_Transport).getConn.func2.1(0xc820018b40, 0xc82006c120, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:536 +0x4c
created by net/http.(_Transport).getConn.func2
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:542 +0x77

goroutine 15 [IO wait]:
net.runtime_pollWait(0x7f52e38d6a10, 0x77, 0x453150)
/usr/local/Cellar/go/1.5.3/libexec/src/runtime/netpoll.go:157 +0x60
net.(_pollDesc).Wait(0xc82010e300, 0x77, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:73 +0x3a
net.(_pollDesc).WaitWrite(0xc82010e300, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:82 +0x36
net.(_netFD).connect(0xc82010e2a0, 0x0, 0x0, 0x7f52e38d5c68, 0xc82000f6a0, 0xece8f8c82, 0x2fad0bc2, 0xe7e3a0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:114 +0x1f6
net.(_netFD).dial(0xc82010e2a0, 0x7f52e38d5c20, 0x0, 0x7f52e38d5c20, 0xc8200f8420, 0xece8f8c82, 0x2fad0bc2, 0xe7e3a0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/sock_posix.go:137 +0x351
net.socket(0x930568, 0x3, 0x2, 0x1, 0x0, 0xc8200f8400, 0x7f52e38d5c20, 0x0, 0x7f52e38d5c20, 0xc8200f8420, ...)
/usr/local/Cellar/go/1.5.3/libexec/src/net/sock_posix.go:89 +0x411
net.internetSocket(0x930568, 0x3, 0x7f52e38d5c20, 0x0, 0x7f52e38d5c20, 0xc8200f8420, 0xece8f8c82, 0xc82fad0bc2, 0xe7e3a0, 0x1, ...)
/usr/local/Cellar/go/1.5.3/libexec/src/net/ipsock_posix.go:160 +0x141
net.dialTCP(0x930568, 0x3, 0x0, 0xc8200f8420, 0xece8f8c82, 0xc82fad0bc2, 0xe7e3a0, 0xc820011770, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/tcpsock_posix.go:171 +0x11e
net.dialSingle(0xc82007c600, 0x7f52e38d5b90, 0xc8200f8420, 0xece8f8c82, 0x2fad0bc2, 0xe7e3a0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:364 +0x3f5
net.dialSerial.func1(0xece8f8c82, 0x2fad0bc2, 0xe7e3a0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:336 +0x75
net.dial(0x930568, 0x3, 0x7f52e38d5b90, 0xc8200f8420, 0xc8200cb6e8, 0xece8f8c82, 0x2fad0bc2, 0xe7e3a0, 0x0, 0x0, ...)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:40 +0x60
net.dialSerial(0xc82007c600, 0xc820011770, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:338 +0x760
net.(_Dialer).Dial(0xc82001a410, 0x930568, 0x3, 0xc82000f660, 0x12, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:232 +0x50f
net.(_Dialer).Dial-fm(0x930568, 0x3, 0xc82000f660, 0x12, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:38 +0x6e
net/http.(_Transport).dial(0xc82006c120, 0x930568, 0x3, 0xc82000f660, 0x12, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:499 +0x79
net/http.(_Transport).dialConn(0xc82006c120, 0x0, 0xc82001cd40, 0x4, 0xc82000f660, 0x12, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:596 +0x19a9
net/http.(_Transport).getConn.func4(0xc82006c120, 0x0, 0xc82001cd40, 0x4, 0xc82000f660, 0x12, 0xc820018de0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:549 +0x66
created by net/http.(_Transport).getConn
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:551 +0x265

goroutine 17 [chan receive]:
net/http.(_Transport).getConn.func2.1(0xc820018de0, 0xc82006c120, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:536 +0x4c
created by net/http.(_Transport).getConn.func2
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:542 +0x77

goroutine 18 [IO wait]:
net.runtime_pollWait(0x7f52e38d6950, 0x77, 0x453150)
/usr/local/Cellar/go/1.5.3/libexec/src/runtime/netpoll.go:157 +0x60
net.(_pollDesc).Wait(0xc82010e450, 0x77, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:73 +0x3a
net.(_pollDesc).WaitWrite(0xc82010e450, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:82 +0x36
net.(_netFD).connect(0xc82010e3f0, 0x0, 0x0, 0x7f52e38d5c68, 0xc82000f720, 0xece8f8c87, 0x3ae90a8d, 0xe7e3a0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:114 +0x1f6
net.(_netFD).dial(0xc82010e3f0, 0x7f52e38d5c20, 0x0, 0x7f52e38d5c20, 0xc8200f8510, 0xece8f8c87, 0x3ae90a8d, 0xe7e3a0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/sock_posix.go:137 +0x351
net.socket(0x930568, 0x3, 0x2, 0x1, 0x0, 0xc8200f8500, 0x7f52e38d5c20, 0x0, 0x7f52e38d5c20, 0xc8200f8510, ...)
/usr/local/Cellar/go/1.5.3/libexec/src/net/sock_posix.go:89 +0x411
net.internetSocket(0x930568, 0x3, 0x7f52e38d5c20, 0x0, 0x7f52e38d5c20, 0xc8200f8510, 0xece8f8c87, 0xc83ae90a8d, 0xe7e3a0, 0x1, ...)
/usr/local/Cellar/go/1.5.3/libexec/src/net/ipsock_posix.go:160 +0x141
net.dialTCP(0x930568, 0x3, 0x0, 0xc8200f8510, 0xece8f8c87, 0xc83ae90a8d, 0xe7e3a0, 0xc820011890, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/tcpsock_posix.go:171 +0x11e
net.dialSingle(0xc82007c680, 0x7f52e38d5b90, 0xc8200f8510, 0xece8f8c87, 0x3ae90a8d, 0xe7e3a0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:364 +0x3f5
net.dialSerial.func1(0xece8f8c87, 0x3ae90a8d, 0xe7e3a0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:336 +0x75
net.dial(0x930568, 0x3, 0x7f52e38d5b90, 0xc8200f8510, 0xc8201256e8, 0xece8f8c87, 0x3ae90a8d, 0xe7e3a0, 0x0, 0x0, ...)
/usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:40 +0x60
net.dialSerial(0xc82007c680, 0xc820011890, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:338 +0x760
net.(_Dialer).Dial(0xc82001a410, 0x930568, 0x3, 0xc82000f6e0, 0x12, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/dial.go:232 +0x50f
net.(_Dialer).Dial-fm(0x930568, 0x3, 0xc82000f6e0, 0x12, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:38 +0x6e
net/http.(_Transport).dial(0xc82006c120, 0x930568, 0x3, 0xc82000f6e0, 0x12, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:499 +0x79
net/http.(_Transport).dialConn(0xc82006c120, 0x0, 0xc82001cd40, 0x4, 0xc82000f6e0, 0x12, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:596 +0x19a9
net/http.(_Transport).getConn.func4(0xc82006c120, 0x0, 0xc82001cd40, 0x4, 0xc82000f6e0, 0x12, 0xc820019080)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:549 +0x66
created by net/http.(_Transport).getConn
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:551 +0x265

goroutine 20 [runnable]:
net/http.(_Transport).getConn.func2.1(0xc820019080, 0xc82006c120, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:535
created by net/http.(_Transport).getConn.func2
/usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:542 +0x77
`

Seg faulting

Getting lots of crashes...

0unexpected fault address 0xb01dfacedebac1e
                                                                                     fatal error: fault
                                                                                                       [signal 0xb code=0x1 addr=0xb01dfacedebac1e pc=0x186757]

                                                                                                                                                               goroutine 60 [running]:
                                                                                                                                                                                      runtime.throw(0x52f258, 0x5)
                                                                                                                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/runtime/panic.go:527 +0x90 fp=0xc820454928 sp=0xc820454910
                                                                                      runtime.sigpanic()
                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/runtime/sigpanic_unix.go:27 +0x2ba fp=0xc820454978 sp=0xc820454928
                                                                                                                                                                                                                         net/http.(*Transport).dial(0xc820080090, 0x531130, 0x3, 0xc8203a8360, 0x1f, 0x0, 0x0, 0x0, 0x0)
                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:499 +0x77 fp=0xc8204549c0 sp=0xc820454978
                                                                                                                                                                                              net/http.(*Transport).dialConn(0xc820080090, 0x0, 0xc820237ef0, 0x5, 0xc8203a8360, 0x1f, 0x0, 0x0, 0x0)
                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:596 +0x19a9 fp=0xc820454f00 sp=0xc8204549c0
                                                                                                                                                                                net/http.(*Transport).getConn.func4(0xc820080090, 0x0, 0xc820237ef0, 0x5, 0xc8203a8360, 0x1f, 0xc82060ec60)
                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:549 +0x66 fp=0xc820454f78 sp=0xc820454f00
                                                                                                                                                                      runtime.goexit()
                                                                                                                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/runtime/asm_amd64.s:1721 +0x1 fp=0xc820454f80 sp=0xc820454f78
                                                         created by net/http.(*Transport).getConn
                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:551 +0x265

                                                                                                                                                                               goroutine 1 [select]:
                                                                                                                                                                                                    main.start(0xc820030060, 0xc820163e90, 0xc820018600)
                        /Users/matt/Code/go/src/github.com/gophergala2016/goad/cli/cli.go:98 +0x65b
                                                                                                   main.main()
                                                                                                                /Users/matt/Code/go/src/github.com/gophergala2016/goad/cli/cli.go:65 +0x606

                                                                                                                                                                                           goroutine 17 [syscall, locked to thread]:
 runtime.goexit()
                    /usr/local/Cellar/go/1.5.3/libexec/src/runtime/asm_amd64.s:1721 +0x1

                                                                                            goroutine 5 [syscall]:
                                                                                                                  os/signal.loop()
                                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/os/signal/signal_unix.go:22 +0x18
                                                                                                                                                                                                                created by os/signal.init.1
            /usr/local/Cellar/go/1.5.3/libexec/src/os/signal/signal_unix.go:28 +0x37

                                                                                        goroutine 6 [select, locked to thread]:
                                                                                                                               runtime.gopark(0x614480, 0xc82002e728, 0x530c98, 0x6, 0x30d18, 0x2)
                                                                                                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/runtime/proc.go:185 +0x163
                                      runtime.selectgoImpl(0xc82002e728, 0x0, 0x18)
                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/runtime/select.go:392 +0xa64
                                                                                                                                                           runtime.selectgo(0xc82002e728)
                                                                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/runtime/select.go:212 +0x12
                               runtime.ensureSigM.func1()
                                                            /usr/local/Cellar/go/1.5.3/libexec/src/runtime/signal1_unix.go:227 +0x323
                                                                                                                                         runtime.goexit()
                                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/runtime/asm_amd64.s:1721 +0x1

 goroutine 7 [select]:
                      github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/nsf/termbox-go.Init.func1()
                                                                                                                    /Users/matt/Code/go/src/github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/nsf/termbox-go/api.go:87 +0x40c
            created by github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/nsf/termbox-go.Init
Press ctrl-c to interrupt                                                                                   /Users/matt/Code/go/src/github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/nsf/termbox-go/api.go:106 +0x8b9

     goroutine 12 [IO wait]:
                            net.runtime_pollWait(0xe65d70, 0x72, 0xc8200121e0)
                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/runtime/netpoll.go:157 +0x60
                                                                                                                                                   net.(*pollDesc).Wait(0xc82015a220, 0x72, 0x0, 0x0)
                                                                                                                                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:73 +0x3a
                                           net.(*pollDesc).WaitRead(0xc82015a220, 0x0, 0x0)
                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:78 +0x36
                                                                                                                                                                      net.(*netFD).Read(0xc82015a1c0, 0xc820174000, 0x1000, 0x1000, 0x0, 0xe60050, 0xc8200121e0)
                                /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:232 +0x23a
                                                                                                net.(*conn).Read(0xc8200300d8, 0xc820174000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/net.go:172 +0xe4
        crypto/tls.(*block).readFromUntil(0xc820156570, 0xe65e80, 0xc8200300d8, 0x5, 0x0, 0x0)
                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:455 +0xcc
                                                                                                                                                                   crypto/tls.(*Conn).readRecord(0xc8201542c0, 0x614517, 0x0, 0x0)
                                                                                                                                                                                                                                  /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:540 +0x2d1
                                                                   crypto/tls.(*Conn).Read(0xc8201542c0, 0xc8201ca000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                                                                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:901 +0x167
                                                                                                                                                                                                                            net/http.noteEOFReader.Read(0xe6e900, 0xc8201542c0, 0xc820168058, 0xc8201ca000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1370 +0x67
                                                                                                                                                                               net/http.(*noteEOFReader).Read(0xc820433dc0, 0xc8201ca000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                        <autogenerated>:126 +0xd0
                                                                 bufio.(*Reader).fill(0xc8204445a0)
                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:97 +0x1e9
                                                                                                                                                                       bufio.(*Reader).Peek(0xc8204445a0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
        /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:132 +0xcc
                                                                       net/http.(*persistConn).readLoop(0xc820168000)
                                                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:876 +0xf7
                                                                                                                                                                                              created by net/http.(*Transport).dialConn
        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:685 +0xc78

                                                                               goroutine 13 [select]:
                                                                                                     net/http.(*persistConn).writeLoop(0xc820168000)
                                                                                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1009 +0x40c
                                                                                                                                                                                                                                created by net/http.(*Transport).dialConn
                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:686 +0xc9d

                                                                                                               goroutine 21 [IO wait]:
                                                                                                                                      net.runtime_pollWait(0xe65cb0, 0x72, 0xc8200121e0)
                                                                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/runtime/netpoll.go:157 +0x60
                                net.(*pollDesc).Wait(0xc8204644c0, 0x72, 0x0, 0x0)
                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:73 +0x3a
                                                                                                                                                              net.(*pollDesc).WaitRead(0xc8204644c0, 0x0, 0x0)
                                                                                                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:78 +0x36
                                                   net.(*netFD).Read(0xc820464460, 0xc820426800, 0x800, 0x800, 0x0, 0xe60050, 0xc8200121e0)
                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:232 +0x23a
                                                                                                                                                                                                                net.(*conn).Read(0xc82046a0a0, 0xc820426800, 0x800, 0x800, 0x0, 0x0, 0x0)
                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/net.go:172 +0xe4
                                                                                                                   crypto/tls.(*block).readFromUntil(0xc82045ede0, 0xe65e80, 0xc82046a0a0, 0x5, 0x0, 0x0)
                                                                                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:455 +0xcc
                                                crypto/tls.(*Conn).readRecord(0xc82047c2c0, 0x614517, 0x0, 0x0)
                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:540 +0x2d1
                                                                                                                                                                                    crypto/tls.(*Conn).Read(0xc82047c2c0, 0xc82048f000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                    /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:901 +0x167
                                                                                                            net/http.noteEOFReader.Read(0xe6e900, 0xc82047c2c0, 0xc820480058, 0xc82048f000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                                                                                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1370 +0x67
                                                                    net/http.(*noteEOFReader).Read(0xc8204a7a80, 0xc82048f000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                                                                                                                                                <autogenerated>:126 +0xd0
                                                                                                                                                                                         bufio.(*Reader).fill(0xc8201cd2c0)
                                                                                                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:97 +0x1e9
                                                            bufio.(*Reader).Peek(0xc8201cd2c0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:132 +0xcc
                                                                                                                                                                                               net/http.(*persistConn).readLoop(0xc820480000)
            /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:876 +0xf7
                                                                                      created by net/http.(*Transport).dialConn
                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:685 +0xc78

                                                                                                                                                                                                       goroutine 22 [select]:
                                                                                                                                                                                                                             net/http.(*persistConn).writeLoop(0xc820480000)
                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1009 +0x40c
                                                                                                                        created by net/http.(*Transport).dialConn
                                                                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:686 +0xc9d

            goroutine 34 [IO wait]:
                                   net.runtime_pollWait(0xe65bf0, 0x72, 0xc8200121e0)
                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/runtime/netpoll.go:157 +0x60
                                                                                                                                                           net.(*pollDesc).Wait(0xc820446760, 0x72, 0x0, 0x0)
                                                                                                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:73 +0x3a
                                                   net.(*pollDesc).WaitRead(0xc820446760, 0x0, 0x0)
                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:78 +0x36
                                                                                                                                                                              net.(*netFD).Read(0xc820446700, 0xc8204dc000, 0x800, 0x800, 0x0, 0xe60050, 0xc8200121e0)
                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:232 +0x23a
                                                                                                        net.(*conn).Read(0xc820030148, 0xc8204dc000, 0x800, 0x800, 0x0, 0x0, 0x0)
                                                                                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/net.go:172 +0xe4
                crypto/tls.(*block).readFromUntil(0xc82043b2c0, 0xe65e80, 0xc820030148, 0x5, 0x0, 0x0)
                                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:455 +0xcc
                                                                                                                                                                           crypto/tls.(*Conn).readRecord(0xc8204c02c0, 0x614517, 0x0, 0x0)
        /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:540 +0x2d1
                                                                            crypto/tls.(*Conn).Read(0xc8204c02c0, 0xc8204c5000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:901 +0x167
 net/http.noteEOFReader.Read(0xe6e900, 0xc8204c02c0, 0xc82042c898, 0xc8204c5000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1370 +0x67
                                                                                                                                                                                       net/http.(*noteEOFReader).Read(0xc8204cb2e0, 0xc8204c5000, 0x1000, 0x1000, 0xc8203ce060, 0x0, 0x0)
                                                        <autogenerated>:126 +0xd0
                                                                                 bufio.(*Reader).fill(0xc820445800)
                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:97 +0x1e9
                                                                                                                                                                                       bufio.(*Reader).Peek(0xc820445800, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
                        /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:132 +0xcc
                                                                                       net/http.(*persistConn).readLoop(0xc82042c840)
                                                                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:876 +0xf7
                                                                                                                                                                                                              created by net/http.(*Transport).dialConn
                        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:685 +0xc78

                                                                                               goroutine 35 [select]:
                                                                                                                     net/http.(*persistConn).writeLoop(0xc82042c840)
                                                                                                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1009 +0x40c
             created by net/http.(*Transport).dialConn
                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:686 +0xc9d

                                                                                                                               goroutine 26 [IO wait]:
                                                                                                                                                      net.runtime_pollWait(0xe65b30, 0x72, 0xc8200121e0)
                                                                                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/runtime/netpoll.go:157 +0x60
                                                net.(*pollDesc).Wait(0xc820465170, 0x72, 0x0, 0x0)
                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:73 +0x3a
                                                                                                                                                                              net.(*pollDesc).WaitRead(0xc820465170, 0x0, 0x0)
                                                                                                                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:78 +0x36
                                                                   net.(*netFD).Read(0xc820465110, 0xc820427000, 0x800, 0x800, 0x0, 0xe60050, 0xc8200121e0)
                                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:232 +0x23a
                                                                                                                                                                                                                                net.(*conn).Read(0xc82046a0f8, 0xc820427000, 0x800, 0x800, 0x0, 0x0, 0x0)
                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/net.go:172 +0xe4
                                                                                                                                   crypto/tls.(*block).readFromUntil(0xc8204e4840, 0xe65e80, 0xc82046a0f8, 0x5, 0x0, 0x0)
                                                                                                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:455 +0xcc
                                                                crypto/tls.(*Conn).readRecord(0xc82047c840, 0x614517, 0x0, 0x0)
                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:540 +0x2d1
                                                                                                                                                                                                    crypto/tls.(*Conn).Read(0xc82047c840, 0xc8204fe000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                                    /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:901 +0x167
                                                                                                                            net/http.noteEOFReader.Read(0xe6e900, 0xc82047c840, 0xc8204805d8, 0xc8204fe000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1370 +0x67
                                                                               net/http.(*noteEOFReader).Read(0xc8204f0ea0, 0xc8204fe000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                                                                                                                                                            <autogenerated>:126 +0xd0
                                                                                                                                                                                                         bufio.(*Reader).fill(0xc8204f2660)
            /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:97 +0x1e9
                                                                               bufio.(*Reader).Peek(0xc8204f2660, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
                                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:132 +0xcc
                                                                                                                                                                                                               net/http.(*persistConn).readLoop(0xc820480580)
                            /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:876 +0xf7
                                                                                                      created by net/http.(*Transport).dialConn
                                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:685 +0xc78

                                                                                                                                                                                                                       goroutine 27 [select]:
          net/http.(*persistConn).writeLoop(0xc820480580)
                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1009 +0x40c
                                                                                                                                        created by net/http.(*Transport).dialConn
                                                                                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:686 +0xc9d

                            goroutine 101 [select]:
                                                   net/http.(*persistConn).writeLoop(0xc820480630)
                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1009 +0x40c
                                                                                                                                                                                created by net/http.(*Transport).dialConn
                                                                                                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:686 +0xc9d

                                                                    goroutine 55 [chan receive]:
                                                                                                github.com/gophergala2016/goad.(*Test).Start.func1(0xc820080480, 0xc820017c20, 0xc820030060, 0xc8204441e0)
                                                                                                                                                                                                            /Users/matt/Code/go/src/github.com/gophergala2016/goad/goad.go:72 +0xa3
                                                    created by github.com/gophergala2016/goad.(*Test).Start
                                                                                                            /Users/matt/Code/go/src/github.com/gophergala2016/goad/goad.go:77 +0x2cf

                                                                                                                                                                                        goroutine 66 [select]:
                                                                                                                                                                                                              net/http.(*Transport).getConn(0xc820080090, 0xc8205d4b60, 0x0, 0xc820237ef0, 0x5, 0xc8203a8360, 0x1f, 0x0, 0x0, 0x0)
                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:554 +0x663
                                                                                                                                                                       net/http.(*Transport).RoundTrip(0xc820080090, 0xc8205d4b60, 0x2, 0x0, 0x0)
                /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:228 +0x4ac
                                                                                       net/http.send(0xc8205d4b60, 0xe644b0, 0xc820080090, 0xc8204e4390, 0x0, 0x0)
                                                                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/http/client.go:220 +0x52c
         net/http.(*Client).send(0xa7eec0, 0xc8205d4b60, 0x24, 0x0, 0x0)
                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/http/client.go:143 +0x15a
                                                                                                                                                    net/http.(*Client).doFollowingRedirects(0xa7eec0, 0xc8205d4b60, 0x6140b0, 0x0, 0x0, 0x0)
            /usr/local/Cellar/go/1.5.3/libexec/src/net/http/client.go:380 +0xbc0
                                                                                    net/http.(*Client).Do(0xa7eec0, 0xc8205d4b60, 0x0, 0x0, 0x0)
                                                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/http/client.go:178 +0x188
                                                                                                                                                                                                                            github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers.glob.func2(0xc8205bb340)
                                                                                                                    /Users/matt/Code/go/src/github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go:65 +0x55
                                 github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request.(*HandlerList).Run(0xc8205bb480, 0xc8205bb340)
                                                                                                                                                                            /Users/matt/Code/go/src/github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/handlers.go:115 +0x9f
                                                                                     github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request.(*Request).Send(0xc8205bb340, 0x0, 0x0)
                                                                                                                                                                                                                        /Users/matt/Code/go/src/github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/request.go:225 +0x57f
                                                                                                                             github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/sqs.(*SQS).ReceiveMessage(0xc820250018, 0xc82034e500, 0xc8201c1e10, 0x0, 0x0)
                                                                /Users/matt/Code/go/src/github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/sqs/api.go:584 +0x4f
                                                                                                                                                                                                   github.com/gophergala2016/goad/queue.SQSAdaptor.Receive(0xc820250018, 0xc820444180, 0x5a, 0xc8201c1ef0)
                                                                        /Users/matt/Code/go/src/github.com/gophergala2016/goad/queue/sqsadaptor.go:60 +0x1aa
                                                                                                                                                            github.com/gophergala2016/goad/queue.aggregate(0xc820320000, 0xc820080480, 0xc820444180, 0x5a, 0x1f40)
                                /Users/matt/Code/go/src/github.com/gophergala2016/goad/queue/aggregation.go:93 +0x122
                                                                                                                     created by github.com/gophergala2016/goad/queue.Aggregate
                                                                                                                                                                                /Users/matt/Code/go/src/github.com/gophergala2016/goad/queue/aggregation.go:82 +0x7b

                                 goroutine 87 [IO wait]:
                                                        net.runtime_pollWait(0xe659b0, 0x72, 0xc8200121e0)
                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/runtime/netpoll.go:157 +0x60
                                                                                                                                                                                   net.(*pollDesc).Wait(0xc8204465a0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:73 +0x3a
                                                                              net.(*pollDesc).WaitRead(0xc8204465a0, 0x0, 0x0)
                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:78 +0x36
                                                                                                                                                                                                      net.(*netFD).Read(0xc820446540, 0xc8203e5800, 0x400, 0x400, 0x0, 0xe60050, 0xc8200121e0)
                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:232 +0x23a
                                                                                                                                net.(*conn).Read(0xc8204a2048, 0xc8203e5800, 0x400, 0x400, 0x0, 0x0, 0x0)
                                                                                                                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/net.go:172 +0xe4
                                        crypto/tls.(*block).readFromUntil(0xc8203e8d80, 0xe65e80, 0xc8204a2048, 0x5, 0x0, 0x0)
                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:455 +0xcc
                                                                                                                                                                                                   crypto/tls.(*Conn).readRecord(0xc8204c0b00, 0x614517, 0x0, 0x0)
                                /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:540 +0x2d1
                                                                                                    crypto/tls.(*Conn).Read(0xc8204c0b00, 0xc8201a4000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                                                                                                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:901 +0x167
                         net/http.noteEOFReader.Read(0xe6e900, 0xc8204c0b00, 0xc82042c268, 0xc8201a4000, 0x1000, 0x1000, 0xc820444c00, 0x0, 0x0)
                                                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1370 +0x67
                                                                                                                                                                                                                               net/http.(*noteEOFReader).Read(0xc8204bea80, 0xc8201a4000, 0x1000, 0x1000, 0x51444d7967434935, 0x0, 0x0)
                                                                                                        <autogenerated>:126 +0xd0
                                                                                                                                 bufio.(*Reader).fill(0xc820019380)
                                                                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:97 +0x1e9
    bufio.(*Reader).Peek(0xc820019380, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:132 +0xcc
                                                                                                                                       net/http.(*persistConn).readLoop(0xc82042c210)
                                                                                                                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:876 +0xf7
                           created by net/http.(*Transport).dialConn
                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:685 +0xc78

                                                                                                                                               goroutine 56 [select]:
                                                                                                                                                                     github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/nsf/termbox-go.PollEvent(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
                                                                    /Users/matt/Code/go/src/github.com/gophergala2016/goad/Godeps/_workspace/src/github.com/nsf/termbox-go/api.go:321 +0x6b3
                                                                                                                                                                                                main.start.func1(0xc820018600)
                                                                                                                                                                                                                                /Users/matt/Code/go/src/github.com/gophergala2016/goad/cli/cli.go:88 +0x24
                                                                       created by main.start
                                                                                                /Users/matt/Code/go/src/github.com/gophergala2016/goad/cli/cli.go:93 +0x167

                                                                                                                                                                           goroutine 100 [IO wait]:
                                                                                                                                                                                                   net.runtime_pollWait(0xe658f0, 0x72, 0xc8200121e0)
                    /usr/local/Cellar/go/1.5.3/libexec/src/runtime/netpoll.go:157 +0x60
                                                                                           net.(*pollDesc).Wait(0xc82000a680, 0x72, 0x0, 0x0)
                                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:73 +0x3a
                                                                                                                                                                                                                      net.(*pollDesc).WaitRead(0xc82000a680, 0x0, 0x0)
                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_poll_runtime.go:78 +0x36
                                                                                                              net.(*netFD).Read(0xc82000a620, 0xc820344c00, 0x400, 0x400, 0x0, 0xe60050, 0xc8200121e0)
                                                                                                                                                                                                        /usr/local/Cellar/go/1.5.3/libexec/src/net/fd_unix.go:232 +0x23a
                                     net.(*conn).Read(0xc8204a2050, 0xc820344c00, 0x400, 0x400, 0x0, 0x0, 0x0)
                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/net/net.go:172 +0xe4
                                                                                                                                                                           crypto/tls.(*block).readFromUntil(0xc8203e8f00, 0xe65e80, 0xc8204a2050, 0x5, 0x0, 0x0)
                                /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:455 +0xcc
                                                                                                   crypto/tls.(*Conn).readRecord(0xc8204c0dc0, 0x614517, 0x0, 0x0)
                                                                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:540 +0x2d1
         crypto/tls.(*Conn).Read(0xc8204c0dc0, 0xc8204d3000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/crypto/tls/conn.go:901 +0x167
                                                                                                                                                                    net/http.noteEOFReader.Read(0xe6e900, 0xc8204c0dc0, 0xc820480688, 0xc8204d3000, 0x1000, 0x1000, 0xc820445740, 0x0, 0x0)
                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1370 +0x67
                                                                                                                                       net/http.(*noteEOFReader).Read(0xc820462800, 0xc8204d3000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
                                                                                                                                                                                                                                    <autogenerated>:126 +0xd0
                        bufio.(*Reader).fill(0xc82050ade0)
                                                            /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:97 +0x1e9
                                                                                                                               bufio.(*Reader).Peek(0xc82050ade0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
                                                                                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/bufio/bufio.go:132 +0xcc
                            net/http.(*persistConn).readLoop(0xc820480630)
                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:876 +0xf7
                                                                                                                                                      created by net/http.(*Transport).dialConn
                                                                                                                                                                                                /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:685 +0xc78

                                    goroutine 88 [select]:
                                                          net/http.(*persistConn).writeLoop(0xc82042c210)
                                                                                                            /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:1009 +0x40c
                                                                                                                                                                                        created by net/http.(*Transport).dialConn
                                                                                                                                                                                                                                    /usr/local/Cellar/go/1.5.3/libexec/src/net/http/transport.go:686 +0xc9d

Goad is not vendorable.

When using go as a dependency and vendoring it the following errors appears in the project:

vendor/github.com/goadapp/goad/infrastructure/infrastructure.go:49: undefined: Asset

This is related to the bin-data pre-requisite on build time, which needed and result files are ignored in .gitignore, thus not copied over to vendor/

Mixed content endpoints or self-signed certs?

I've noticed an issue where by using Goad to test an internal HTTPS endpoint (one that has mixed content), Goad will fail every request made to it.

I then tested Goad with an HTTP endpoint which proxies to our original HTTPS endpoint with mixed content, and this worked fine (the requests didn't immediately fail). Which means it seems likely the 'mixed content' warning the browser is displaying is becoming an issue for Goad somehow?

Switch to eawsy/aws-lambda-go-shim

Hi, i'm a contributor of eawsy/aws-lambda-go-shim and I would like to submit the idea to switch from your nodejs shim to a full go supported shim based on python lambda.
It's a lot more stable (due to fine grained error handling) and a faster/cleaner way to build lambda in go.

We would be happy to provide support through our gitter or whatever you prefer :).

Feature Request: Custom headers

This is an awesome tool. It would be great to specify custom request headers in order to provide cookies and test resources which, for example, require authorisation tokens.

Nodejs version

AWS console displays
"We recommend selecting Node.js 4.3 as the runtime for functions written in Node.js." when opening the function

undefined: Asset when using go get to get goad app

In the wake of the recent breakage (see #40 and #38), I've attempted to get and build a binary of goad from a previous version in the hopes that It'll work. I'll admit, I'm new to Go.

From the Readme, I ran: go get github.com/goadapp/goad
and got

# github.com/goadapp/goad/infrastructure
src/github.com/goadapp/goad/infrastructure/infrastructure.go:49: undefined: Asset

I have confirmed that go is installed and the workspace is setup.
What am I doing wrong here?

Client logs

Does goad capture the client logs? If the site throws a 4xx or 5xx, will it appear in the Lambda logs?

replace average times with percentiles

Average response times can be misleading with high standard deviations, so I would suggest using either percentiles or mean with percentiles. I'd also add the max response time.

[mean, 50, 95, 99, max]

Update regions restriction

I was trying to use the eu-central-1 region, but i fails... looking to the code it is restricted to only this regions:

var supportedRegions = []string{
    "us-east-1",
    "us-west-2",
    "eu-west-1",
    "ap-northeast-1",
}

From http://docs.aws.amazon.com/general/latest/gr/rande.html we can see that eu-central-1 is a valid lambda region.

So i assume that this list is not updated, can you please update it?

Even better, add a flag to ignore this check, so this do not block any future AWS change and require a new release (or user recompile) to use any new region

Only getting 'No results received'

When I'm running goad I only get 'No results received' after some seconds. For example using this:

goad -c 5 -r eu-west-1 -n 5 -u https://goad.io/

I'm running on OS X 10.10 with go version go1.5.3 darwin/amd64. The git hash that I compiled from is 431bb06. Do you need any more information?

Ooh...I have gone through some iterations for finding the correct permissions in IAM.

AWS Credential Named Profile Support

As someone with many AWS accounts, it would be very cool if AWS credential profiles were supported for those with multiple environments.

Here's the gist from the AWS docs: http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-multiple-profiles

What I'm imagining:

goad -p PERF_ENV -n 1000 -c 5 -u https://example.com

where PERF_ENV is defined in ~/.aws/credentials under the [PERF_ENV] heading, as opposed to [default]

Note that the current work-around I'm using is to swap profiles using the awsenv-profiles tool.

Support for dynamic payloads?

Do you have any plans of making or being able to provide dynamic payloads or random tokenizing? I've gotten it partially by parsing the payload and tokenizing using %random% with -> requestBody := strings.Replace(requestBody, "%random%", uuid.NewV4().String(), -1) it "works" but only at the concurrency level which you supply this if you make a request using -c 500 -n 10000 500 would be unique and the other 9500 would be duplicates of that.

Any help would be appreciated โ€ฆ

wrong count of executed requests

@cwaltken-edrans shouldn't be 1000 the default?

$ ../goad_copy/build/osx/x86-64/goad -u http://www.olx.com
Regional results

Region: us-east-1
   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
       333     1.0 MB     0.007s     426.99    1257.58
   Slowest    Fastest   Timeouts  TotErrors
    0.156s     0.003s          0          0

Overall

   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
       333     1.0 MB     0.007s     426.99    1257.58
   Slowest    Fastest   Timeouts  TotErrors
    0.156s     0.003s          0          0
HTTPStatus   Requests
       200        333

$ ../goad_copy/build/osx/x86-64/goad -u http://www.olx.com -c 999
Regional results

Region: us-east-1
   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
        10      30 kB     0.013s     513.74    1512.62
   Slowest    Fastest   Timeouts  TotErrors
    0.026s     0.006s          0          0

Overall

   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
        10      30 kB     0.013s     513.74    1512.62
   Slowest    Fastest   Timeouts  TotErrors
    0.026s     0.006s          0          0
HTTPStatus   Requests
       200         10

$ ../goad_copy/build/osx/x86-64/goad -u http://www.olx.com -n 999
Regional results

Region: us-east-1
   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
       333     991 kB     0.010s     309.98     900.57
   Slowest    Fastest   Timeouts  TotErrors
    0.082s     0.004s          0          0

Overall

   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
       333     991 kB     0.010s     309.98     900.57
   Slowest    Fastest   Timeouts  TotErrors
    0.082s     0.004s          0          0
HTTPStatus   Requests
       200        333


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.