A.6.6 EGenLoader может быть расширен путем реализации шаблонного класса CBaseLoader в субклассе, называемом CCustomLoader. Для использования этого функционала определите переменную, обрабатываемую во время компилирования, COMPILE_CUSTOM_LOAD и свяжите ее с кодом, предоставляемым Организатором, который реализует класс CCustomLoader во время сборки EGenLoader, и используйте ключ «-p» для передачи параметров в стандартный загрузчик.
A.6.7 Полный список ключей EGenLoader можно увидеть, собрав EGenLoader с использованием EGenProjectFiles и затем запустив EGenLoader с ключом «-?».
A.7 EGenDriver
A.7.1 Организатор теста TPC-E ответственен за реализацию соответствующего спецификации TPC-E Драйвера (Глава 4 ). TPC предоставляет EGenDriver для помощи в реализации соответствующего Драйвера и стандартизации определенных ключевых независящих от платформы частей Драйвера.
A.1.1 EGenDriver состоит из трех следующих частей.
-
EGenDriverCE – любые и/или все представления класса CCE (См. EGenSourceFiles CE.h и CE.cpp).
-
EGenDriverMEE – любые и/или все представления класса CMEE (См. EGenSourceFiles MEE.h и MEE.cpp).
-
EGenDriverDM – единичный представитель класса CDM (см. EGenSourceFiles DM.h и DM.cpp).
A.7.3 EGenDriver, как и EGenLoader, использует в процессе создания данных EGenInputFiles и EGenTables. Это позволяет достичь взаимосвязи посредством генерации данных между временем наполнения базы данных и временем Выполнения теста.
A.7.4 Организатор ответственен за предоставление необходимой реализации Транзакции Trade-Cleanup (см. Пункт 3.3.19). Trade-Cleanup может быть реализована как отдельная, независимая процедура или какк часть EGenDriverDM.
A.8 EGenLogger
A.8.1 EGenLogger используется EGenDriver и EGenLoader для ведения журнала их конфигурации и реконфигурации. Хотя это и не является жестко требуемым, но от Организатора теста ожидается, что он создаст/преобразует реализацию SendToLoggerImpl для записи выходных данных EGenLogger’s. Для дополнительной информации см. EGen/inc/EGenLogger.h.
A.9 Реализация CE с использованием EGenDriverCE
A.9.1 Отправка и получение данных в и из SUT являются функциями, чрезвычайно привязанными к платформе. Их реализация зависит от нижележащих коммуникационных протоколов и используемого оборудования. Таким же образом, измерение Времени отклика Транзакции также привязано к платформе и зависит от механизмов подсчета времени, предоставляемых нижележащим программным обеспечением и оборудованием.
Однако Сочетание Транзакций (благодаря которому решается, какая Транзакция должна быть выполнена следующей) и генерация входных данных для Транзакций являются независящими от платформы. Как следствие, EGenDriverCE инкапсулирует этот функционал и предоставляет его стандартизированную реализацию во всех реализациях TPC-E.
A.10 Реализация MEE с использование EGenDriverMEE
A.10.1 Отправка и получение данных в и из SUT являются функциями, чрезвычайно привязанными к платформе. Их реализация зависит от нижележащих коммуникационных протоколов и используемого оборудования. Таким же образом, измерение Времени отклика Транзакции также привязано к платформе и зависит от механизмов подсчета времени, предоставляемых нижележащим программным обеспечением и оборудованием.
Однако эмуляция внутренник биржевых торгов и генерация входных данных для Транзакций Trade-Result и Market-Feed являются независящими от платформы. Как следствие, EGenDriverMEE инкапсулирует этот функционал и предоставляет его стандартизированную реализацию во всех реализациях TPC-E.
Примечание: корректная реализация MEE должна иметь возможность подстраиваться под изменяющуюся интенсивность торговых запросов и иметь возможность своевременно превращать торговые заявки в новые Транзакции Trade-Result. Аналогично, корректная реализация MEE должна иметь возможность подстраиваться под изменяющуюся интенсивность Транзакций Trade-Result и должна своевременно вызывать Транзакции Market-Feed.
A.11 Реализация Генератора обслуживания данных с использованием EGenDriverDM
A.11.1 Отправка и получение данных в и из SUT являются функциями, чрезвычайно привязанными к платформе. Их реализация зависит от нижележащих коммуникационных протоколов и используемого оборудования. Таким же образом, измерение Времени отклика Транзакции также привязано к платформе и зависит от механизмов подсчета времени, предоставляемых нижележащим программным обеспечением и оборудованием.
Однако генерация входных данных для Транзакции Data-Maintenance является независящей от платформы. Как следствие, EGenDriverDM инкапсулирует этот функционал и предоставляет его стандартизированную реализацию во всех реализациях TPC-E.
A.12 EGenTxnHarness
EGenTxnHarness состоит из всех экземпляров:
- класса CBrokerVolume за исключением реализации CBrokerVolumeDBInterface, предоставленной Организатором (см. EGenSourceFile, называющийся TxnHarnessBrokerVolume.h)
- класса CCustomerPosition за исключением реализации CCustomerPositionDBInterface, предоставленной Организатором (см. EGenSourceFile, называющийся TxnHarnessCustomerPosition.h)
- класса CDataMaintenance class excluding the Sponsor provided implementation of CDataMaintenanceDBInterface, предоставленной Организатором (см. EGenSourceFile, называющийся TxnHarnessDataMaintenance.h)
- класса CMarketFeed за исключением реализации CMarketFeedDBInterface, предоставленной Организатором (см. EGenSourceFile, называющийся TxnHarnessMarketFeed.h)
- класса CMarketWatch за исключением реализации CMarketWatchDBInterface, предоставленной Организатором (см. EGenSourceFile, называющийся TxnHarnessMarketWatch.h)
- класса CSecurityDetail за исключением реализации CSecurityDetailDBInterface, предоставленной Организатором (см. EGenSourceFile, называющийся TxnHarnessSecurityDetail.h)
- класса CTradeCleanup за исключением реализации CTradeCleanupDBInterface, предоставленной Организатором (см. EGenSourceFile, называющийся TxnHarnessTradeCleanup.h)
- класса CTradeLookup за исключением реализации CTradeLookupDBInterface, предоставленной Организатором (см. EGenSourceFile, называющийся TxnHarnessTradeLookup.h)
- класса CTradeOrder за исключением реализации CTradeOrderDBInterface, предоставленной Организатором (см. EGenSourceFile, называющийся TxnHarnessTradeOrder.h)
- класса CTradeResult за исключением реализации CTradeResultDBInterface, предоставленной Организатором (см. EGenSourceFile, называющийся TxnHarnessTradeResult.h)
- класса CTradeStatus за исключением реализации CTradeStatusDBInterface, предоставленной Организатором (см. EGenSourceFile, называющийся TxnHarnessTradeStatus.h)
- класса CTradeUpdate за исключением реализации CTradeUpdateDBInterface, предоставленной Организатором (см. EGenSourceFile, называющийся TxnHarnessTradeUpdate.h)
A.13 Реализация функционала
Нижеследующая диаграмма предоставляет высокоуровневый обзор примера реализации среды TPC-E. Для ясности некоторым количеством деталей пренебрегли

