Skip to content
cicironPublic

About

Tiny multithread test client/server

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

Tiny Test Service

Tiny multithread test client/server

Реализует асинхронный пошаговый алгоритм выполнения команд(команда исполняется за несколько циклов)

Файлы:

tsapi.h - API взаимодействия клиента и сервера

Commands - определение команд (реализованы две: тестовая и команда перемещения). Логика работы в функции Invoke() Команда перемещения основана на примитивном алгоритме движения на одну клетку за один цикл с обходом стены. Все команды - наследницы от ICommand

ServerImpl - реализация самого сервисного механизма. Сервер стартует в количестве потоков, равном количеству ядер. По завершению исполнения асинхронной команды сервер в контексте собственных потоков вызывает Callback.

Realm - поле 250х250 с тремя рядами препятствий

Abuser - клиент. Взаимодействует с сервером через API. Логика такая: на каждую исполнительную единицу (объект) создается группа команд и помещается в индивидуальную очередь. По одной команде одного объекта запускаются в первом цикле. По мере исполнения команд, сервер присылает Callback, который извлекает из очереди следующую команду. Таким образом многопоточность клиента реализована в контексте потоков сервера.

По окончанию работы формируется статистика:

  • Количество отправленных команд
  • Количество Callback'ов на команды
  • Количество исполненных команд
  • Количество проваленых команд (в случае, если невозможно переместить объект в требуемую точку за 250 циклов - регистрируется провал исполнения команды)

Часть функционала осталась не реализована(возможность заложена):

  • Client-Side блокировка (неуправляемые указатели),
  • Контроль TTL исполнения команды
  • Команда STOP
  • Синхронные команды (выполняемые мгновенно в момент запуска)

Запуск(пример): ./TinyTestServer --objects 100 --commands 1000 1000 команд, распределение на 100 объектов.

Обновление 1.0.1

  • Добавлены G-Test'ы
  • Изменен порядок сборки: сервер собирается как библиотека

About

Tiny multithread test client/server

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages