mirror of https://github.com/fluffle/goirc
Fix go1 time changes up.
This commit is contained in:
parent
9c67c42fa1
commit
b98fabe44e
|
@ -51,7 +51,7 @@ type Conn struct {
|
||||||
SSLConfig *tls.Config
|
SSLConfig *tls.Config
|
||||||
|
|
||||||
// Client->server ping frequency, in seconds. Defaults to 3m.
|
// Client->server ping frequency, in seconds. Defaults to 3m.
|
||||||
PingFreq int64
|
PingFreq time.Duration
|
||||||
|
|
||||||
// Set this to true to disable flood protection and false to re-enable
|
// Set this to true to disable flood protection and false to re-enable
|
||||||
Flood bool
|
Flood bool
|
||||||
|
@ -95,7 +95,7 @@ func Client(nick, ident, name string,
|
||||||
cPing: make(chan bool),
|
cPing: make(chan bool),
|
||||||
SSL: false,
|
SSL: false,
|
||||||
SSLConfig: nil,
|
SSLConfig: nil,
|
||||||
PingFreq: 180,
|
PingFreq: 3 * time.Minute,
|
||||||
Flood: false,
|
Flood: false,
|
||||||
badness: 0,
|
badness: 0,
|
||||||
lastsent: time.Now(),
|
lastsent: time.Now(),
|
||||||
|
@ -241,11 +241,11 @@ func (conn *Conn) recv() {
|
||||||
|
|
||||||
// Repeatedly pings the server every PingFreq seconds (no matter what)
|
// Repeatedly pings the server every PingFreq seconds (no matter what)
|
||||||
func (conn *Conn) ping() {
|
func (conn *Conn) ping() {
|
||||||
tick := time.NewTicker(conn.PingFreq * second)
|
tick := time.NewTicker(conn.PingFreq)
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-tick.C:
|
case <-tick.C:
|
||||||
conn.Raw(fmt.Sprintf("PING :%d", time.Nanoseconds()))
|
conn.Raw(fmt.Sprintf("PING :%d", time.Now().UnixNano()))
|
||||||
case <-conn.cPing:
|
case <-conn.cPing:
|
||||||
tick.Stop()
|
tick.Stop()
|
||||||
return
|
return
|
||||||
|
|
|
@ -97,7 +97,7 @@ func TestClientAndStateTracking(t *testing.T) {
|
||||||
// no longer valid in Go, which causes reflect.DeepEqual to bail.
|
// no longer valid in Go, which causes reflect.DeepEqual to bail.
|
||||||
// Instead, ignore the function arg and just ensure that all the
|
// Instead, ignore the function arg and just ensure that all the
|
||||||
// handler names are correctly passed to AddHandler.
|
// handler names are correctly passed to AddHandler.
|
||||||
ctrl.RecordCall(r, "AddHandler", gomock.Any(), []string{n})
|
ctrl.RecordCall(r, "AddHandler", gomock.Any(), n)
|
||||||
}
|
}
|
||||||
c := Client("test", "test", "Testing IRC", r, l)
|
c := Client("test", "test", "Testing IRC", r, l)
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ func TestClientAndStateTracking(t *testing.T) {
|
||||||
// OK, while we're here with a mock event registry...
|
// OK, while we're here with a mock event registry...
|
||||||
for n, _ := range stHandlers {
|
for n, _ := range stHandlers {
|
||||||
// See above.
|
// See above.
|
||||||
ctrl.RecordCall(r, "AddHandler", gomock.Any(), []string{n})
|
ctrl.RecordCall(r, "AddHandler", gomock.Any(), n)
|
||||||
}
|
}
|
||||||
c.EnableStateTracking()
|
c.EnableStateTracking()
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ func TestClientAndStateTracking(t *testing.T) {
|
||||||
st.EXPECT().Wipe()
|
st.EXPECT().Wipe()
|
||||||
for n, _ := range stHandlers {
|
for n, _ := range stHandlers {
|
||||||
// See above.
|
// See above.
|
||||||
ctrl.RecordCall(r, "DelHandler", gomock.Any(), []string{n})
|
ctrl.RecordCall(r, "DelHandler", gomock.Any(), n)
|
||||||
}
|
}
|
||||||
c.DisableStateTracking()
|
c.DisableStateTracking()
|
||||||
if c.st || c.ST != nil || c.Me != me {
|
if c.st || c.ST != nil || c.Me != me {
|
||||||
|
@ -288,13 +288,12 @@ func TestPing(t *testing.T) {
|
||||||
defer s.ctrl.Finish()
|
defer s.ctrl.Finish()
|
||||||
|
|
||||||
// Set a low ping frequency for testing.
|
// Set a low ping frequency for testing.
|
||||||
// This still increases testing time by a good few seconds :-/
|
c.PingFreq = 50 * time.Millisecond
|
||||||
c.PingFreq = 1
|
|
||||||
|
|
||||||
// reader is a helper to do a "non-blocking" read of c.out
|
// reader is a helper to do a "non-blocking" read of c.out
|
||||||
reader := func() string {
|
reader := func() string {
|
||||||
select {
|
select {
|
||||||
case <-time.After(1e6):
|
case <-time.After(time.Millisecond):
|
||||||
case s := <-c.out:
|
case s := <-c.out:
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
@ -317,19 +316,22 @@ func TestPing(t *testing.T) {
|
||||||
t.Errorf("Line output directly after ping started.")
|
t.Errorf("Line output directly after ping started.")
|
||||||
}
|
}
|
||||||
|
|
||||||
<-time.After(1e9)
|
<-time.After(50 * time.Millisecond)
|
||||||
if s := reader(); s == "" || !strings.HasPrefix(s, "PING :") {
|
if s := reader(); s == "" || !strings.HasPrefix(s, "PING :") {
|
||||||
t.Errorf("Line not output after 1 second.")
|
t.Errorf("Line not output after 50ms.")
|
||||||
}
|
}
|
||||||
|
|
||||||
<-time.After(1e7)
|
// Reader waits for 1ms and we call it a few times above.
|
||||||
|
<-time.After(45 * time.Millisecond)
|
||||||
if s := reader(); s != "" {
|
if s := reader(); s != "" {
|
||||||
t.Errorf("Line output under a second after last ping.")
|
t.Errorf("Line output under 50ms after last ping.")
|
||||||
}
|
}
|
||||||
|
|
||||||
<-time.After(1e9)
|
// This is a short window (49-51ms) in which the ping should happen
|
||||||
|
// This may result in flaky tests; sorry (and file a bug) if so.
|
||||||
|
<-time.After(2 * time.Millisecond)
|
||||||
if s := reader(); s == "" || !strings.HasPrefix(s, "PING :") {
|
if s := reader(); s == "" || !strings.HasPrefix(s, "PING :") {
|
||||||
t.Errorf("Line not output after another second.")
|
t.Errorf("Line not output after another 2ms.")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now kill the ping loop.
|
// Now kill the ping loop.
|
||||||
|
@ -338,7 +340,8 @@ func TestPing(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
c.cPing <- true
|
c.cPing <- true
|
||||||
<-time.After(1e9)
|
// Make sure we're no longer pinging by waiting ~2x PingFreq
|
||||||
|
<-time.After(105 * time.Millisecond)
|
||||||
if s := reader(); s != "" {
|
if s := reader(); s != "" {
|
||||||
t.Errorf("Line output after ping stopped.")
|
t.Errorf("Line output after ping stopped.")
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCopy(t *testing.T) {
|
func TestCopy(t *testing.T) {
|
||||||
|
@ -13,7 +14,7 @@ func TestCopy(t *testing.T) {
|
||||||
Cmd: "cmd",
|
Cmd: "cmd",
|
||||||
Raw: "raw",
|
Raw: "raw",
|
||||||
Args: []string{"arg", "text"},
|
Args: []string{"arg", "text"},
|
||||||
Time: nil,
|
Time: time.Now(),
|
||||||
}
|
}
|
||||||
|
|
||||||
l2 := l1.Copy()
|
l2 := l1.Copy()
|
||||||
|
|
Loading…
Reference in New Issue