Loading server/match_common_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ func loggerForTest(t *testing.T) *zap.Logger { // loggerForBenchmark allows for easily adjusting log output produced by tests in one place func loggerForBenchmark(b *testing.B) *zap.Logger { return NewJSONLogger(os.Stdout, zapcore.ErrorLevel, JSONFormat) return NewJSONLogger(os.Stdout, zapcore.WarnLevel, JSONFormat) } type fatalable interface { Loading server/matchmaker.go +5 −0 Original line number Diff line number Diff line Loading @@ -271,6 +271,8 @@ func (m *LocalMatchmaker) OnMatchedEntries(fn func(entries [][]*MatchmakerEntry) func (m *LocalMatchmaker) Process() { matchedEntries := make([][]*MatchmakerEntry, 0, 5) t := time.Now() m.Lock() // No active matchmaking tickets, the pool may be non-empty but there are no new tickets to check/query with. Loading Loading @@ -632,9 +634,12 @@ func (m *LocalMatchmaker) Process() { m.router.SendToPresenceIDs(m.logger, []*PresenceID{{Node: entry.Presence.Node, SessionID: entry.Presence.SessionID}}, outgoing, true) } } if m.matchedEntriesFn != nil && len(matchedEntries) > 0 { m.matchedEntriesFn(matchedEntries) } m.logger.Warn("matchmaker process elapsed time", zap.Duration("elapsed_time_sec", time.Now().Sub(t)), zap.Uint32("active_tickets", m.active.Load()), zap.Int("indices", len(m.activeIndexes))) } func (m *LocalMatchmaker) Add(presences []*MatchmakerPresence, sessionID, partyId, query string, minCount, maxCount, countMultiple int, stringProperties map[string]string, numericProperties map[string]float64) (string, int64, error) { Loading server/matchmaker_test.go +77 −71 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import ( "go.uber.org/atomic" "io/ioutil" "os" "sync" "testing" "time" Loading @@ -41,7 +42,7 @@ func TestMatchmakerAddOnly(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket, err := matchMaker.Add([]*MatchmakerPresence{ ticket, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading Loading @@ -69,7 +70,7 @@ func TestMatchmakerAddRemoveRepeated(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket, err := matchMaker.Add([]*MatchmakerPresence{ ticket, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -91,7 +92,7 @@ func TestMatchmakerAddRemoveRepeated(t *testing.T) { t.Fatalf("error matchmaker remove: %v", err) } ticket, err = matchMaker.Add([]*MatchmakerPresence{ ticket, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -113,7 +114,7 @@ func TestMatchmakerAddRemoveRepeated(t *testing.T) { t.Fatalf("error matchmaker remove: %v", err) } ticket, err = matchMaker.Add([]*MatchmakerPresence{ ticket, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -135,7 +136,7 @@ func TestMatchmakerAddRemoveRepeated(t *testing.T) { t.Fatalf("error matchmaker remove: %v", err) } ticket, err = matchMaker.Add([]*MatchmakerPresence{ ticket, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading Loading @@ -386,7 +387,7 @@ func TestMatchmakerAddAndRemove(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket, err := matchMaker.Add([]*MatchmakerPresence{ ticket, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading Loading @@ -426,7 +427,7 @@ func TestMatchmakerAddWithBasicMatch(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -445,7 +446,7 @@ func TestMatchmakerAddWithBasicMatch(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -463,7 +464,7 @@ func TestMatchmakerAddWithBasicMatch(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert session 1 sees the match, and has expected details if mm, ok := matchesSeen[sessionID.String()]; ok { Loading Loading @@ -538,7 +539,7 @@ func TestMatchmakerAddWithMatchOnStar(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ { UserId: "a", SessionId: "a", Loading @@ -557,7 +558,7 @@ func TestMatchmakerAddWithMatchOnStar(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -581,7 +582,7 @@ func TestMatchmakerAddWithMatchOnStar(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert session 1 sees the match, and has expected details if mm, ok := matchesSeen[sessionID.String()]; ok { Loading Loading @@ -656,7 +657,7 @@ func TestMatchmakerAddWithMatchOnRange(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ { UserId: "a", SessionId: "a", Loading @@ -675,7 +676,7 @@ func TestMatchmakerAddWithMatchOnRange(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -699,7 +700,7 @@ func TestMatchmakerAddWithMatchOnRange(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert session 1 sees the match, and has expected details if mm, ok := matchesSeen[sessionID.String()]; ok { Loading Loading @@ -774,7 +775,7 @@ func TestMatchmakerAddWithMatchOnRangeAndValue(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -799,7 +800,7 @@ func TestMatchmakerAddWithMatchOnRangeAndValue(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -823,7 +824,7 @@ func TestMatchmakerAddWithMatchOnRangeAndValue(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert session 1 sees the match, and has expected details if mm, ok := matchesSeen[sessionID.String()]; ok { Loading Loading @@ -901,7 +902,7 @@ func TestMatchmakerAddRemoveNotMatch(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -926,7 +927,7 @@ func TestMatchmakerAddRemoveNotMatch(t *testing.T) { t.Fatalf("error matchmaker remove: %v", err) } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected 0 matches, got %d", len(matchesSeen)) Loading @@ -949,7 +950,7 @@ func TestMatchmakerAddButNotMatch(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -972,7 +973,7 @@ func TestMatchmakerAddButNotMatch(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -994,7 +995,7 @@ func TestMatchmakerAddButNotMatch(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected 0 matches, got %d", len(matchesSeen)) Loading Loading @@ -1022,7 +1023,7 @@ func TestMatchmakerAddButNotMatchOnRange(t *testing.T) { testID, _ := uuid.NewV4() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -1047,7 +1048,7 @@ func TestMatchmakerAddButNotMatchOnRange(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1071,7 +1072,7 @@ func TestMatchmakerAddButNotMatchOnRange(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected 0 matches, got %d", len(matchesSeen)) Loading Loading @@ -1099,7 +1100,7 @@ func TestMatchmakerAddButNotMatchOnRangeAndValue(t *testing.T) { testID, _ := uuid.NewV4() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -1125,7 +1126,7 @@ func TestMatchmakerAddButNotMatchOnRangeAndValue(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1150,7 +1151,7 @@ func TestMatchmakerAddButNotMatchOnRangeAndValue(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected 0 matches, got %d", len(matchesSeen)) Loading @@ -1175,7 +1176,7 @@ func TestMatchmakerAddMultipleAndSomeMatch(t *testing.T) { testID, _ := uuid.NewV4() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -1199,7 +1200,7 @@ func TestMatchmakerAddMultipleAndSomeMatch(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1223,7 +1224,7 @@ func TestMatchmakerAddMultipleAndSomeMatch(t *testing.T) { } sessionID3, _ := uuid.NewV4() ticket3, err := matchMaker.Add([]*MatchmakerPresence{ ticket3, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "c", SessionId: "c", Loading @@ -1246,7 +1247,7 @@ func TestMatchmakerAddMultipleAndSomeMatch(t *testing.T) { t.Fatal("expected non-empty ticket3") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert that 2 are notified of a match if len(matchesSeen) != 2 { Loading Loading @@ -1278,7 +1279,7 @@ func TestMatchmakerAddMultipleAndSomeMatchWithBoost(t *testing.T) { testID, _ := uuid.NewV4() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -1304,7 +1305,7 @@ func TestMatchmakerAddMultipleAndSomeMatchWithBoost(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1330,7 +1331,7 @@ func TestMatchmakerAddMultipleAndSomeMatchWithBoost(t *testing.T) { } sessionID3, _ := uuid.NewV4() ticket3, err := matchMaker.Add([]*MatchmakerPresence{ ticket3, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "c", SessionId: "c", Loading @@ -1355,7 +1356,7 @@ func TestMatchmakerAddMultipleAndSomeMatchWithBoost(t *testing.T) { t.Fatal("expected non-empty ticket3") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) != 2 { t.Fatalf("expected 2 matches, got %d", len(matchesSeen)) Loading Loading @@ -1397,7 +1398,7 @@ func TestMatchmakerAddMultipleAndSomeMatchOptionalTextAlteringScore(t *testing.T testID, _ := uuid.NewV4() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -1421,7 +1422,7 @@ func TestMatchmakerAddMultipleAndSomeMatchOptionalTextAlteringScore(t *testing.T } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1445,7 +1446,7 @@ func TestMatchmakerAddMultipleAndSomeMatchOptionalTextAlteringScore(t *testing.T } sessionID3, _ := uuid.NewV4() ticket3, err := matchMaker.Add([]*MatchmakerPresence{ ticket3, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "c", SessionId: "c", Loading @@ -1468,7 +1469,7 @@ func TestMatchmakerAddMultipleAndSomeMatchOptionalTextAlteringScore(t *testing.T t.Fatal("expected non-empty ticket3") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert that 2 are notified of a match if len(matchesSeen) != 2 { Loading Loading @@ -1498,7 +1499,7 @@ func TestMatchmakerAddAndMatchAuthoritative(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -1521,7 +1522,7 @@ func TestMatchmakerAddAndMatchAuthoritative(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1543,7 +1544,7 @@ func TestMatchmakerAddAndMatchAuthoritative(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert session 1 sees the match, and has expected details if mm, ok := matchesSeen[sessionID.String()]; ok { Loading Loading @@ -1702,7 +1703,7 @@ func TestMatchmakerRequireMutualMatch(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ { UserId: "a", SessionId: "a", Loading @@ -1722,7 +1723,7 @@ func TestMatchmakerRequireMutualMatch(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1747,7 +1748,7 @@ func TestMatchmakerRequireMutualMatch(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected no matches, got %#v", matchesSeen) Loading Loading @@ -1785,7 +1786,7 @@ func TestMatchmakerRequireMutualMatchLarger(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ { UserId: "a", SessionId: "a", Loading @@ -1807,7 +1808,7 @@ func TestMatchmakerRequireMutualMatchLarger(t *testing.T) { } sessionID2, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1829,7 +1830,7 @@ func TestMatchmakerRequireMutualMatchLarger(t *testing.T) { } sessionID3, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "c", SessionId: "c", Loading @@ -1850,7 +1851,7 @@ func TestMatchmakerRequireMutualMatchLarger(t *testing.T) { t.Fatalf("error matchmaker add: %v", err) } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected no matches, got %#v", matchesSeen) Loading Loading @@ -1888,7 +1889,7 @@ func TestMatchmakerRequireMutualMatchLargerReversed(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ { UserId: "a", SessionId: "a", Loading @@ -1910,7 +1911,7 @@ func TestMatchmakerRequireMutualMatchLargerReversed(t *testing.T) { } sessionID2, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1932,7 +1933,7 @@ func TestMatchmakerRequireMutualMatchLargerReversed(t *testing.T) { } sessionID3, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "c", SessionId: "c", Loading @@ -1953,7 +1954,7 @@ func TestMatchmakerRequireMutualMatchLargerReversed(t *testing.T) { t.Fatalf("error matchmaker add: %v", err) } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected no matches, got %#v", matchesSeen) Loading Loading @@ -2091,7 +2092,7 @@ func benchmarkMatchmakerHelper(b *testing.B, activeCount, minCount, maxCount, co matchQuery, props := withQueryAndProps(matchMakerAdded) sessionID, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ { UserId: sessionID.String(), SessionId: sessionID.String(), Loading @@ -2111,7 +2112,7 @@ func benchmarkMatchmakerHelper(b *testing.B, activeCount, minCount, maxCount, co } // process matches matchMaker.process(bluge.NewBatch()) matchMaker.Process() } } Loading Loading @@ -2147,7 +2148,7 @@ func TestMatchmakerMaxPartyTracking(t *testing.T) { createTicketFunc := func(party string) error { sessionID, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: sessionID.String(), SessionId: sessionID.String(), Loading Loading @@ -2192,7 +2193,7 @@ func TestMatchmakerMaxPartyTracking(t *testing.T) { } // process tickets matchMaker.process(bluge.NewBatch()) matchMaker.Process() // expect 2 matches if len(matchesSeen) != 2 { Loading Loading @@ -2228,7 +2229,7 @@ func TestMatchmakerMaxSessionTracking(t *testing.T) { defer cleanup() createTicketFunc := func(sessionID uuid.UUID) error { _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: sessionID.String(), SessionId: sessionID.String(), Loading Loading @@ -2277,7 +2278,7 @@ func TestMatchmakerMaxSessionTracking(t *testing.T) { } // process tickets matchMaker.process(bluge.NewBatch()) matchMaker.Process() // expect 2 matches if len(matchesSeen) != 2 { Loading @@ -2298,7 +2299,7 @@ func TestMatchmakerMaxSessionTracking(t *testing.T) { } } func benchmarkMatchmakerProcessElapsedTime(ticketsMax int32, b *testing.B) { func benchmarkMatchmakerProcessTickets(ticketsMax int32, b *testing.B) { consoleLogger := loggerForBenchmark(b) consoleLogger.Info("Benchmark running") Loading @@ -2318,15 +2319,17 @@ func benchmarkMatchmakerProcessElapsedTime(ticketsMax int32, b *testing.B) { b.ResetTimer() waitGroup := sync.WaitGroup{} waitGroup.Add(int(ticketsMax)) for n := 0; n < b.N; n++ { go func() { for i := 0; i < int(ticketsMax); i++ { go func() { sessionID, _ := uuid.NewV4() sessionIDStr := sessionID.String() userID, _ := uuid.NewV4() userIDStr := userID.String() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ { UserId: userIDStr, SessionId: sessionIDStr, Loading @@ -2342,8 +2345,11 @@ func benchmarkMatchmakerProcessElapsedTime(ticketsMax int32, b *testing.B) { if err != nil { b.Fatalf("error matchmaker add: %v", err) } } waitGroup.Done() }() } matchMaker.Process() select { case <-ctx.Done(): Loading @@ -2353,14 +2359,14 @@ func benchmarkMatchmakerProcessElapsedTime(ticketsMax int32, b *testing.B) { } func BenchmarkMatchmakerProcessElapsedTimeTickets100(b *testing.B) { benchmarkMatchmakerProcessElapsedTime(100, b) benchmarkMatchmakerProcessTickets(10, b) } func BenchmarkMatchmakerProcessElapsedTimeTickets1_000(b *testing.B) { benchmarkMatchmakerProcessElapsedTime(1_000, b) benchmarkMatchmakerProcessTickets(1_000, b) } func BenchmarkMatchmakerProcessElapsedTimeTickets10_000(b *testing.B) { benchmarkMatchmakerProcessElapsedTime(10_000, b) benchmarkMatchmakerProcessTickets(10_000, b) } func BenchmarkMatchmakerProcessElapsedTimeTickets100_000(b *testing.B) { benchmarkMatchmakerProcessElapsedTime(100_000, b) benchmarkMatchmakerProcessTickets(100_000, b) } Loading
server/match_common_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ func loggerForTest(t *testing.T) *zap.Logger { // loggerForBenchmark allows for easily adjusting log output produced by tests in one place func loggerForBenchmark(b *testing.B) *zap.Logger { return NewJSONLogger(os.Stdout, zapcore.ErrorLevel, JSONFormat) return NewJSONLogger(os.Stdout, zapcore.WarnLevel, JSONFormat) } type fatalable interface { Loading
server/matchmaker.go +5 −0 Original line number Diff line number Diff line Loading @@ -271,6 +271,8 @@ func (m *LocalMatchmaker) OnMatchedEntries(fn func(entries [][]*MatchmakerEntry) func (m *LocalMatchmaker) Process() { matchedEntries := make([][]*MatchmakerEntry, 0, 5) t := time.Now() m.Lock() // No active matchmaking tickets, the pool may be non-empty but there are no new tickets to check/query with. Loading Loading @@ -632,9 +634,12 @@ func (m *LocalMatchmaker) Process() { m.router.SendToPresenceIDs(m.logger, []*PresenceID{{Node: entry.Presence.Node, SessionID: entry.Presence.SessionID}}, outgoing, true) } } if m.matchedEntriesFn != nil && len(matchedEntries) > 0 { m.matchedEntriesFn(matchedEntries) } m.logger.Warn("matchmaker process elapsed time", zap.Duration("elapsed_time_sec", time.Now().Sub(t)), zap.Uint32("active_tickets", m.active.Load()), zap.Int("indices", len(m.activeIndexes))) } func (m *LocalMatchmaker) Add(presences []*MatchmakerPresence, sessionID, partyId, query string, minCount, maxCount, countMultiple int, stringProperties map[string]string, numericProperties map[string]float64) (string, int64, error) { Loading
server/matchmaker_test.go +77 −71 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import ( "go.uber.org/atomic" "io/ioutil" "os" "sync" "testing" "time" Loading @@ -41,7 +42,7 @@ func TestMatchmakerAddOnly(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket, err := matchMaker.Add([]*MatchmakerPresence{ ticket, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading Loading @@ -69,7 +70,7 @@ func TestMatchmakerAddRemoveRepeated(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket, err := matchMaker.Add([]*MatchmakerPresence{ ticket, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -91,7 +92,7 @@ func TestMatchmakerAddRemoveRepeated(t *testing.T) { t.Fatalf("error matchmaker remove: %v", err) } ticket, err = matchMaker.Add([]*MatchmakerPresence{ ticket, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -113,7 +114,7 @@ func TestMatchmakerAddRemoveRepeated(t *testing.T) { t.Fatalf("error matchmaker remove: %v", err) } ticket, err = matchMaker.Add([]*MatchmakerPresence{ ticket, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -135,7 +136,7 @@ func TestMatchmakerAddRemoveRepeated(t *testing.T) { t.Fatalf("error matchmaker remove: %v", err) } ticket, err = matchMaker.Add([]*MatchmakerPresence{ ticket, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading Loading @@ -386,7 +387,7 @@ func TestMatchmakerAddAndRemove(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket, err := matchMaker.Add([]*MatchmakerPresence{ ticket, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading Loading @@ -426,7 +427,7 @@ func TestMatchmakerAddWithBasicMatch(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -445,7 +446,7 @@ func TestMatchmakerAddWithBasicMatch(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -463,7 +464,7 @@ func TestMatchmakerAddWithBasicMatch(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert session 1 sees the match, and has expected details if mm, ok := matchesSeen[sessionID.String()]; ok { Loading Loading @@ -538,7 +539,7 @@ func TestMatchmakerAddWithMatchOnStar(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ { UserId: "a", SessionId: "a", Loading @@ -557,7 +558,7 @@ func TestMatchmakerAddWithMatchOnStar(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -581,7 +582,7 @@ func TestMatchmakerAddWithMatchOnStar(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert session 1 sees the match, and has expected details if mm, ok := matchesSeen[sessionID.String()]; ok { Loading Loading @@ -656,7 +657,7 @@ func TestMatchmakerAddWithMatchOnRange(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ { UserId: "a", SessionId: "a", Loading @@ -675,7 +676,7 @@ func TestMatchmakerAddWithMatchOnRange(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -699,7 +700,7 @@ func TestMatchmakerAddWithMatchOnRange(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert session 1 sees the match, and has expected details if mm, ok := matchesSeen[sessionID.String()]; ok { Loading Loading @@ -774,7 +775,7 @@ func TestMatchmakerAddWithMatchOnRangeAndValue(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -799,7 +800,7 @@ func TestMatchmakerAddWithMatchOnRangeAndValue(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -823,7 +824,7 @@ func TestMatchmakerAddWithMatchOnRangeAndValue(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert session 1 sees the match, and has expected details if mm, ok := matchesSeen[sessionID.String()]; ok { Loading Loading @@ -901,7 +902,7 @@ func TestMatchmakerAddRemoveNotMatch(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -926,7 +927,7 @@ func TestMatchmakerAddRemoveNotMatch(t *testing.T) { t.Fatalf("error matchmaker remove: %v", err) } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected 0 matches, got %d", len(matchesSeen)) Loading @@ -949,7 +950,7 @@ func TestMatchmakerAddButNotMatch(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -972,7 +973,7 @@ func TestMatchmakerAddButNotMatch(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -994,7 +995,7 @@ func TestMatchmakerAddButNotMatch(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected 0 matches, got %d", len(matchesSeen)) Loading Loading @@ -1022,7 +1023,7 @@ func TestMatchmakerAddButNotMatchOnRange(t *testing.T) { testID, _ := uuid.NewV4() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -1047,7 +1048,7 @@ func TestMatchmakerAddButNotMatchOnRange(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1071,7 +1072,7 @@ func TestMatchmakerAddButNotMatchOnRange(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected 0 matches, got %d", len(matchesSeen)) Loading Loading @@ -1099,7 +1100,7 @@ func TestMatchmakerAddButNotMatchOnRangeAndValue(t *testing.T) { testID, _ := uuid.NewV4() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -1125,7 +1126,7 @@ func TestMatchmakerAddButNotMatchOnRangeAndValue(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1150,7 +1151,7 @@ func TestMatchmakerAddButNotMatchOnRangeAndValue(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected 0 matches, got %d", len(matchesSeen)) Loading @@ -1175,7 +1176,7 @@ func TestMatchmakerAddMultipleAndSomeMatch(t *testing.T) { testID, _ := uuid.NewV4() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -1199,7 +1200,7 @@ func TestMatchmakerAddMultipleAndSomeMatch(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1223,7 +1224,7 @@ func TestMatchmakerAddMultipleAndSomeMatch(t *testing.T) { } sessionID3, _ := uuid.NewV4() ticket3, err := matchMaker.Add([]*MatchmakerPresence{ ticket3, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "c", SessionId: "c", Loading @@ -1246,7 +1247,7 @@ func TestMatchmakerAddMultipleAndSomeMatch(t *testing.T) { t.Fatal("expected non-empty ticket3") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert that 2 are notified of a match if len(matchesSeen) != 2 { Loading Loading @@ -1278,7 +1279,7 @@ func TestMatchmakerAddMultipleAndSomeMatchWithBoost(t *testing.T) { testID, _ := uuid.NewV4() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -1304,7 +1305,7 @@ func TestMatchmakerAddMultipleAndSomeMatchWithBoost(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1330,7 +1331,7 @@ func TestMatchmakerAddMultipleAndSomeMatchWithBoost(t *testing.T) { } sessionID3, _ := uuid.NewV4() ticket3, err := matchMaker.Add([]*MatchmakerPresence{ ticket3, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "c", SessionId: "c", Loading @@ -1355,7 +1356,7 @@ func TestMatchmakerAddMultipleAndSomeMatchWithBoost(t *testing.T) { t.Fatal("expected non-empty ticket3") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) != 2 { t.Fatalf("expected 2 matches, got %d", len(matchesSeen)) Loading Loading @@ -1397,7 +1398,7 @@ func TestMatchmakerAddMultipleAndSomeMatchOptionalTextAlteringScore(t *testing.T testID, _ := uuid.NewV4() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -1421,7 +1422,7 @@ func TestMatchmakerAddMultipleAndSomeMatchOptionalTextAlteringScore(t *testing.T } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1445,7 +1446,7 @@ func TestMatchmakerAddMultipleAndSomeMatchOptionalTextAlteringScore(t *testing.T } sessionID3, _ := uuid.NewV4() ticket3, err := matchMaker.Add([]*MatchmakerPresence{ ticket3, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "c", SessionId: "c", Loading @@ -1468,7 +1469,7 @@ func TestMatchmakerAddMultipleAndSomeMatchOptionalTextAlteringScore(t *testing.T t.Fatal("expected non-empty ticket3") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert that 2 are notified of a match if len(matchesSeen) != 2 { Loading Loading @@ -1498,7 +1499,7 @@ func TestMatchmakerAddAndMatchAuthoritative(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "a", SessionId: "a", Loading @@ -1521,7 +1522,7 @@ func TestMatchmakerAddAndMatchAuthoritative(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1543,7 +1544,7 @@ func TestMatchmakerAddAndMatchAuthoritative(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() // assert session 1 sees the match, and has expected details if mm, ok := matchesSeen[sessionID.String()]; ok { Loading Loading @@ -1702,7 +1703,7 @@ func TestMatchmakerRequireMutualMatch(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() ticket1, err := matchMaker.Add([]*MatchmakerPresence{ ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{ { UserId: "a", SessionId: "a", Loading @@ -1722,7 +1723,7 @@ func TestMatchmakerRequireMutualMatch(t *testing.T) { } sessionID2, _ := uuid.NewV4() ticket2, err := matchMaker.Add([]*MatchmakerPresence{ ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1747,7 +1748,7 @@ func TestMatchmakerRequireMutualMatch(t *testing.T) { t.Fatal("expected non-empty ticket2") } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected no matches, got %#v", matchesSeen) Loading Loading @@ -1785,7 +1786,7 @@ func TestMatchmakerRequireMutualMatchLarger(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ { UserId: "a", SessionId: "a", Loading @@ -1807,7 +1808,7 @@ func TestMatchmakerRequireMutualMatchLarger(t *testing.T) { } sessionID2, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1829,7 +1830,7 @@ func TestMatchmakerRequireMutualMatchLarger(t *testing.T) { } sessionID3, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "c", SessionId: "c", Loading @@ -1850,7 +1851,7 @@ func TestMatchmakerRequireMutualMatchLarger(t *testing.T) { t.Fatalf("error matchmaker add: %v", err) } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected no matches, got %#v", matchesSeen) Loading Loading @@ -1888,7 +1889,7 @@ func TestMatchmakerRequireMutualMatchLargerReversed(t *testing.T) { defer cleanup() sessionID, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ { UserId: "a", SessionId: "a", Loading @@ -1910,7 +1911,7 @@ func TestMatchmakerRequireMutualMatchLargerReversed(t *testing.T) { } sessionID2, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "b", SessionId: "b", Loading @@ -1932,7 +1933,7 @@ func TestMatchmakerRequireMutualMatchLargerReversed(t *testing.T) { } sessionID3, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: "c", SessionId: "c", Loading @@ -1953,7 +1954,7 @@ func TestMatchmakerRequireMutualMatchLargerReversed(t *testing.T) { t.Fatalf("error matchmaker add: %v", err) } matchMaker.process(bluge.NewBatch()) matchMaker.Process() if len(matchesSeen) > 0 { t.Fatalf("expected no matches, got %#v", matchesSeen) Loading Loading @@ -2091,7 +2092,7 @@ func benchmarkMatchmakerHelper(b *testing.B, activeCount, minCount, maxCount, co matchQuery, props := withQueryAndProps(matchMakerAdded) sessionID, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ { UserId: sessionID.String(), SessionId: sessionID.String(), Loading @@ -2111,7 +2112,7 @@ func benchmarkMatchmakerHelper(b *testing.B, activeCount, minCount, maxCount, co } // process matches matchMaker.process(bluge.NewBatch()) matchMaker.Process() } } Loading Loading @@ -2147,7 +2148,7 @@ func TestMatchmakerMaxPartyTracking(t *testing.T) { createTicketFunc := func(party string) error { sessionID, _ := uuid.NewV4() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: sessionID.String(), SessionId: sessionID.String(), Loading Loading @@ -2192,7 +2193,7 @@ func TestMatchmakerMaxPartyTracking(t *testing.T) { } // process tickets matchMaker.process(bluge.NewBatch()) matchMaker.Process() // expect 2 matches if len(matchesSeen) != 2 { Loading Loading @@ -2228,7 +2229,7 @@ func TestMatchmakerMaxSessionTracking(t *testing.T) { defer cleanup() createTicketFunc := func(sessionID uuid.UUID) error { _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ &MatchmakerPresence{ UserId: sessionID.String(), SessionId: sessionID.String(), Loading Loading @@ -2277,7 +2278,7 @@ func TestMatchmakerMaxSessionTracking(t *testing.T) { } // process tickets matchMaker.process(bluge.NewBatch()) matchMaker.Process() // expect 2 matches if len(matchesSeen) != 2 { Loading @@ -2298,7 +2299,7 @@ func TestMatchmakerMaxSessionTracking(t *testing.T) { } } func benchmarkMatchmakerProcessElapsedTime(ticketsMax int32, b *testing.B) { func benchmarkMatchmakerProcessTickets(ticketsMax int32, b *testing.B) { consoleLogger := loggerForBenchmark(b) consoleLogger.Info("Benchmark running") Loading @@ -2318,15 +2319,17 @@ func benchmarkMatchmakerProcessElapsedTime(ticketsMax int32, b *testing.B) { b.ResetTimer() waitGroup := sync.WaitGroup{} waitGroup.Add(int(ticketsMax)) for n := 0; n < b.N; n++ { go func() { for i := 0; i < int(ticketsMax); i++ { go func() { sessionID, _ := uuid.NewV4() sessionIDStr := sessionID.String() userID, _ := uuid.NewV4() userIDStr := userID.String() _, err = matchMaker.Add([]*MatchmakerPresence{ _, _, err = matchMaker.Add([]*MatchmakerPresence{ { UserId: userIDStr, SessionId: sessionIDStr, Loading @@ -2342,8 +2345,11 @@ func benchmarkMatchmakerProcessElapsedTime(ticketsMax int32, b *testing.B) { if err != nil { b.Fatalf("error matchmaker add: %v", err) } } waitGroup.Done() }() } matchMaker.Process() select { case <-ctx.Done(): Loading @@ -2353,14 +2359,14 @@ func benchmarkMatchmakerProcessElapsedTime(ticketsMax int32, b *testing.B) { } func BenchmarkMatchmakerProcessElapsedTimeTickets100(b *testing.B) { benchmarkMatchmakerProcessElapsedTime(100, b) benchmarkMatchmakerProcessTickets(10, b) } func BenchmarkMatchmakerProcessElapsedTimeTickets1_000(b *testing.B) { benchmarkMatchmakerProcessElapsedTime(1_000, b) benchmarkMatchmakerProcessTickets(1_000, b) } func BenchmarkMatchmakerProcessElapsedTimeTickets10_000(b *testing.B) { benchmarkMatchmakerProcessElapsedTime(10_000, b) benchmarkMatchmakerProcessTickets(10_000, b) } func BenchmarkMatchmakerProcessElapsedTimeTickets100_000(b *testing.B) { benchmarkMatchmakerProcessElapsedTime(100_000, b) benchmarkMatchmakerProcessTickets(100_000, b) }