mirror of
https://github.com/buger/goreplay.git
synced 2024-04-21 12:32:02 +00:00
49 lines
995 B
Go
49 lines
995 B
Go
package main
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// DummyInput used for debugging. It generate 1 "GET /"" request per second.
|
|
type DummyInput struct {
|
|
data chan []byte
|
|
}
|
|
|
|
// NewDummyInput constructor for DummyInput
|
|
func NewDummyInput(options string) (di *DummyInput) {
|
|
di = new(DummyInput)
|
|
di.data = make(chan []byte)
|
|
|
|
go di.emit()
|
|
|
|
return
|
|
}
|
|
|
|
func (i *DummyInput) Read(data []byte) (int, error) {
|
|
buf := <-i.data
|
|
|
|
copy(data, buf)
|
|
|
|
return len(buf), nil
|
|
}
|
|
|
|
func (i *DummyInput) emit() {
|
|
ticker := time.NewTicker(time.Second)
|
|
|
|
for {
|
|
select {
|
|
case <-ticker.C:
|
|
uuid := uuid()
|
|
reqh := payloadHeader(RequestPayload, uuid, time.Now().UnixNano())
|
|
i.data <- append(reqh, []byte("GET /HTTP/1.1\r\nHost: www.w3.org\r\nUser-Agent: Go 1.1 package http\r\nAccept-Encoding: gzip\r\n\r\n")...)
|
|
|
|
resh := payloadHeader(ResponsePayload, uuid, 1)
|
|
i.data <- append(resh, []byte("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n")...)
|
|
}
|
|
}
|
|
}
|
|
|
|
func (i *DummyInput) String() string {
|
|
return "Dummy Input"
|
|
}
|