package collector import ( "context" "testing" "time" "git.tornberg.me/go-otel/internal/websocket" ) type mockStore struct { entries []websocket.HistoryEntry } func (m *mockStore) Append(ctx context.Context, entry websocket.HistoryEntry) error { m.entries = append(m.entries, entry) return nil } func (m *mockStore) GetHistory(ctx context.Context, limit int) ([]websocket.HistoryEntry, error) { return m.entries, nil } func (m *mockStore) Search(ctx context.Context, query string, limit int) ([]websocket.HistoryEntry, error) { return m.entries, nil } func TestCollectorWithStore(t *testing.T) { store := &mockStore{} coll := New(nil, 10, store) coll.addToHistory(websocket.DataTypeLogs, map[string]interface{}{"msg": "test"}) // Give it a moment since it's asynchronous timeout := time.After(100 * time.Millisecond) for { select { case <-timeout: t.Fatal("timed out waiting for entry to be appended to store") default: if len(store.entries) > 0 { goto OK } time.Sleep(10 * time.Millisecond) } } OK: if store.entries[0].Type != "logs" { t.Errorf("expected type 'logs', got %s", store.entries[0].Type) } }