Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add possibility to read input files in parallel #300

Closed
ylegat opened this issue Jun 10, 2016 · 14 comments
Closed

Add possibility to read input files in parallel #300

ylegat opened this issue Jun 10, 2016 · 14 comments

Comments

@ylegat
Copy link
Contributor

ylegat commented Jun 10, 2016

Hey !
My team is currently playing with Gor to see if it fits our needs. To give you more context, we have an application deployed on 2 servers in production and we want to monitor their I/O so we can validate the next version of the application (using the middleware feature).

The idea is to write those I/O inside a file, and then replay them on the application to validate. The problem is that, as we have two servers, we will have two log files. If I understand the code correctly, the current behaviour of Gor is to sort input files matching a pattern and read them in order. What we need is to read all input files "in parallel" so we can respect timestamp while replaying requests. We would compare next request timestamps to execute for each file, replay the oldest one, and loop until all files have been read.

Do you think it would be possible to add some kind of flag as a Gor parameter, so that requests coming from input files are executed this way ? If so, my team may help you on that matter and propose a Pull Request.

@buger
Copy link
Owner

buger commented Jun 10, 2016

Hello! This is a really good point, and there should be a way to handle such cases by default.

What about such logic:

  1. We maintain pool of file object and each file will be represented as object { nextTimestamp }
  2. For each file, we read the first request and determine its timestamp, and set it as nextTimestamp.
  3. When we need to emit next requests, we go through the list of all potential files and choose one with the earliest nextTimestamp.
  4. When we read request from the file, it updates nextTimestamp value with next requests meta. GOTO 3.

What do you think?

@ylegat
Copy link
Contributor Author

ylegat commented Jun 10, 2016

Hello @buger, this is indeed what I had in mind.
When you say a way to handle such cases by default, do you mean that you would like this logic to replace the current one ?

@buger
Copy link
Owner

buger commented Jun 10, 2016

@ylegat yes, current logic is just very simplified variant of solution proposed here, and it should be replaced.

@buger
Copy link
Owner

buger commented Jun 12, 2016

@ylegat I would love to include this feature in the next release and wanted to ask if you still want to implement this feature, or I can do it with your with your guidance/testing?

Thank you!

@ylegat
Copy link
Contributor Author

ylegat commented Jun 12, 2016

@buger , actually we have already started to implement the feature. Hopefully we will be able to submit a pull request in the course of the week ;)

ylegat pushed a commit to ylegat/gor that referenced this issue Jun 13, 2016
When Gor deals with multiple input files, it sorts them and replay their requests file after file.
This behavior is not convenient and should be changed. We should respect timestamps order when replaying requests.
@ylegat
Copy link
Contributor Author

ylegat commented Jun 13, 2016

Hey @buger , we are currently fighting with a concurrency issue that, I think, is already present in the code. The issue is related to FileInput.Close() method which closes FileInput.currentFile file. This method is not called inside a critical section (using mutex for instance) and the file is also manipulated by the go routine (go i.emit()) so I think this can lead to a data race.

The problem does not seem to occur with the existing code, but it appears that our refactoring has waking him up and TestInputFileLoop is now failing randomly...

There are two solutions for this:

  1. manipulate files using a mutex, but this could degrade the performance of the application
  2. just get rid of the Close() method, after all it is used only once, in one test, and is not even necessary with the our refactoring

What do you propose ?

ylegat pushed a commit to ylegat/gor that referenced this issue Jun 14, 2016
When Gor deals with multiple input files, it sorts them and replay their requests file after file.
This behavior is not convenient and should be changed. We should respect timestamps order when replaying requests.
@ylegat
Copy link
Contributor Author

ylegat commented Jun 14, 2016

Ok I spoke too quickly regarding InputFile.Close() : our refactoring does not apply that the files will be closed with test TestInputFileLoop. But the data race remains, so we propose instead to use a finalizer (see here)

@ylegat
Copy link
Contributor Author

ylegat commented Jun 14, 2016

EDIT I just tried with v0.14.1, it is ok now

Another thing, I'm using Go 1.6 to build the project and, even so the build is ok, I've got an error when I launch the app :

$ sudo ./gor --input-raw :8086           \ 
             --input-raw-track-response  \
             --output-file ./request.gor

panic: reflect: Call using main.FileOutputConfig as type *main.FileOutputConfig

