Add distbuild parts to deadlines
This commit is contained in:
parent
ac687bc1d8
commit
7d04cf1ce3
4 changed files with 39 additions and 14 deletions
|
@ -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
|
||||||
|
|
|
@ -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`, сделайте коммит добавляющий незначащий перенос строки в какой-нибудь файл
|
|
||||||
из этой директории.
|
|
||||||
|
|
|
@ -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())
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue