Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Научиться поддерживать разные тестирующие системы #6

Closed
petr-kalinin opened this issue Feb 19, 2019 · 1 comment
Labels
Difficulty: 4-GOD Очень сложная задача Importance: 3-High Очень важная задача

Comments

@petr-kalinin
Copy link
Owner

petr-kalinin commented Feb 19, 2019

Сейчас все задачи отправляются на тестирование на информатикс. Это ограничивает набор возможных задач, а также ограничивает возможнсти влияния на процесс тестирования (например, очень сложно добавлять новые тесты).

Хочется сделать так, чтобы разные задачи могли тестироваться на разных тестирующих системах — помимо информатикса это в первую очередь ejudge (ejudge.algoprog.ru) и codeforces.

На ветке shad уже есть код работы с ejudge (та ветка умеет работать только с ejudge, но не с информатиксом), но там надо его доработать, потому что сейчас он выгружает вообще все сабмиты контеста каждый раз. Также уже основной код для поддержки разных теструющих систем есть в каталоге testSystems.

Для этого надо:

  1. В классе Problem добавить поле testSystem, указывающее, на какой тестирующей системе эта задача. Скорее всего в класс Material тоже надо добавить это поле.
  2. При сабмите задачи и при выгрузке результатов надо смотреть на поле testSystem задачи и ходить в нужную тестирующую систему
  3. Доработать код работы с ejudge, чтобы он не выгружал все вообще сабмиты
  4. Поправить все случаи упоминания информатикса в коде (в частности, ссылки "задача на информатикс" в условиях задач) — там тоже надо ходить в объект Problem и писать разный текст.
  5. Продумать, как работу с несколькими тестирующими системами поддержать в downloadMaterials (скорее всего по аналогии с тем, как редактируются задачи на алгопроге, т.е. через поле force) это сделается в Хранить список материалов в исходниках #95
  6. Перевести пробную задачу на ejudge (например, Дележ яблок - 1), убедиться, что все работает
  7. Перевести все уровни 1А-1Б на ejudge;
  8. Добавить поддержку codeforces

UPD: Для ejudge вообще лучше сделать работу через webhook, т.е. чтобы не алгопрог ходил бы регулярно на ejudge за новыми посылками, а чтобы ejudge когда надо дергал бы определенное api алгопрога.

@petr-kalinin petr-kalinin added Difficulty: 4-GOD Очень сложная задача Importance: 3-High Очень важная задача labels Jun 6, 2019
petr-kalinin added a commit that referenced this issue May 20, 2020
@petr-kalinin
Copy link
Owner Author

В основном все сделано, UPD выделяю в отдельный тикет: #174

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Difficulty: 4-GOD Очень сложная задача Importance: 3-High Очень важная задача
Projects
None yet
Development

No branches or pull requests

1 participant