goroutine 1 [running]:
panic(0x7ea5a0, 0xc821344200)
    /opt/go/src/runtime/panic.go:464 +0x3e6
reflect.Value.call(0x86f980, 0xa5d4e0, 0x13, 0x960100, 0x4, 0xc82130c150, 0x2, 0x2, 0x0, 0x0, ...)
    /opt/go/src/reflect/value.go:372 +0x74a
reflect.Value.Call(0x86f980, 0xa5d4e0, 0x13, 0xc82130c150, 0x2, 0x2, 0x0, 0x0, 0x0)
    /opt/go/src/reflect/value.go:303 +0xb1
main.registerPlugin(0x86f980, 0xa5d4e0, 0xc821151cd0, 0x2, 0x2)
    /home/yohan/go/src/github.com/ylegat/gor/plugins.go:57 +0x396
main.InitPlugins()
    /home/yohan/go/src/github.com/ylegat/gor/plugins.go:120 +0xe51
main.main()
    /home/yohan/go/src/github.com/ylegat/gor/gor.go:60 +0xb95

I tested it with branches master and tag v0.14.0 with the same result. But it works with tag v0.13.0. Any idea about the reason ?

ylegat pushed a commit to ylegat/gor that referenced this issue Jun 14, 2016
When Gor deals with multiple input files, it sorts them and replay their requests file after file.
This behavior is not convenient and should be changed. We should respect timestamps order when replaying requests.
@buger
Copy link
Owner

buger commented Jun 14, 2016

I added few mutexes which fix file variable data races, and it does not affect performance. There is still races related to filename but they are safe, its ok to have race there.

And as you mentioned 0.14.1 fixes --output-file issue.

@ylegat
Copy link
Contributor Author

ylegat commented Jun 14, 2016

I added few mutexes which fix file variable data races, and it does not affect performance. There is still races related to filename but they are safe, its ok to have race there.

Sorry I may have not been clear enough: I was actually talking about input_file.go and its Close method. We can use a mutex also there, or use a finalizer, as you wish !

@buger
Copy link
Owner

buger commented Jun 14, 2016

Oh, yes, i misread your message. Using finalizer is definitely too hacky, we need to find mutex way.

It can be done similar to output_file change, only when err == io.EOF

@ylegat
Copy link
Contributor Author

ylegat commented Jun 15, 2016

Hey @buger, I think we have a better way than using a mutex : we can achieve the same result with non blocking channel ! But we have a remaining question about this line. Why do you check len(meta) > 2 ? Is it possible than the meta does not contains all triplet (input_type, request_id, timestamp) ?

ylegat pushed a commit to ylegat/gor that referenced this issue Jun 15, 2016
When Gor deals with multiple input files, it sorts them and replay their requests file after file.
This behavior is not convenient and should be changed. We should respect timestamps order when replaying requests.
@buger
Copy link
Owner

buger commented Jun 16, 2016

I'll be frank I do not remember why it was added, and for me right now it make no sense. I think it is safe to remove it :)

ylegat pushed a commit to ylegat/gor that referenced this issue Jun 17, 2016
When Gor deals with multiple input files, it sorts them and replay their requests file after file.
This behavior is not convenient and should be changed. We should respect timestamps order when replaying requests.
@ylegat
Copy link
Contributor Author

ylegat commented Jun 17, 2016

Done, Pull-Request ready for review !

