From 7d04cf1ce356869b25276dbba8f5623379d51737 Mon Sep 17 00:00:00 2001 From: Fedor Korotkiy Date: Sun, 25 Apr 2021 16:25:31 +0300 Subject: [PATCH] Add distbuild parts to deadlines --- .deadlines.yml | 17 +++++++++++++++++ distbuild/README.md | 14 -------------- disttest/fixture.go | 10 ++++++++++ smartsched/scheduler_test.go | 12 ++++++++++++ 4 files changed, 39 insertions(+), 14 deletions(-) diff --git a/.deadlines.yml b/.deadlines.yml index c18d5b0..e489df5 100644 --- a/.deadlines.yml +++ b/.deadlines.yml @@ -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 start: 15-04-2021 18:00 deadline: 25-04-2021 23:59 diff --git a/distbuild/README.md b/distbuild/README.md index 133d4a5..e927405 100644 --- a/distbuild/README.md +++ b/distbuild/README.md @@ -129,17 +129,3 @@ prime@bee ~/C/shad-go> find distbuild -iname '*.go' | grep -v test | grep -v moc 2290 total ``` - -# Критерии оценки - -Решение должно проходить все тесты, так же как в обычной задаче. - -Задача разбита на две части: -- `distbuild` проверяет решение всех "кубиков". Эта задача рассчитывается как обычная семинарская. -- `disttest` проверяет интеграционные тесты. Эта задача оценивается как домашка. После успешной попытки, в таблице gdoc - будет стоять 0. После этого, проверяющие должны будут просмотреть решение и заменить оценку в таблице на 1. - Это будет значить, что домашнее задание засчитано. Code Review не будет, проверка нужна только чтобы удостовериться, что - посылка честно проходит все тесты. Отдельный Merge Request создавать не нужно. - -Чтобы запустить проверку внутри `disttest`, сделайте коммит добавляющий незначащий перенос строки в какой-нибудь файл -из этой директории. diff --git a/disttest/fixture.go b/disttest/fixture.go index 849af38..97c0928 100644 --- a/disttest/fixture.go +++ b/disttest/fixture.go @@ -12,6 +12,7 @@ import ( "path/filepath" "runtime" "testing" + "time" "github.com/stretchr/testify/require" "go.uber.org/goleak" @@ -169,6 +170,15 @@ func newEnv(t *testing.T, config *Config) (e *env, cancel func()) { }(w) } + go func() { + select { + case <-time.After(time.Second * 10): + panic("test hang") + case <-env.Ctx.Done(): + return + } + }() + return env, func() { cancelRootContext() _ = env.HTTP.Shutdown(context.Background()) diff --git a/smartsched/scheduler_test.go b/smartsched/scheduler_test.go index d5f6754..19be28c 100644 --- a/smartsched/scheduler_test.go +++ b/smartsched/scheduler_test.go @@ -30,6 +30,7 @@ var ( type testScheduler struct { *scheduler.Scheduler clockwork.FakeClock + reset chan struct{} } func newTestScheduler(t *testing.T) *testScheduler { @@ -38,13 +39,24 @@ func newTestScheduler(t *testing.T) *testScheduler { s := &testScheduler{ FakeClock: clockwork.NewFakeClock(), 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 return s } func (s *testScheduler) stop(t *testing.T) { + close(s.reset) scheduler.TimeAfter = time.After goleak.VerifyNone(t) }