Skip to content

Commit

Permalink
Merge bba644c into db6ef3f
Browse files Browse the repository at this point in the history
  • Loading branch information
bassosimone committed Feb 5, 2020
2 parents db6ef3f + bba644c commit 38c161b
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 15 deletions.
37 changes: 24 additions & 13 deletions internal/download/download.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ package download
import (
"context"
"encoding/json"
"io"
"io/ioutil"
"time"

"github.com/gorilla/websocket"
Expand Down Expand Up @@ -34,11 +36,31 @@ func Run(ctx context.Context, conn websocketx.Conn, ch chan<- spec.Measurement)
if err != nil {
return err
}
mtype, mdata, err := conn.ReadMessage()
mtype, reader, err := conn.NextReader()
if err != nil {
return err
}
total += int64(len(mdata))
if mtype == websocket.TextMessage {
mdata, err := ioutil.ReadAll(reader)
if err != nil {
return err
}
total += int64(len(mdata))
var measurement spec.Measurement
err = json.Unmarshal(mdata, &measurement)
if err != nil {
return err
}
measurement.Origin = spec.OriginServer
measurement.Test = spec.TestDownload
ch <- measurement
} else {
count, err := io.Copy(ioutil.Discard, reader)
if err != nil {
return err
}
total += int64(count)
}
now := time.Now()
if now.Sub(prev) > params.UpdateInterval {
prev = now
Expand All @@ -53,17 +75,6 @@ func Run(ctx context.Context, conn websocketx.Conn, ch chan<- spec.Measurement)
}
// FALLTHROUGH
}
if mtype != websocket.TextMessage {
continue
}
var measurement spec.Measurement
err = json.Unmarshal(mdata, &measurement)
if err != nil {
return err
}
measurement.Origin = spec.OriginServer
measurement.Test = spec.TestDownload
ch <- measurement
}
return nil // this is how success looks like
}
7 changes: 6 additions & 1 deletion internal/upload/upload.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ package upload
import (
"context"
"errors"
"io"
"io/ioutil"
"math/rand"
"time"

Expand Down Expand Up @@ -50,13 +52,16 @@ func ignoreIncoming(conn websocketx.Conn) error {
if err != nil {
return err
}
mtype, _, err := conn.ReadMessage()
mtype, reader, err := conn.NextReader()
if err != nil {
return err
}
if mtype != websocket.TextMessage {
return errNonTextMessage
}
if _, err := io.Copy(ioutil.Discard, reader); err != nil {
return err
}
}
}

Expand Down
3 changes: 2 additions & 1 deletion internal/websocketx/websocketx.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
package websocketx

import (
"io"
"time"

"github.com/gorilla/websocket"
Expand All @@ -10,7 +11,7 @@ import (
// Conn is the interface of a websocket.Conn used for mocking.
type Conn interface {
Close() error
ReadMessage() (messageType int, p []byte, err error)
NextReader() (messageType int, reader io.Reader, err error)
SetReadLimit(limit int64)
SetReadDeadline(t time.Time) error
SetWriteDeadline(t time.Time) error
Expand Down

0 comments on commit 38c161b

Please sign in to comment.