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(), -1) 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, time.Now().UnixNano()+1, 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" }