goadapp / goad Goto Github PK
View Code? Open in Web Editor NEWGoad is an AWS Lambda powered, highly distributed, load testing tool
Home Page: https://goad.io
License: MIT License
Goad is an AWS Lambda powered, highly distributed, load testing tool
Home Page: https://goad.io
License: MIT License
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.
I looked through the code (but am not that familiar with Go) but I can't see anything that deletes the created resources after the testing has finished. Do the Lamda functions and SQS queues get deleted afterwards?
it was a quick fix... please look at #89
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?
I already did some hacks on this, but they have some limitations
p.s. another bad hack (that required a compilation before running the code) is here
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?
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.
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```
It appears SQS queue is not deleted when a test has been interrupted with Ctrl-C
README.md
Does the repo in the go get command need to be:
go get github.com/goadapp/goad
And not:
go get github.com/gophergala2016/goad
?
As per https://docs.aws.amazon.com/general/latest/gr/rande.html#lambda_region , we now have more lambda regions:
us-east-1
us-west-2
eu-west-1
eu-central-1
ap-northeast-1
ap-northeast-2 *
ap-southeast-1 *
ap-southeast-2 *
* are the new regions, yet nor supported by goad
Thanks
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! :)
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
u can copy a snippet from:
we do have automated builds also in goadapp organization at github.com/goadapp/goad/releases
Add some sort of clean
command that removes all AWS resources related to Goad.
we want to be able to run goad within a VPC for testing non-internet-exposed staging/testing environments
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
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?
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?
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.
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.
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?
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
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.
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
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
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
I'm unable to get any results after #35 was merged, rolling back to the version immediate before it works again.
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
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": ""
},
Can i sustain sending request to destination during specific seconds?
When i do test performance like cpu usage, I need to sustain request sending.
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
`
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
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/
export AWS_PROFILE=<AWS_PROFILE>
works, while using the -p parameter does not
This is a really neat tool. Do you have any plans to support testing OAuth secured URL's?
Hey dudes fyi, http://goad.io is unreachable.
The domain has expired.
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?
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 :).
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.
AWS console displays
"We recommend selecting Node.js 4.3 as the runtime for functions written in Node.js." when opening the function
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?
Does goad capture the client logs? If the site throws a 4xx or 5xx, will it appear in the Lambda logs?
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]
nt
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
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.
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.
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 โฆ
@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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.