W3 — Elasticsearch: интеграционные тесты + доказательство использования #56

Closed
opened 2026-09-16 22:20:45 +01:00 by eSlider · 1 comment
Owner

Эпик: #53

W3 — Elasticsearch: интеграционные тесты + доказательство, что oo search идёт в ES

Цель

Доказать, что поиск реально использует Elasticsearch (files_file и oo_docs_text).

Работа

  1. Туннель ES 127.0.0.1:9200 (docs/elasticsearch.md); ONLYOFFICE_ES_URL.
  2. Прогнать go test -tags=integration -run 'TestIntegrationES' ./... — зелёные
    (TestIntegrationESSearch, TestIntegrationESTextIndex, TestIntegrationESTextIndexPDFAttachment).
  3. Добавить тест, доказывающий, что oo search/фасад идёт в ES: бэкенд = elasticsearch,
    известный запрос (напр. Rechnung_986-2025.pdf) возвращает ожидаемый файл; path/ID присутствуют.
  4. Замерить: время запроса и число результатов (для справки в отчёте).

Критерии

  • Интеграционные тесты зелёные; без ONLYOFFICE_ES_URL — skip.
  • Есть тест, что используется ES-бэкенд (не REST @search).
  • go build/vet/test зелёные.
Эпик: #53 ## W3 — Elasticsearch: интеграционные тесты + доказательство, что `oo search` идёт в ES ### Цель Доказать, что поиск реально использует Elasticsearch (`files_file` и `oo_docs_text`). ### Работа 1. Туннель ES `127.0.0.1:9200` (`docs/elasticsearch.md`); `ONLYOFFICE_ES_URL`. 2. Прогнать `go test -tags=integration -run 'TestIntegrationES' ./...` — зелёные (`TestIntegrationESSearch`, `TestIntegrationESTextIndex`, `TestIntegrationESTextIndexPDFAttachment`). 3. Добавить тест, доказывающий, что `oo search`/фасад идёт в ES: бэкенд = `elasticsearch`, известный запрос (напр. `Rechnung_986-2025.pdf`) возвращает ожидаемый файл; path/ID присутствуют. 4. Замерить: время запроса и число результатов (для справки в отчёте). ### Критерии - [ ] Интеграционные тесты зелёные; без `ONLYOFFICE_ES_URL` — skip. - [ ] Есть тест, что используется ES-бэкенд (не REST `@search`). - [ ] `go build/vet/test` зелёные.
eSlider added the feature label 2026-09-16 22:20:53 +01:00
Author
Owner

W3 #56 — отчёт: Elasticsearch — интеграционные тесты + доказательство использования

PR #58: #58
Ветка feat/es-integration#56 · коммит 1a8bf0f (base main). Не мержу и не закрываю.

Что сделано

Добавлен TestIntegrationESFacadeUsesES в file_es_integration_test.go — доказывает,
что публичный путь oo search / c.Files().Search() идёт именно в ES-бэкенд:

  • searcher.Name() == "elasticsearch" и конкретный тип *ESSearcher (REST
    @search — только имена в БД и вообще не реализует Searcher).
  • Известный запрос Rechnung_986-2025.pdf → ожидаемый файл с непустыми id
    и path, Provider == elasticsearch.
  • Подстрока + scope (rechnung 2025 --substring --folder 522, как в CLI) →
    непустая выдача и тот же известный файл.
  • Фикстуры переопределяются env (ONLYOFFICE_ES_TEST_QUERY/_TITLE/_SUBSTRING/_FOLDER).
  • Без ONLYOFFICE_ES_URL — skip. REST-креды не нужны: запрос не трогает REST.

Тесты (имена + PASS)

=== RUN   TestIntegrationESFacadeUsesES
    ES facade query "Rechnung_986-2025.pdf": 2 hits in 4.114411ms
    ES facade substring "rechnung 2025" folder 522: 200 hits in 16.66856ms
