Update readme

This commit is contained in:
Fedor Korotkiy 2020-04-17 19:41:14 +03:00
parent 2dda61337e
commit 1523bbeba2
2 changed files with 20 additions and 2 deletions

View file

@ -30,3 +30,19 @@ Client и Coordinator общаются через два вызова.
- Конструкторы клиентов и хендлеров принимают первым параметром `*zap.Logger`. Запишите в лог события - Конструкторы клиентов и хендлеров принимают первым параметром `*zap.Logger`. Запишите в лог события
получения/отправки запроса и все ошибки. Это поможет вам отлаживать интеграционные тесты получения/отправки запроса и все ошибки. Это поможет вам отлаживать интеграционные тесты
в следующей части задания. в следующей части задания.
- Все методы должны "пробрасывать" контекст.
* Контекст на клиенте нужно передать в функцию `http.NewRequestContext`.
* Контекст на сервере нужно получить из `r.Context()` и передать в `Service`.
- Код в этом пакете не должен запускать новые горутины.
- Ошибку из `Service.StartBuild` нужно посылать клиенту. Если эта ошибка произошла после того,
как хендлер начал писать body, то ошибку нужно передавать в потоке json-ов в поле `StatusUpdate.BuildFailed`.
- Код всех вызовов в этом пакете работает одинаково:
1. Пользователь вызывает метод `*Client`.
2. Метод делает HTTP запрос к серверу.
3. `*Handler` принимает запрос, декодирует его и передает в `*Service`.
4. (*) В случае вызова `/build`, сервис пишет обновления в `StatusWriter`, а клиентский код читает эти обновления из `StatusReader`.
5. Ответ или ошибка из `*Service` возвращается пользователю.

View file

@ -114,6 +114,7 @@ func TestBuildRunning(t *testing.T) {
rsp, r, err := env.client.StartBuild(ctx, req) rsp, r, err := env.client.StartBuild(ctx, req)
require.NoError(t, err) require.NoError(t, err)
defer r.Close()
require.Equal(t, started, rsp) require.Equal(t, started, rsp)
@ -153,7 +154,8 @@ func TestBuildResultsStreaming(t *testing.T) {
return ctx.Err() return ctx.Err()
}) })
rsp, _, err := env.client.StartBuild(ctx, req) rsp, r, err := env.client.StartBuild(ctx, req)
require.NoError(t, err) require.NoError(t, err)
defer r.Close()
require.Equal(t, started, rsp) require.Equal(t, started, rsp)
} }