@buger buger closed this as completed in 9e7351d Jun 29, 2016
slacksec pushed a commit to slacksec/golang-devops-stuff that referenced this issue Aug 21, 2017
c138fa97 format file
89c34c6b format file
a1054b10 fix typo
cf402a1d Add option to specify custom BPF filter
09f47b25 Fix panic for non compilant http requests
652e589e fix proto.Path
5aa16966 Add TLS security support between --input-tcp and --output-tcp
21531cea Add support for rewriting headers
03767d1a Add support for HTTP 1.0 and less
2680ce9d Fix #467
b3dffae6 When using --input-file it should exit once file is fully read
aa4a8784 Handle gzip encoding error
4fe95be4 Add example of middleware for javascript
23771b89 [Spelling Error] Change 'dirrectory' to 'directory'
a1a4460c Update Dockerfile
2b20c110 Update Dockerfile
d755c579 Create Dockerfile
064519ce Rename Dockerfile to Dockerfile.dev
cdd818fe Update README.md
c23f95d4 Add httpMethod function
4cf59cc9 Merge branch 'master' of https://github.com/buger/gor
8f450c77 Update README.md
a49b250a Fix typo
de47f6d6 Fix httpHeader when header value contain ":"
d9ce263c Update README.md
74225ebb Rename all package imports from `gor` to `goreplay`
d1ddda41 Add govendor and vendor all depended packages
a15055ef Update README.md
1aa24a99 fixed bug
dcc7af4c Fix output-file sizeLimit
0fb98a8f Improve http handling
6ea23de3 Add new option `--input-raw-expire` to configure TCP message expiration
37553826 Add additional check for malformed packets
a2a1bd5c Fix handling of 304 responses if EOF error received
ce46188d Update NodeJS middleware
7c67b8c5 Add NodeJS middleware framework
5a8d56e1 Improve http client error handling
c8dfe67c Fix middleware when used with prettyfier and gzip encoding
e1f3d71f Make http prettifier work with middleware
858dfaac Make HTTP output less verbose
6a488821 Fix infinite lock at file output
bf1c67c5 Add install task
e726e45d Fix kafka issue (#419)
d66ba035 Prettify http (#418)
ecb16664 Allow to use payload type for file names (#417)
8c162205 Track http responses (#416)
ed375897 Cleanup modifier settings after test
590304d6 Ensure that flush do not get called on closed file
e6957036 More fmt fixes
043c0b74 few fmt fixes
768a29e2 Merge branch 'msales-apache-kafka-input'
5e90377a Fmt changes
f520b338 Add tests and modify to work same as Kafka output
53cbd886 Merge branch 'apache-kafka-input' of https://github.com/msales/goreplay into msales-apache-kafka-input
def3c918 Add Kafka tests and raw format mode (#415)
4ea306b5 Merge branch 'master' of https://github.com/buger/gor
3b511581 continue work on new docs
fe321cd0 Merge pull request #413 from SophisticaSean/master
8421ddb6 Rename Home.md to index.md
e5935a00 Set theme jekyll-theme-cayman
a519c097 Set theme jekyll-theme-slate
17c1abfc Create CNAME
ea8d3f72 Set theme jekyll-theme-cayman
962fd70d Add docs to master
b0b697cb flush the output buffer when it should be flushed
060f521a Merge pull request #412 from buger/handle_spaces_in_filters
8e5a2562 Allow spaces inside filters
8ce5318f Merge pull request #410 from smostovoy/381-dumb-to-files
db1e3d71 Merge pull request #411 from buger/fix-proto-crash
f5e8e26e Fix #408
826cc45d clean files in test [#381]
5909dd71 Support %r - request id - output file pattern #381
3043189d Merge branch 'pr/406'
9b407303 Merge branch 'master' into pr/406
be49c7e7 Run GC on each 1000th request
dfd5fa0c Update documentation
5b5c3f33 Filter response if request is filtered #388
1f19e550 Create kafka input
fd5118b7 fix test: should not add port to host for https
7c788296 Merge pull request #377 from kudos/patch-1
5e6b58e7 Merge branch 'master' of https://github.com/buger/gor
a9ab7ca2 Merge pull request #395 from ylegat/feature/use-pcap-timestamp
0a74db6a Disallow zero timeout (also used fix tests)
b462c06a remove dead code
c6244435 [Boyscout] unexport TCPPacket.Dump() and Packet struct
fa0e96b7 Resolve buger/goreplay#392 : use pcap timestamp
ca61e397 Merge pull request #398 from oivoodoo/master
bea255ab Register kafka output plugin in case of having passed settings
bde29772 Merge pull request #396 from ylegat/bugfix/handle-content-length-missing-for-1xx-204-304
12043e5a Resolve buger/goreplay#394 : Timeout for NO_CONTENT responses
719e9b8e Merge pull request #379 from blastworksinc/feature/kafka-output
cedc5fae Merge pull request #390 from outpace/sni-support
963f7a73 Add basic SNI support
1f24c709 Do not add port to Host header for https (#385)
a1174a15 Do not add port to Host header for https
f90dcc76 Remove server.go because of having 'gor file-server :8080'
638ddfb1 Add one more test case to cover ':' inside of header value
40f7facc User-Agent could contains ':' inside of value.
0a038575 Add all headers and properly passed body
d424167f Change example of port for kafka host
41d3ce48 Add json message output for kafka
9b96dc20 Change Dockerfile because of issue on build echo.java
e3a9a9b2 Add kafka output
76fb9196 Treat PATCH as a HTTP verb
22466d40 Adding ability to output http client to close connection on specific … (#375)
47db326b Fix truncated tcp check
0831476b Set default value for output-http-timeout at declaration (#371)
967c380d go fmt
1674b587 Fix basic http auth
a2f5e433 Fix replayed response header
fc0361dc Fix handling of connection: close for POST requests
647f7022 Add google/gopacket in vendor/ (#360)
082106df Fix Java middleware example (#358)
ecd7e3a5 Update README.md
544d9402 Disable forced flush
25ded56a Update COMM-LICENSE
392d9a2f Update LICENSE.txt
fbebe72f Fix multi-packet splited headers
e38f6a58 Do not quite on flush error
25b998fa Fix run command
f1f8e2f2 Fix http-disallow-header option
07fa6d9a Force Go DNS resolver
f0acd31d Disable --input-http flag until I decide how to do it properly
d34c27c3 Track FIN packets to check for closed connection (#350)
1d811f34 Update LICENSE.txt
35bb655f Fix response meta
24fc5b00 Update README.md
8e0a8b31 Add missing submodule
dac04cbe Merge branch 'ortz-feature/timeout-flag'
dae6a891 Refactor exit-after
6620d256 Change flag name, use of DurationVar instead of int
c78933f1 Feature flag
12287d8b Fix type check, and add asserts submodule
a5cc943a Fix padded packet check
e65035dd Update elasticsearch output to use vendored elastigo and fix #331. (#333)
c128d460 calculate TCP payload slice sizes for Ethernet II packets less than 64 octets (#326)
1ed8691b Fix loopback for non local IP's
f17f5139 Fix 100-continue with multi-packet headers
5a0c03ec Fix BodySize for multi-packet headers
803d53a7 Merge branch 'ylegat-feature/respect_timestamps_when_replaying_requests'
7c333364 Add missing change
37650df2 Refactor #308
f2ff542c Merge branch 'feature/respect_timestamps_when_replaying_requests' of https://github.com/ylegat/gor into ylegat-feature/respect_timestamps_when_replaying_requests
c756a113 Pass only valid HTTP responses (#317)
48fdc02d Fix tests + refactoring
f2c9aee4 Merge branch 'o19s-fix-307'
aea32d93 Rename DelHeader to DeleteHeader
0089892b update 100-continue logic to support different header placement
5d2cc68f Add proto.DelHeader
b0fff3c4 Alternative 100 continue test
da09b14c DRY 100-continue tests
e50ff77c Update echo.sh
51860e13 Add support for known network layers
9e7351d2 Resolve buger/goreplay#300 : respect timestamps when replaying requests
2c49556b Clean current output file name (#304)
d0e1858e Fix `Close` implementation of plugins (#305)
95eecb6b Output file fixes
c4271ffa Connection timeout should inherit Timeout
f4e2b12d v0.14.1 (#301)
d193e249 Raise error if packet layer unknown
d36afeeb Update homebrew formula
06d129d2 Add support for injecting real ip (#296)
a3aeca20 Check dst and src IP's for packets (#295)
35696a49 Add logging to the file-server
0fb8cec6 Embed simple file server for tutorial purpose
cefa2b5c Write files in chunks (#293)
ae092d6a Add custom HTTP methods
9a6186ce Merge pull request #290 from buger/output-file-improvements
ede0fb4c Allow looping mode for --input-file
651bd82d input-file support for gzip files
a4e59185 start should after beging listen signal (#289)
ecfd8549 Remove debug
0f5b5093 Add support for reading multiple files
c8a234b3 Remove test artifacts
b6f7de00 Add compression support
ba98e6e1 Allow date templates for file names
b01748bb Update echo.rb
75d217b8 Few fmt fixes
c1f354a0 Support lower case headers
b900e380 Add homebrew formula
2f45fc8e Fix link in Readme.md (#287)
62b92576 Update README.md
98fe7f19 Fix raw socket ipv6 support
1c3af3ef README: Fix link to issue tracker. (#283)
98868e81 Do not run multiple BPF filters at once
0ccace8c Improve reconnection strategy
a181b144 Fix output-stdout
bf13dc59 Rename --output-dummy to --output-stdout and make it boolean (#282)
d944ac67 Properly handle requests with headers consisting of multiple packets (#281)
a52f56df Do not track response by default (#279)
2836b555 Fix http client when headers are sent in separate chunks
af6307e6 Rename http-buffer option
38535a20 Added http client buffer size (#249)
ae7a3b7f Merge pull request #277 from buger/http-compilance
3fa1b66f Fix typo
7496692d Fix hound
cdbf3b91 Apply fmt and fix tests
fe90601b Improve HTTP client compliance
d40d6c61 Fix --input-tcp for payloads > 64kb
37d657fc Update README.md
2f86d005 Update README.md
9bed47e4 Update README.md
61605aef Update README.md
eb9e073a Update README.md
163f4602 Update README.md
fee36a48 Fix makefile
854ea159 Update release script
f8349e44 Merge pull request #273 from buger/libpcap-fixes
aac1345d Add Mac support
663bd8b9 fmt fixes
19bfb821 Use latest libpcap and ensure to close sockets
cbc871b8 Improve listening on all interfaces for complex environments
768c5f97 Apply FMT
47bb312b Allow listening on ALL interfaces
fb9cf68f Merge pull request #270 from buger/ipv6
759efce5 Add support for IPv6
af831381 Merge pull request #269 from buger/performance
85e84ce3 Improve handling of fragmented messages
2bc441e0 More fixes
7ee06e84 Add dest port to id
4109336a Remove unused logging
3ada9b63 Remove unused fields from packet
c41608e4 Fix tests
48995cc4 Do not span multiple goroutines
6a3b791f Fix memory leak and improve tests
ddaa0e9d Require IP address
281219e6 Use static linking for libpcap and fix error with truncated packets
ba227ae9 Fix license file
5779ea1b Update java middleware to not use apache commons
bb0fab4d Update README.md
8cc377f2 Update README.md
5bea65c7 Fix input raw command line options
52a0ebfd Fmt fixes
a8731f29 Fix broken pipe error
2f0e865e Fix middleware crashing for big payloads.
afc8f785 Libpcap support and vairous bugfixes
00feb081 Add benchmark for testing packet capture (and its quality)
0754ed7d Merge pull request #239 from dougjohnson/output-http-debug
4baf3985 More debugging
32264eb4 Update README.md
f2cedaf8 Merge pull request #256 from buger/revert-238-fix-memory-leak-in-aliases
e8f7d305 Revert "Fixes memory leak by adding respAliases cleanup after expiration time"
0c7643f4 Merge pull request #238 from AnderEnder/fix-memory-leak-in-aliases
4c8a73a5 Merge pull request #235 from sneakybeaky/input_file_reader
3d7455d6 Update README.md
3c40ac7a Fix input dummy spec
e0e065ba Fix license name
fc1771ef Update README.md
5ec67ee8 Create COM-LICENSE
500d80d2 Update LICENSE.txt
eb395ff8 Update README.md
538c05ec Merge pull request #255 from gitter-badger/gitter-badge
d99117c9 Add Gitter badge
e659f65d Replace the use of bufio.Scanner with bufio.Reader so that requests over 64Kb in size can be replayed from a capture file.
7a2f1aef Merge remote-tracking branch 'upstream/master' into fix-memory-leak-in-aliases
6c410ab9 Update README.md
a3403a32 Update README.md
cb4db10c Update README.md
55405b6b Update README.md
fecfa7f1 More listener tests
eb616672 Try to fix tests
dbd8a485 Merge pull request #237 from leejones/patch-1
d6f5ac1c Merge pull request #241 from mortonfox/patch-1
334db15d Apply gofmt simplification
d3e58ba3 Update README.md
7dee2dbe Update README.md
1014abf8 Merge pull request #253 from buger/listener-tests
fa11cc04 Explicitly set ip in tests
4cfa33f8 Fix tests and formatting
a62f269d Try to use local ip in tests
7b2d7800 Merge remote-tracking branch 'origin/go-1.5' into go-1.5
e5daaf06 Fix tests
9fc7cdc0 Add tests for listener and tcp_message
94f066c9 Merge pull request #246 from korzonek/master
7f27d60f codebeat badge
ad2bf033 Fix link to the 'too many open files' blog entry
699eefe3 add flag to enable debugging of http output
2a955dcd Fixes memory leak by adding respAliases cleanup after expiration time
28f82b46 Update README.md
1fdcc541 Merge pull request #225 from johanneswuerbach/middleware-failures
5378ecca Handle middleware failures
9d861af3 Merge pull request #219 from pbsurf/pbsurf/fix_crashes
5c272661 fix crash on missing payload metadata
a4c40cd8 Update README.md
d2384816 Merge pull request #214 from bkochendorfer/itercepted
44506785 Fix small typo
bb2adbce Update travis
028bc6c3 Switch to Go 1.5
16c5b6f1 Merge pull request #210 from buger/support-non-rfc-headers
5cf8f7df Handle headers added by bad clients
2b522285 Fix 100-continue check for packets with data < 4
5dcec259 Add more debug
766bbc61 Merge pull request #202 from buger/file-input-speed-fix
6d2a895d Fix file input replay speed
d81e39d2 Improve test speed
ed949853 Merge pull request #201 from buger/tcp-gc
f378def0 Improve raw input GC
cd83e6f9 Formatting fixes
60ddd535 Add test for large input-http payload
9ded2557 Merge pull request #195 from mre/patch-1
323f85bc Merge pull request #194 from buger/fix-memory-leaks
07a3c191 Speedup input-raw
4f335450 Fix race
661dd202 Fix grouting spawn loop and memory leaks
67505d99 Merge pull request #198 from justanshulsharma/fix-typo
ac043899 Fix typo
b5aa7d7c Fix some typos
8daa7fdc Fix memory leaks
1fea397d Merge pull request #162 from buger/input-modifier
abde6ecf less verbose output
43262f33 Increase timeouts
fe91a206 fix race
3c81723a Increase timeout for large payload
929e0279 small formatting change
f0b96af4 Add protection for malformed requests
f3ea30c6 Add example of java echo middleware
d5a1eb0b Increase input raw timeout
02bf7a86 Rollback to 1.4.2 in travis
cbc27bd6 More debugging
16d7f23d New fixes
6533b50a Travis should use 1.5
9309fb86 Reduce debugging
76d5e22b Enable packet debugging
81d35086 Enable race testing for travis
3c45595a More race fixes
6974a6e2 Ensure that raw input gets closed
33cdcd4d Use httptest package and properly close servers
9550b31f Fix plugin registration
6cb4c265 Some debugging and race fixes
e54f77f2 Try to return all responses
5d2f6ece Fixes
a6e29c68 Close connection
78456d6c More timeout
c4037e0c Increase travis timeout time
7cff7817 Remove verbose flag
b53fba04 Fix formatting issues
d6c776fa Verbose output for travis
ae35f880 Remove magic numbers
8da4e54c Tcp communication should use same protocol as file based
7790b33c Refactor protocol scanner
a971d8a8 Change file format to be text based
3e763c43 Unify all input/output plugins
ea94dd01 fmt changes
d96e3393 Handle HTTP error codes
69424bf6 Fix hound
211be0cd Add request time and round-trip response time
d1091102 Ignore all release files
0d445722 Some fixes
879ed48b Doc changes
ddd51906 Improve docs
a18079fa Improving docs
1a36374c Add some comments
41c1421a Simulate some real-life server by adding small response delay
4f2341b2 Remove more debug
56f0a3fc Remove too verbose output
70e7d8dd Reduce delay of raw input
bb319b5f Add request ID and token modifier middleware
491541c2 Response object should be separate message
2990fab6 Track original responses
8046468e Fix tests
0009555d Apply fmt
5098e388 Fix tests, now properly receive responses
5667cd35 Merge branch 'master' into input-modifier
9ab8b3c1 Add header to request and response
5e526af4 Set version dynamically via ldflags
3a7badc5 Merge pull request #190 from buger/fix-default-port
9a76e354 Fix tcp input test
d6b5c675 Do not add 80 port to host string
de6c41c7 Update docs for Host header
08933e14 Merge pull request #188 from SaraRands/master
259b70a7 Added --http-original-host flag
35854196 Fix tests
a9be1811 Merge branch 'master' into input-modifier
91854534 Merge pull request #176 from dt/dt.hexdecode
87ad851a Merge pull request #185 from buger/fix-large-response
ce193d0d Fix travis config
f92a0b12 Make buffer size configurable
f6864d05 More debugging
3316447b Verbose output for travis
961d5a75 Style fixes
dd68d07c Fix large responses
5c46db92 avoid trailing null in encoded tcp
ed7c5210 Print warning if hex decoding fails
00ad6bd9 Merge pull request #183 from buger/configurable-timeout
587b9ad2 Update Readme
083c97a9 Option to configure timeout
8f2e9bd1 Merge pull request #182 from buger/fix-set-header
a79e54c5 Do not set http header if it explicitly set
27f83a6c Improve debugging
5158f75d Merge pull request #178 from jakubholynet/patch-1
126957c5 Readme: Explain when `--stats` needs to be included
d62eccb6 Make raw message expiration configurable to improve tests time
5cc4228d Merge branch 'master' into input-modifier
5e6f7e03 First middleware tests! :dance:
0a305821 Fix tests by adding small delay
5c21600b Fix timeout
10798239 Run all tests
ac3e2097 One more fix
e5d9f739 Fix tests
df3b410e Merge pull request #171 from buger/code-styling
125d9db8 Next batch
6147e14f Merge pull request #173 from rgarcia/http-disallow-header
fa003f5f add --http-disallow-header option
28540f43 New portion of changes
6158ee30 Remove debug
0859642b Update raw listener
32081b2d Improve byteutils
6647481f Improve style and docs for proto package
0551b19d Add linter task
a5f2d2fd Update README.md
f1c341e2 Update README.md
becb4b95 Delete CHANGELOG.md
db7f5c6a Update to use go 1.4.2
7af0eb2d Merge pull request #170 from buger/input-raw-performance
32d0557a Reduce test file size
6ba0bfc6 Fix tests runner
34fe137d Improve message_id to handle multiple ports
bb74704f Rollback to use net package
d0873d14 Try to add select
313c382a By default use all cores
6b9c9b91 Improve performance of input-raw and improve handing of large payloads
531bd1da Merge pull request #169 from buger/http-client-bugfixes
acaf935c Fix tests
0fe72cc4 Improve http-client reliability and improve debug
f812120d Support only 1 middleware and rewrite tests
e64aac93 Rename input modifier to middleware
8db14e33 Merge branch 'master' into input-modifier
b38cb458 Update version
d380b719 Merge pull request #165 from buger/refactor-settings
fd5388b6 Improve README
48492dc8 Allow url param rewriting
29035d45 Allow multiple url regexp and apply fmt
1ce10249 Percent based syntax for hash filters
5a23573c Add --http-allow-param-hash
413f5012 Add support for restricting certain urls
686d7436 Merge setting files
18c04732 Merge pull request #164 from buger/change-tcp-output-format
4d00ff87 Change internal message format
8f732337 Merge pull request #163 from buger/fix-proxy-set-host
07c65117 Handle proxy request format and HTTP 1.0 requests
31fa612f Add go tool coverage make task
9ddb7185 Merge pull request #160 from buger/raw-http-client
4f114f06 Apply fmt
9a0d9166 Yay! http.Client replaced by own simple http client
bc48e1ad Fix tests
53c27cf3 Add Header Modifier tests
a859ae02 More tests and simplify hashFilter
2b17989f Move HTTP modifier from HTTP output plugin
96fd7134 Use separate config for modifier
43fd14b5 Merge pull request #159 from whitekid/master
72b15db9 Add utilities for modifying HTTP payload
557cdbeb Update README.md
925ff151 Update README.md
481e4f2e Refactor http output settings
416586a3 Add support for redirects
a08ecc79 Add support for timeouts and servers closing connections
decb9483 Fix docker file path
21c544ef Fix tests and apply go fmt
122f06f6 Add raw http client
3d3c6a34 add .dockerignore
04d72791 Merge pull request #158 from buger/fix-100-expect
1e7b603a Fix import path
41294f94 Fix 100-Expect requests and refactor chunked encoding
3e86456e Add more debug
98f941b6 Add support for complex commands
674ffc62 Start adding tests for traffic modifier
4f03f81d Working modifier implementation with examples
dcb8a1de Merge branch 'master' into input-modifier
451a1cd1 Update version number
6fe7ba8e Merge pull request #157 from buger/encoding-chunked
534e9b29 Merge branch 'master' into encoding-chunked
390f75fd Handle Transfer-Encoding: chunked
a0596480 Merge pull request #150 from makern/64bit-align
b2e1eea6 Fix alignment crash on i386
92ba3215 Merge pull request #148 from MartinNowak/pow2
2b497e61 simplify power of 2 test
09f9cac6 Merge pull request #145 from tarfu/master
d05bc0d5 Introduce possibility to enable redirects.
1c018218 Merge pull request #143 from falzm/fix-socket-perm-crash
cef8b754 Prevent crash if no permissions on port
e9fd5eb2 Merge pull request #141 from wmoss/master
85fbfff3 Properly handle errors on input sockets
a7aaf7df Merge pull request #140 from wmoss/master
c1c87ed4 Properly return from errors from ReadRequest
072f3329 Merge pull request #138 from wmoss/master
7c68920a Make TCPOutput more robust to failures
b6351a85 Fix travis test runner
f557d412 Merge pull request #133 from buger/fix-post-requests
ed5c2215 Fix POST requests
208faec7 Initial support for input modifiers
ffe1646d Merge pull request #131 from chmac/patch-1
ae293320 Minor typo correction
eb7885cd Patch from @jcw9930
b6977df9 Merge pull request #127 from jcw9930/url_regexp_rewrite
15417894 add test that explicitly checks if rewrites.Rewrite(url) == /v2/user/joe/ping
7f49314e allow matched parts in -output-http-rewrite-url
80572f5f add regular expression matching to --output-http-rewrite-url
b7567bbd It should be 0.9.2 version
e4b7c8c7 Merge pull request #126 from buger/limiter-extraction
62ced2e1 Update version
79ed6a75 Fix absolute limiting for file input
3793a84e Add docs on load testing using input-file
f2cf81c5 FileInput should have own limiter algorithm
aae57733 Fix limiter for readers
00df525b Update docs
7864808e Some formatting fixes
58c7e12d Add percentage based limiting
de143e42 Make limiter work for Inputs
67cfca0e Make limiter work for all inputs/outputs
43920a96 Added docs on running single test
4cf3bf0a Refactor plugin registration
095c717f Update README.md
abc44c2f Fix tcp_message typo
2d66ccc6 Add limiter support to output-file
b257231d Ensure that channel not closed 2 times in row
1cab1ecb Add EmitFile for test purpose
983bc728 Increase buffer to 5 megabytes
4b592e0e Fix Makefile (it should use tabs)
1637dd49 Convert tabs to spaces and force `go fmt`
9e63fb5b Merge pull request #125 from buger/add-http-input
04a8cceb Updated docs
6ddf4df2 Add comment to make
51f5a3e9 Merge branch 'master' into add-http-input
4c0c9e97 Add http input
4f64b71a Merge pull request #124 from buger/workers-pool-refactoring
be7e2701 Refactor http output
758995d8 Fix main goroutine
5f883e08 Run race detection for tests
3a43e697 Update `release` task to work with docker
468d9461 Merge branch 'DamianZaremba-url-rewrite2'
d0266303 Merge #119
82ed628d Merge pull request #112 from buger/rollback-elastic-search
97dd1520 Update README.md
972a8035 Add `go get` call to travisci
91a02827 Update go version
2c03d3ee Run go get for docker image, and fix make file
b2f90789 Instead of godep just clone elasticgo repo
e68332b8 Update README.md
cf0dfeca Merge pull request #116 from joekiller/scale_http_output_squash
4f9c983b Dynamic scaling by default
988c6abd Dynamic workers toggle. Separate stats toggles. README and FAQs
864723fe First go at a basic test
2c2d5439 Add in --output-http-rewrite-url option
c04b2528 Merge pull request #115 from Blank101/filefix
58944fd4 calling this version 0.9.0
6e125a7b allow dynamic http workers with a signal channel for full queue
1a7cf2bb fixed file input sleep timer
e022fdff Update travisci config
c0dc1b3a Rollback elastic search, use godep for dependencies
674d6036 Revert "Remove elastic search functionality"
6f6c6aba Fix readme
2a6e9f7a Merge pull request #111 from buger/docker-dev
007e0f30 Add Docker development environment
115a37e0 Update README.md
b2c87ff2 Add TomTom to companies using Gor
3a1efccb Update README.md
a2873116 Update README.md
ccb30917 Merge pull request #108 from matzhouse/master
defc017a Add a testable SetHeader function with associated tests It seemed easier to pull this bit of functionality out and be able to test it on it's own than rely on the whole http tests
9e2f7fee gor issue 74 explicitly set the Host on the request when using the --output-http-header option

git-subtree-dir: src/github.com/buger/gor
git-subtree-split: c138fa97398ee8f8958504bc7232f1cf55856f72
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants