Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Creating unit tests for diagnostics (#5932)
- Loading branch information
1 parent
c3d095b
commit 67a8770
Showing
2 changed files
with
155 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,144 @@ | ||
// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. | ||
// See License.txt for license information. | ||
|
||
package app | ||
|
||
import ( | ||
"bytes" | ||
"io" | ||
"net/http" | ||
"net/http/httptest" | ||
"strings" | ||
"testing" | ||
"time" | ||
|
||
"github.com/mattermost/platform/utils" | ||
) | ||
|
||
func newTestServer() (chan string, *httptest.Server) { | ||
result := make(chan string, 100) | ||
|
||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { | ||
buf := bytes.NewBuffer(nil) | ||
io.Copy(buf, r.Body) | ||
|
||
result <- buf.String() | ||
})) | ||
|
||
return result, server | ||
} | ||
|
||
func TestDiagnostics(t *testing.T) { | ||
Setup().InitBasic() | ||
|
||
if testing.Short() { | ||
t.SkipNow() | ||
} | ||
|
||
data, server := newTestServer() | ||
defer server.Close() | ||
|
||
oldId := utils.CfgDiagnosticId | ||
utils.CfgDiagnosticId = "i am not real" | ||
defer func() { | ||
utils.CfgDiagnosticId = oldId | ||
}() | ||
initDiagnostics(server.URL) | ||
|
||
// Should send a client identify message | ||
select { | ||
case identifyMessage := <-data: | ||
t.Log("Got idmessage:\n" + identifyMessage) | ||
if !strings.Contains(identifyMessage, utils.CfgDiagnosticId) { | ||
t.Fail() | ||
} | ||
case <-time.After(time.Second * 1): | ||
t.Fatal("Did not recieve ID message") | ||
} | ||
|
||
t.Run("Send", func(t *testing.T) { | ||
const TEST_VALUE = "stuff548959847" | ||
SendDiagnostic("Testing Diagnostic", map[string]interface{}{ | ||
"hey": TEST_VALUE, | ||
}) | ||
select { | ||
case result := <-data: | ||
t.Log("Got diagnostic:\n" + result) | ||
if !strings.Contains(result, TEST_VALUE) { | ||
t.Fail() | ||
} | ||
case <-time.After(time.Second * 1): | ||
t.Fatal("Did not recieve diagnostic") | ||
} | ||
}) | ||
|
||
t.Run("SendDailyDiagnostics", func(t *testing.T) { | ||
SendDailyDiagnostics() | ||
|
||
info := "" | ||
// Collect the info sent. | ||
for { | ||
done := false | ||
select { | ||
case result := <-data: | ||
info += result | ||
case <-time.After(time.Second * 1): | ||
// Done recieving | ||
done = true | ||
break | ||
} | ||
|
||
if done { | ||
break | ||
} | ||
} | ||
|
||
for _, item := range []string{ | ||
TRACK_CONFIG_SERVICE, | ||
TRACK_CONFIG_TEAM, | ||
TRACK_CONFIG_SERVICE, | ||
TRACK_CONFIG_TEAM, | ||
TRACK_CONFIG_SQL, | ||
TRACK_CONFIG_LOG, | ||
TRACK_CONFIG_FILE, | ||
TRACK_CONFIG_RATE, | ||
TRACK_CONFIG_EMAIL, | ||
TRACK_CONFIG_PRIVACY, | ||
TRACK_CONFIG_OAUTH, | ||
TRACK_CONFIG_LDAP, | ||
TRACK_CONFIG_COMPLIANCE, | ||
TRACK_CONFIG_LOCALIZATION, | ||
TRACK_CONFIG_SAML, | ||
TRACK_CONFIG_PASSWORD, | ||
TRACK_CONFIG_CLUSTER, | ||
TRACK_CONFIG_METRICS, | ||
TRACK_CONFIG_WEBRTC, | ||
TRACK_CONFIG_SUPPORT, | ||
TRACK_CONFIG_NATIVEAPP, | ||
TRACK_CONFIG_ANALYTICS, | ||
TRACK_ACTIVITY, | ||
TRACK_SERVER, | ||
} { | ||
if !strings.Contains(info, item) { | ||
t.Fatal("Sent diagnostics missing item: " + item) | ||
} | ||
} | ||
}) | ||
|
||
t.Run("SendDailyDiagnosticsDisabled", func(t *testing.T) { | ||
oldSetting := *utils.Cfg.LogSettings.EnableDiagnostics | ||
*utils.Cfg.LogSettings.EnableDiagnostics = false | ||
defer func() { | ||
*utils.Cfg.LogSettings.EnableDiagnostics = oldSetting | ||
}() | ||
|
||
SendDailyDiagnostics() | ||
|
||
select { | ||
case <-data: | ||
t.Fatal("Should not send diagnostics when they are disabled") | ||
case <-time.After(time.Second * 1): | ||
// Did not recieve diagnostics | ||
} | ||
}) | ||
} |