Commit 14a17a06 authored by Andrei Mihu's avatar Andrei Mihu
Browse files

Additional matchmaker regex-type query component tests.

parent c3cdce4d
Loading
Loading
Loading
Loading
+218 −0
Original line number Diff line number Diff line
@@ -59,6 +59,224 @@ func TestMatchmakerAddOnly(t *testing.T) {
	}
}

func TestMatchmakerPropertyRegexSubmatch(t *testing.T) {
	consoleLogger := loggerForTest(t)
	matchMaker, cleanup, err := createTestMatchmaker(t, consoleLogger, nil)
	if err != nil {
		t.Fatalf("error creating test matchmaker: %v", err)
	}
	defer cleanup()

	matchmakerIndexDoc1, err := MapMatchmakerIndex("ticket1", &MatchmakerIndex{
		Ticket: "ticket1",
		Properties: map[string]interface{}{
			"blocked":   "4bd6667a-2659-4888-b245-e13690ff4a9b cc44260e-6b7d-4237-9871-6146d86f7a71 324b7447-ec0f-4b5f-9a13-06511d0bb527",
			"game_mode": "foo",
		},
		MinCount:  2,
		MaxCount:  2,
		PartyId:   "",
		CreatedAt: time.Now().UTC().UnixNano(),

		Query:         "*",
		Count:         1,
		CountMultiple: 1,
		SessionID:     "sid1",
		Intervals:     0,
		SessionIDs:    map[string]struct{}{"sid1": {}},
	})
	if err != nil {
		t.Fatalf(err.Error())
	}

	if err := matchMaker.indexWriter.Update(bluge.Identifier("ticket1"), matchmakerIndexDoc1); err != nil {
		t.Fatalf(err.Error())
	}

	reader, err := matchMaker.indexWriter.Reader()
	if err != nil {
		t.Fatalf(err.Error())
	}
	defer reader.Close()

	parsedIndexQuery1, err := ParseQueryString("+properties.game_mode:foo -properties.blocked:/.*4bd6667a\\-2659\\-4888\\-b245\\-e13690ff4a9b.*/")
	if err != nil {
		t.Fatalf(err.Error())
	}
	searchRequest1 := bluge.NewTopNSearch(100, parsedIndexQuery1)
	iter1, err := reader.Search(context.Background(), searchRequest1)
	if err != nil {
		t.Fatalf(err.Error())
	}
	doc1, err := iter1.Next()
	if err != nil {
		t.Fatalf(err.Error())
	}
	if doc1 != nil {
		t.Fatalf("doc1 not nil")
	}

	parsedIndexQuery2, err := ParseQueryString("+properties.game_mode:foo -properties.blocked:/.*cc44260e\\-6b7d\\-4237\\-9871\\-6146d86f7a71.*/")
	if err != nil {
		t.Fatalf(err.Error())
	}
	searchRequest2 := bluge.NewTopNSearch(100, parsedIndexQuery2)
	iter2, err := reader.Search(context.Background(), searchRequest2)
	if err != nil {
		t.Fatalf(err.Error())
	}
	doc2, err := iter2.Next()
	if err != nil {
		t.Fatalf(err.Error())
	}
	if doc2 != nil {
		t.Fatalf("doc2 not nil")
	}

	parsedIndexQuery3, err := ParseQueryString("+properties.game_mode:foo -properties.blocked:/.*324b7447\\-ec0f\\-4b5f\\-9a13\\-06511d0bb527.*/")
	if err != nil {
		t.Fatalf(err.Error())
	}
	searchRequest3 := bluge.NewTopNSearch(100, parsedIndexQuery3)
	iter3, err := reader.Search(context.Background(), searchRequest3)
	if err != nil {
		t.Fatalf(err.Error())
	}
	doc3, err := iter3.Next()
	if err != nil {
		t.Fatalf(err.Error())
	}
	if doc3 != nil {
		t.Fatalf("doc3 not nil")
	}

	parsedIndexQuery4, err := ParseQueryString("+properties.game_mode:bar -properties.blocked:/.*3a3b78a0\\-8622\\-4a23\\-be42\\-70bfbb26582f.*/")
	if err != nil {
		t.Fatalf(err.Error())
	}
	searchRequest4 := bluge.NewTopNSearch(100, parsedIndexQuery4)
	iter4, err := reader.Search(context.Background(), searchRequest4)
	if err != nil {
		t.Fatalf(err.Error())
	}
	doc4, err := iter4.Next()
	if err != nil {
		t.Fatalf(err.Error())
	}
	if doc4 != nil {
		t.Fatalf("doc4 not nil")
	}

	parsedIndexQuery5, err := ParseQueryString("+properties.game_mode:foo -properties.blocked:/.*3a3b78a0\\-8622\\-4a23\\-be42\\-70bfbb26582f.*/")
	if err != nil {
		t.Fatalf(err.Error())
	}
	searchRequest5 := bluge.NewTopNSearch(100, parsedIndexQuery5)
	iter5, err := reader.Search(context.Background(), searchRequest5)
	if err != nil {
		t.Fatalf(err.Error())
	}
	doc5, err := iter5.Next()
	if err != nil {
		t.Fatalf(err.Error())
	}
	if doc5 == nil {
		t.Fatalf("doc5 nil")
	}
}

