mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-06-27 21:05:53 +00:00
68 lines
1.7 KiB
Go
68 lines
1.7 KiB
Go
package server
|
|
|
|
import (
|
|
"net/http/httptest"
|
|
"net/url"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/satori/go.uuid"
|
|
)
|
|
|
|
func TestUniqueConnections(t *testing.T) {
|
|
const TestExpectedCount = 1000
|
|
|
|
testStart := time.Now().In(CounterLocation)
|
|
|
|
var server *httptest.Server
|
|
var backendExpected = NewTBackendRequestChecker(t,
|
|
TExpectedBackendRequest{200, bPathAnnounceStartup, &url.Values{"startup": []string{"1"}}, "", nil},
|
|
)
|
|
server, _, _ = TSetup(SetupWantSocketServer|SetupWantBackendServer, backendExpected)
|
|
|
|
defer server.CloseClientConnections()
|
|
defer unsubscribeAllClients()
|
|
defer backendExpected.Close()
|
|
|
|
dumpUniqueUsers()
|
|
|
|
for i := 0; i < TestExpectedCount; i++ {
|
|
uuid := uuid.NewV4()
|
|
uniqueUserChannel <- uuid
|
|
uniqueUserChannel <- uuid
|
|
}
|
|
|
|
TCheckHLLValue(t, TestExpectedCount, readCurrentHLL())
|
|
|
|
token := <-uniqueCtrWritingToken
|
|
uniqueCounter.End = time.Now().In(CounterLocation).Add(-1 * time.Second)
|
|
uniqueCtrWritingToken <- token
|
|
|
|
rolloverCounters_do()
|
|
|
|
for i := 0; i < TestExpectedCount; i++ {
|
|
uuid := uuid.NewV4()
|
|
uniqueUserChannel <- uuid
|
|
uniqueUserChannel <- uuid
|
|
}
|
|
|
|
TCheckHLLValue(t, TestExpectedCount, readCurrentHLL())
|
|
|
|
// Check: Merging the two days results in 2000
|
|
// note: rolloverCounters_do() wrote out a file, and loadHLL() is reading it back
|
|
// TODO need to rewrite some of the test to make this work
|
|
var loadDest PeriodUniqueUsers
|
|
loadHLL(testStart, &loadDest)
|
|
|
|
token = <-uniqueCtrWritingToken
|
|
loadDest.Counter.Merge(uniqueCounter.Counter)
|
|
uniqueCtrWritingToken <- token
|
|
|
|
TCheckHLLValue(t, TestExpectedCount*2, loadDest.Counter.Count())
|
|
}
|
|
|
|
func TestUniqueUsersCleanup(t *testing.T) {
|
|
// Not a test. Removes old files.
|
|
os.RemoveAll(uniqCountDir)
|
|
}
|