Add sync API db tests (#3043)

Co-authored-by: kegsay <kegan@matrix.org>
This commit is contained in:
Till 2023-04-17 11:25:33 +02:00 committed by GitHub
parent f66862958d
commit 9fa39263c0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 160 additions and 96 deletions

View file

@ -68,8 +68,6 @@ type Events interface {
// If onlySyncEvents has a value of true, only returns the events that aren't marked as to exclude from sync.
// Returns up to `limit` events. Returns `limited=true` if there are more events in this range but we hit the `limit`.
SelectRecentEvents(ctx context.Context, txn *sql.Tx, roomIDs []string, r types.Range, eventFilter *synctypes.RoomEventFilter, chronologicalOrder bool, onlySyncEvents bool) (map[string]types.RecentEvents, error)
// SelectEarlyEvents returns the earliest events in the given room.
SelectEarlyEvents(ctx context.Context, txn *sql.Tx, roomID string, r types.Range, eventFilter *synctypes.RoomEventFilter) ([]types.StreamEvent, error)
SelectEvents(ctx context.Context, txn *sql.Tx, eventIDs []string, filter *synctypes.RoomEventFilter, preserveOrder bool) ([]types.StreamEvent, error)
UpdateEventJSON(ctx context.Context, txn *sql.Tx, event *gomatrixserverlib.HeaderedEvent) error
// DeleteEventsForRoom removes all event information for a room. This should only be done when removing the room entirely.

View file

@ -104,3 +104,53 @@ func TestOutputRoomEventsTable(t *testing.T) {
}
})
}
func TestReindex(t *testing.T) {
ctx := context.Background()
alice := test.NewUser(t)
room := test.NewRoom(t, alice)
room.CreateAndInsert(t, alice, gomatrixserverlib.MRoomName, map[string]interface{}{
"name": "my new room name",
}, test.WithStateKey(""))
room.CreateAndInsert(t, alice, gomatrixserverlib.MRoomTopic, map[string]interface{}{
"topic": "my new room topic",
}, test.WithStateKey(""))
room.CreateAndInsert(t, alice, "m.room.message", map[string]interface{}{
"msgbody": "my room message",
"type": "m.text",
})
test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) {
tab, db, close := newOutputRoomEventsTable(t, dbType)
defer close()
err := sqlutil.WithTransaction(db, func(txn *sql.Tx) error {
for _, ev := range room.Events() {
_, err := tab.InsertEvent(ctx, txn, ev, nil, nil, nil, false, gomatrixserverlib.HistoryVisibilityShared)
if err != nil {
return fmt.Errorf("failed to InsertEvent: %s", err)
}
}
return nil
})
if err != nil {
t.Fatalf("err: %s", err)
}
events, err := tab.ReIndex(ctx, nil, 10, 0, []string{
gomatrixserverlib.MRoomName,
gomatrixserverlib.MRoomTopic,
"m.room.message"})
if err != nil {
t.Fatal(err)
}
wantEventCount := 3
if len(events) != wantEventCount {
t.Fatalf("expected %d events, got %d", wantEventCount, len(events))
}
})
}