Рисунок A.b – Высокоуровневый обзор примера реализации
- «линии» со стрелками, построенные точками, проведенные между объектами, предоставленными TPC, отображают входные параметры
- «линии» без стрелок, построенные точками, проведенные между объектами, предоставленными TPC, отображают входные файлы для EGenInputFiles
- Сплошные «линии» со стрелками являются вызовами
1. Организатор теста должен реализовать Эмулятор клиента согласно написанному в Пункте 5.8.5 и Приложению A.8.1. Организатор теста должен реализовать Эмулятор клиента согласно написанному в Пункте 5.8.5 и Приложению A.8.
a. CInputFiles – это класс, предоставляемый как часть EGen, используемый для загрузки в память EGenInputFiles, используемых другими классами в EGen. Организатор теста ответственен за корректное создание экземпляра объекта CInputFile и передачу указателя на него в конструктор CCE. См. EGen/inc/InputFlatFilesStructure.h.
b. TParameterSettings – это структура, предоставленная TPC, которая может быть использована для изменения поведения EGenDriver. Использование этой структуры для прогона теста, соответствующего спецификации, не является необходимым; она предоставляется для облегчения проектирования и разработки. См. EGen/inc/DriverParamSettings.h.
c. CCESUTInterface – это предоставляемый TPC «чистый» виртуальный класс, который определяет интерфейс, используемый классом CCE. В обязанности Организатора входит создание субкласса CCESUTInterface и осуществление необходимой реализации. Эта реализация предназначена для отправки запросов Транзакций в SUT, измерения Времени отклика Транзакции и ведения журнала по всем необходимым данным. Указатель на организаторскую реализацию CCESUTInterface должен быть передан в конструктор CCE. См. EGen/inc/CESUTInterface.h.
d. CCE – это класс, предоставляемый TPC, который должен использоваться для реализации Эмулятора клиента. В обязанности Организатора входит предоставить указатели на объект CInputFile и объект CCESUTInterface во время построения объекта CCE. Процесс выполнения теста фактически зациклен вокруг вызова к CCE::DoTxn(). Когда вызывается DoTxn(), объект CCE определит, какую Транзакцию необходимо выполнить, создаст необходимые входные данные для Транзакции и передаст эти данные в организаторскую реализацию CCESUTInterface для исполнения. См. EGen/inc/CE.h.
2. Организатор теста ответственен за реализацию Эмулятора фондовой биржи согласно Пункту 5.8.6 Приложению A.10.
a. CSecurityFile – это класс, предоставляемый как часть EGen, используемый для загрузки EGen/flat_in/SecurityFile.txt в память. Организатор теста ответственен за создание экземпляра объекта CSecurityFile и передачу указателя на него в конструктор CMEE. См. EGen/inc/SecurityFile.h.
b. CMEESUTInterface – это предоставленный TPC «чистый» виртуальный класс который определяет интерфейс, используемый классом CMEE. В обязанности Организатора входит создание субкласса CMEESUTInterface и осуществление необходимой реализации. Эта реализация предназначена для отправки запросов Транзакций в SUT, измерения Времени отклика Транзакции и ведения журнала по всем необходимым данным. Указатель на организаторскую реализацию CMEESUTInterface должен быть передан в конструктор CMEE. См. EGen/inc/MEESUTInterface.h
c. CMEE – это класс, предоставленный TPC, который должен быть использован во время реализации Эмулятора фондовой биржи. В обязанности Организатора теста входит предоставление указателей на объект CSecurityFile и объект CMEESUTInterface во время построения объекта CMEE. Во время выполнения теста созданный Организатором Эмулятор фондовой биржи предназначен для приема запросов от реализованной Организатором функции SendToMarket, работающей на SUT и передача этих запросов в объект CMEE посредствоом SubmitTradeRequest(). Дополнительно реализованный Организатором Эмулятор фондовой биржи предназначен для поддержки работы таймера и вызова CMEE::GenerateTradeResult() по мере необходимости. См. EGen/inc/MEE.h.
3. Организатор теста обязан реализовать функционал в SUT для приема запросов Транзакций посредством сетевого подключения от реализованных Организатором CCESUTInterface и CMEESUTInterface. Необходимо отметить, что диаграмма изображает отдельные сетевые подключения для каждого типа Транзакций, но Организатор может реализовать использование одного подключения, способного обрабатывать любые/все типы Транзакций. После получения запроса Транзакции от Драйвера, код Организатора должен вызвать DoTxn() для соответствующего объекта EGenTxnHarness (3a). После возврата от обращения к DoTxn() код Организатора предназначен для отправки выходных данных Транзакций обратно на Драйвер.
См. EGen/inc/TxnHarnessBrokerVolume.h – TxnHarnessTradeUpdate.h.
В обязанности Организатора входит создание реализаций для следующих классов, используемых EGenTxnHarness.
- CBrokerVolumeDBInterface
- CCustomerPositionDBInterface
- CMarketFeedDBInterface
- CMarketWatchDBInterface
- CSecurityDetailDBInterface
- CTradeLookupDBInterface
- CTradeOrderDBInterface
- CTradeResultDBInterface
- CTradeStatusDBInterface
- CTradeUpdateDBInterface
- Эти классы предназначены для реализации Фреймов, вызываемых EGenTxnHarness.
4. CSendToMarketInterface это класс, предоставляемый TPC, который включает в себя «чистую» виртуальную функцию членов SendToMarket(). Организатор должен создать субкласс от CSendToMarketInterface и создать реализацию для SendToMarket(). Эта реализация предназначена для отправки торговых запросов в реализованный Организатором MEE, выполняемый на Драйвере. Указатель на реализованный организатором CSendToMarketInterface должен быть передан в конструктор для объектов EGenTxnHarness CTradeOrder и CMarketFeed
A.14 Интерфейсы, определенные TPC

ИТОГОВОЕ ИСПОЛНИТЕЛЬНОЕ ПОСТАНОВЛЕНИЕ
A.15 Пример макета

A.16 Пример итогового исполнительного постановления



