Add distbuild parts to deadlines

This commit is contained in:
Fedor Korotkiy 2021-04-25 16:25:31 +03:00
parent ac687bc1d8
commit 7d04cf1ce3
4 changed files with 39 additions and 14 deletions

View file

@ -1,3 +1,20 @@
- group: Dist Build
start: 25-04-2021 18:00
deadline: 15-05-2021 23:59
tasks:
- task: disttest
score: 0
watch:
- distbuild
- task: distbuild
score: 100
watch:
- distbuild
- task: smartsched
score: 200
watch:
- distbuild
- group: Low level - group: Low level
start: 15-04-2021 18:00 start: 15-04-2021 18:00
deadline: 25-04-2021 23:59 deadline: 25-04-2021 23:59

View file

@ -129,17 +129,3 @@ prime@bee ~/C/shad-go> find distbuild -iname '*.go' | grep -v test | grep -v moc
2290 total 2290 total
``` ```
</details> </details>
# Критерии оценки
Решение должно проходить все тесты, так же как в обычной задаче.
Задача разбита на две части:
- `distbuild` проверяет решение всех "кубиков". Эта задача рассчитывается как обычная семинарская.
- `disttest` проверяет интеграционные тесты. Эта задача оценивается как домашка. После успешной попытки, в таблице gdoc
будет стоять 0. После этого, проверяющие должны будут просмотреть решение и заменить оценку в таблице на 1.
Это будет значить, что домашнее задание засчитано. Code Review не будет, проверка нужна только чтобы удостовериться, что
посылка честно проходит все тесты. Отдельный Merge Request создавать не нужно.
Чтобы запустить проверку внутри `disttest`, сделайте коммит добавляющий незначащий перенос строки в какой-нибудь файл
из этой директории.

View file

@ -12,6 +12,7 @@ import (
"path/filepath" "path/filepath"
"runtime" "runtime"
"testing" "testing"
"time"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"go.uber.org/goleak" "go.uber.org/goleak"
@ -169,6 +170,15 @@ func newEnv(t *testing.T, config *Config) (e *env, cancel func()) {
}(w) }(w)
} }
go func() {
select {
case <-time.After(time.Second * 10):
panic("test hang")
case <-env.Ctx.Done():
return
}
}()
return env, func() { return env, func() {
cancelRootContext() cancelRootContext()
_ = env.HTTP.Shutdown(context.Background()) _ = env.HTTP.Shutdown(context.Background())

View file

@ -30,6 +30,7 @@ var (
type testScheduler struct { type testScheduler struct {
*scheduler.Scheduler *scheduler.Scheduler
clockwork.FakeClock clockwork.FakeClock
reset chan struct{}
} }
func newTestScheduler(t *testing.T) *testScheduler { func newTestScheduler(t *testing.T) *testScheduler {
@ -38,13 +39,24 @@ func newTestScheduler(t *testing.T) *testScheduler {
s := &testScheduler{ s := &testScheduler{
FakeClock: clockwork.NewFakeClock(), FakeClock: clockwork.NewFakeClock(),
Scheduler: scheduler.NewScheduler(log, config), Scheduler: scheduler.NewScheduler(log, config),
reset: make(chan struct{}),
} }
go func() {
select {
case <-time.After(time.Second * 5):
panic("test hang")
case <-s.reset:
return
}
}()
scheduler.TimeAfter = s.FakeClock.After scheduler.TimeAfter = s.FakeClock.After
return s return s
} }
func (s *testScheduler) stop(t *testing.T) { func (s *testScheduler) stop(t *testing.T) {
close(s.reset)
scheduler.TimeAfter = time.After scheduler.TimeAfter = time.After
goleak.VerifyNone(t) goleak.VerifyNone(t)
} }