--- PASS: TestIntegrationESFacadeUsesES (0.02s)
--- PASS: TestIntegrationESSearch (3.83s)
--- PASS: TestIntegrationESTextIndex (0.16s)
--- PASS: TestIntegrationESTextIndexPDFAttachment (0.16s)
PASS
ok  github.com/eslider/go-onlyoffice  4.175s

go test -tags=integration -run TestIntegrationES -v . — зелёный (4/4).
Без ONLYOFFICE_ES_URL: --- SKIP: TestIntegrationESFacadeUsesES.

Замеры (живой ES 7.16.3, туннель 127.0.0.1:9200)

запрос время результатов
oo search Rechnung_986-2025.pdf ~4.1 ms 2
oo search rechnung 2025 --substring --folder 522 --limit 200 ~16.7 ms 200 (limit)

CLI end-to-end: Rechnung_986-2025.pdf → id 3356, path
Fibu EDL/Scanner/Ausgangsrechnungen/2025/08-2025/Rechnung/Rechnung_986-2025.pdf
и id 1573. UniquePath отработал (значит facade + DAV).

Проверка

  • go build ./..., go vet ./..., go test ./... — зелёные.
  • go vet -tags=integration ., go test -race . — зелёные.
  • gitleaks: no leaks found.

Блокеры

Нет.

## W3 #56 — отчёт: Elasticsearch — интеграционные тесты + доказательство использования PR #58: https://git.produktor.io/eSlider/go-onlyoffice/pulls/58 Ветка `feat/es-integration#56` · коммит `1a8bf0f` (base `main`). Не мержу и не закрываю. ### Что сделано Добавлен `TestIntegrationESFacadeUsesES` в `file_es_integration_test.go` — доказывает, что публичный путь `oo search` / `c.Files().Search()` идёт именно в ES-бэкенд: - `searcher.Name() == "elasticsearch"` и конкретный тип `*ESSearcher` (REST `@search` — только имена в БД и вообще не реализует `Searcher`). - Известный запрос `Rechnung_986-2025.pdf` → ожидаемый файл с непустыми `id` и `path`, `Provider == elasticsearch`. - Подстрока + scope (`rechnung 2025 --substring --folder 522`, как в CLI) → непустая выдача и тот же известный файл. - Фикстуры переопределяются env (`ONLYOFFICE_ES_TEST_QUERY/_TITLE/_SUBSTRING/_FOLDER`). - Без `ONLYOFFICE_ES_URL` — skip. REST-креды не нужны: запрос не трогает REST. ### Тесты (имена + PASS) ``` === RUN TestIntegrationESFacadeUsesES ES facade query "Rechnung_986-2025.pdf": 2 hits in 4.114411ms ES facade substring "rechnung 2025" folder 522: 200 hits in 16.66856ms --- PASS: TestIntegrationESFacadeUsesES (0.02s) --- PASS: TestIntegrationESSearch (3.83s) --- PASS: TestIntegrationESTextIndex (0.16s) --- PASS: TestIntegrationESTextIndexPDFAttachment (0.16s) PASS ok github.com/eslider/go-onlyoffice 4.175s ``` `go test -tags=integration -run TestIntegrationES -v .` — зелёный (4/4). Без `ONLYOFFICE_ES_URL`: `--- SKIP: TestIntegrationESFacadeUsesES`. ### Замеры (живой ES 7.16.3, туннель `127.0.0.1:9200`) | запрос | время | результатов | |--------|-------|-------------| | `oo search Rechnung_986-2025.pdf` | ~4.1 ms | 2 | | `oo search rechnung 2025 --substring --folder 522 --limit 200` | ~16.7 ms | 200 (limit) | CLI end-to-end: `Rechnung_986-2025.pdf` → id `3356`, path `Fibu EDL/Scanner/Ausgangsrechnungen/2025/08-2025/Rechnung/Rechnung_986-2025.pdf` и id `1573`. `UniquePath` отработал (значит facade + DAV). ### Проверка - `go build ./...`, `go vet ./...`, `go test ./...` — зелёные. - `go vet -tags=integration .`, `go test -race .` — зелёные. - gitleaks: `no leaks found`. ### Блокеры Нет.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: eSlider/go-onlyoffice#56