- Клиент
- Возможность отправлять на сервер бинарник и файл с данными, указав при этом количество запусков
- Возможность получить результаты исполнения бинарника на данном файле
- Возможность посмотреть самое быстрое, самое медленное и среднее время исполнения бинарника
- Сервер
- Основной процесс, контролирующий работу сервера, на котором взаимподействие с пользовательтелями (получение и отправка данных), а так же менеджемент потоков (о них далее)
- Несколько потоков, испольнящих бинарник пользователя на входных данных с замером времени
- Клиент
- Добавление флага на таймаут: возможность снизить время ожидания, если код работает слишком долго и получить извещение об этом
- Возможность посмотреть полную статистику по всем исполнениям бинарника
- Возможность остановить процесс с сохранением результатов на некоторое время или без
- Сервер
- Должен удалять старые данные пользователей через какое-то время
- Админ
- По запросу получить статистику по всем пользователям за час/сутки
- Приостановить исполнение сервера с сохранением состояния исполнения во всех потоках
- Мгновенно остановить исполнение сервера
- Восстановить работу сервера (при остановке с сохранением восстановить данные)
- Клиент
- Возможность узнать возможности программы
- Должен на любой запрос получить адекватный ответ
- Возможность получить данные по настоящему исполнению своего бинарника/место в очереди ожидания
- Возможность восстановить исполнение сохранённого процесса
- Перед отправкой на сервер файлов проводится проверка, не посылались ли данные файлы ранее, чтобы не отправлять файлы по новой
- Сервер
- Основной процесс должен заниматься рациональным менеджементом исполнения: стараться, чтобы старые клиенты не слишком долго ждали
- При отключении клиента ждать некоторое время его возвращения, иначе прекращать выполнение запроса
Вся сборка происходит из папки build
make test
make Client
Первый аргумент отвечает за имеющийся флаг:
- s - следующие аргументы задают путь до бинарника и до файла с тестами соответственно.
- g - указать папку с ответом от сервера
make Server
Не забывайте передать аргументов имя "канала" связи.