mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-04 02:30:45 +00:00
Extend the testing of the AppClient.
This commit is contained in:
@@ -3,6 +3,7 @@ package xfer
|
||||
import (
|
||||
"compress/gzip"
|
||||
"encoding/gob"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
@@ -26,21 +27,14 @@ func (p publisherFunc) Publish(r io.Reader) error {
|
||||
|
||||
func (publisherFunc) Stop() {}
|
||||
|
||||
func TestAppClientPublish(t *testing.T) {
|
||||
var (
|
||||
token = "abcdefg"
|
||||
id = "1234567"
|
||||
rpt = report.MakeReport()
|
||||
done = make(chan struct{})
|
||||
)
|
||||
|
||||
func dummyServer(t *testing.T, expectedToken, expectedID string, expectedReport report.Report, done chan struct{}) *httptest.Server {
|
||||
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if want, have := fmt.Sprintf("Scope-Probe token=%s", token), r.Header.Get("Authorization"); want != have {
|
||||
t.Errorf("want %q, have %q", want, have)
|
||||
if have := r.Header.Get("Authorization"); fmt.Sprintf("Scope-Probe token=%s", expectedToken) != have {
|
||||
t.Errorf("want %q, have %q", expectedToken, have)
|
||||
}
|
||||
|
||||
if want, have := id, r.Header.Get(ScopeProbeIDHeader); want != have {
|
||||
t.Errorf("want %q, have %q", want, have)
|
||||
if have := r.Header.Get(ScopeProbeIDHeader); expectedID != have {
|
||||
t.Errorf("want %q, have %q", expectedID, have)
|
||||
}
|
||||
|
||||
var have report.Report
|
||||
@@ -60,15 +54,26 @@ func TestAppClientPublish(t *testing.T) {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
if want := rpt; !reflect.DeepEqual(want, have) {
|
||||
t.Error(test.Diff(want, have))
|
||||
if !reflect.DeepEqual(expectedReport, have) {
|
||||
t.Error(test.Diff(expectedReport, have))
|
||||
return
|
||||
}
|
||||
w.WriteHeader(http.StatusOK)
|
||||
close(done)
|
||||
})
|
||||
|
||||
s := httptest.NewServer(handlers.CompressHandler(handler))
|
||||
return httptest.NewServer(handlers.CompressHandler(handler))
|
||||
}
|
||||
|
||||
func TestAppClientPublishInternal(t *testing.T) {
|
||||
var (
|
||||
token = "abcdefg"
|
||||
id = "1234567"
|
||||
rpt = report.MakeReport()
|
||||
done = make(chan struct{})
|
||||
)
|
||||
|
||||
s := dummyServer(t, token, id, rpt, done)
|
||||
defer s.Close()
|
||||
|
||||
u, err := url.Parse(s.URL)
|
||||
@@ -98,3 +103,88 @@ func TestAppClientPublish(t *testing.T) {
|
||||
t.Error("timeout")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAppClientDetails(t *testing.T) {
|
||||
var (
|
||||
token = "abcdefg"
|
||||
id = "1234567"
|
||||
rpt = report.MakeReport()
|
||||
done = make(chan struct{})
|
||||
)
|
||||
|
||||
s := dummyServer(t, token, id, rpt, done)
|
||||
defer s.Close()
|
||||
|
||||
u, err := url.Parse(s.URL)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
pc := ProbeConfig{
|
||||
Token: token,
|
||||
ProbeID: id,
|
||||
Insecure: false,
|
||||
}
|
||||
|
||||
p, err := NewAppClient(pc, u.Host, s.URL)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer p.Stop()
|
||||
|
||||
// First few reports might be dropped as the client is spinning up.
|
||||
rp := NewReportPublisher(p)
|
||||
for i := 0; i < 3; i++ {
|
||||
if err := rp.Publish(rpt); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
select {
|
||||
case <-done:
|
||||
case <-time.After(100 * time.Millisecond):
|
||||
t.Error("timeout")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAppClientPublish(t *testing.T) {
|
||||
var (
|
||||
id = "foobarbaz"
|
||||
version = "imalittleteapot"
|
||||
want = Details{ID: id, Version: version}
|
||||
)
|
||||
|
||||
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if err := json.NewEncoder(w).Encode(want); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
})
|
||||
|
||||
s := httptest.NewServer(handlers.CompressHandler(handler))
|
||||
defer s.Close()
|
||||
|
||||
u, err := url.Parse(s.URL)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
pc := ProbeConfig{
|
||||
Token: "",
|
||||
ProbeID: "",
|
||||
Insecure: false,
|
||||
}
|
||||
p, err := NewAppClient(pc, u.Host, s.URL)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer p.Stop()
|
||||
|
||||
have, err := p.Details()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !reflect.DeepEqual(want, have) {
|
||||
t.Error(test.Diff(want, have))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user