func TestMatchmakerPropertyRegexSubmatchMultiple(t *testing.T) {
	consoleLogger := loggerForTest(t)
	matchMaker, cleanup, err := createTestMatchmaker(t, consoleLogger, nil)
	if err != nil {
		t.Fatalf("error creating test matchmaker: %v", err)
	}
	defer cleanup()

	matchmakerIndexDoc1, err := MapMatchmakerIndex("ticket1", &MatchmakerIndex{
		Ticket: "ticket1",
		Properties: map[string]interface{}{
			"maps":      "map1 map2 some_map other_map",
			"game_mode": "foo",
		},
		MinCount:  2,
		MaxCount:  2,
		PartyId:   "",
		CreatedAt: time.Now().UTC().UnixNano(),

		Query:         "*",
		Count:         1,
		CountMultiple: 1,
		SessionID:     "sid1",
		Intervals:     0,
		SessionIDs:    map[string]struct{}{"sid1": {}},
	})
	if err != nil {
		t.Fatalf(err.Error())
	}

	if err := matchMaker.indexWriter.Update(bluge.Identifier("ticket1"), matchmakerIndexDoc1); err != nil {
		t.Fatalf(err.Error())
	}

	reader, err := matchMaker.indexWriter.Reader()
	if err != nil {
		t.Fatalf(err.Error())
	}
	defer reader.Close()

	parsedIndexQuery1, err := ParseQueryString("+properties.game_mode:foo +properties.maps:/.*(map3|some_map_foo).*/")
	if err != nil {
		t.Fatalf(err.Error())
	}
	searchRequest1 := bluge.NewTopNSearch(100, parsedIndexQuery1)
	iter1, err := reader.Search(context.Background(), searchRequest1)
	if err != nil {
		t.Fatalf(err.Error())
	}
	doc1, err := iter1.Next()
	if err != nil {
		t.Fatalf(err.Error())
	}
	if doc1 != nil {
		t.Fatalf("doc1 not nil")
	}

	parsedIndexQuery2, err := ParseQueryString("+properties.game_mode:bar +properties.maps:/.*(map2|map3).*/")
	if err != nil {
		t.Fatalf(err.Error())
	}
	searchRequest2 := bluge.NewTopNSearch(100, parsedIndexQuery2)
	iter2, err := reader.Search(context.Background(), searchRequest2)
	if err != nil {
		t.Fatalf(err.Error())
	}
	doc2, err := iter2.Next()
	if err != nil {
		t.Fatalf(err.Error())
	}
	if doc2 != nil {
		t.Fatalf("doc2 not nil")
	}

	parsedIndexQuery3, err := ParseQueryString("+properties.game_mode:foo +properties.maps:/.*(map2|map3).*/")
	if err != nil {
		t.Fatalf(err.Error())
	}
	searchRequest3 := bluge.NewTopNSearch(100, parsedIndexQuery3)
	iter3, err := reader.Search(context.Background(), searchRequest3)
	if err != nil {
		t.Fatalf(err.Error())
	}
	doc3, err := iter3.Next()
	if err != nil {
		t.Fatalf(err.Error())
	}
	if doc3 == nil {
		t.Fatalf("doc3 nil")
	}
}

// should add and remove from matchmaker
func TestMatchmakerAddAndRemove(t *testing.T) {
	consoleLogger := loggerForTest(t)
+1 −1
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ func NewSocketWsAcceptor(logger *zap.Logger, config Config, sessionRegistry Sess
		conn, err := upgrader.Upgrade(w, r, nil)
		if err != nil {
			// http.Error is invoked automatically from within the Upgrade function.
			logger.Warn("Could not upgrade to WebSocket", zap.Error(err))
			logger.Debug("Could not upgrade to WebSocket", zap.Error(err))
			return
		}