Приложение А. Руководство пользователя EGen   

   

Содержание:

A.1 Обзор


A.2 Директория EGen


A.3 EGenProjectFiles


A.4 EGenInputFiles


A.5 EGenSourceFiles

 
A.6 EGenLoader


A.7 EGenDriver


A.8 EGenLogger


A.9 Реализация CE с использованием EGenDriverCE

 
A.10 Реализация MEE с использование EGenDriverMEE


A.11 Реализация Генератора обслуживания данных с использованием EGenDriverDM


A.12 EGenTxnHarness


A.13 Реализация функционала


A.14 Интерфейсы, определенные TPC

А.15 Пример макета

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

A.1 Обзор

EGen – это пакет программного обеспечения, предоставленны TPC. Он создан для облегчения реализации TPC-E. В этом приложении предоставляется информацию о том, как Организатору теста следует использовать особенности и функционал EGen. Определения, описания, ограничения и правила, управляющие использованием EGen, приведены Пункте 5 .

Примечание: некоторые из нижеприведенных разделов подразумевают, что читатель обладает глубоким пониманием техник объектно-ориентированного проектирования и программирования с использованием стандарта ANSI C++.

A.2 Директория EGen
A.2.1 EGen располагается в пределах иерархии одной директории. Следующая диаграмма показывает общий вид иерархии директории EGen.


                                                      Рисунок A.a – Иерархия директории EGen

  •  bin – директория по умолчанию для файлов исполняемого двоичного кода
  •  flat_in - содержит однородные файлы входных данных
  •  flat_out - директория по умолчанию для однородных файлов выходных данных
  •  inc – содержит файлы заголовков
  •  inc/win – файлы заголовков, характерные для Windows
  •  lib – директория по умолчанию для файлов библиотек
  •  obj – директория по умолчанию для файлов объектов
  •  prj – содержит файлы проектов
  •  src – содержит файлы исходных кодов
  •  src/win – характерные для Windows файлы исходных кодов
A.3 EGenProjectFiles

A.3.1 EGenProjectFiles располагаются в директории EGen/prj. Эти файлы могут быть использованы для облегчения создания компонентов EGen в различных окружениях.
  •  Windows
                       Предоставляется набор файлов Visual Studio 2003. EGen.sln - это файл решения высшего уровня и привности все необходимые файлы .prj.
  •  U*x
                      Предоставляется make-файл для облегчения построения компонентов EGen с использованием утилиты make. Гарантирована работа данного make-файла с утилитой make GNU, но в случае других разновидностей make может понадобится некоторая правка makeфайла.

A.4 EGenInputFiles

A.4.1 EGenInputFiles располагаются в директории EGen/flat_in. Эти файлы являются текстовыми файлами, содержащими ряды данных, разделенных табуляцией. Эти файлы используются EGenLoader для создания данных с целью наполнения базы данных и компонентами EGenDriver для генерации корректных входных данных для Транзакций. Сгенерированные данные основаны на сведениях о содержимом входных файлов («сыром» материале) и общих факторах, влияющих на масштаб (Коэффициент масштабирования, Сконфигурированные Клиенты, Начальные дни торгов).

A.5 EGenSourceFiles

A.5.1 EGenSourceFiles располагаются в директориях EGen/inc, EGen/src и соответствующих поддиректориях.

A.5.2 EGenSourceFiles содержат предоставленный TPC исходный код в стандарте ANSI C++, предназначенный для использования в реализации, соотвествующей стандарту TPC-E. Его функционал предназначен для выполнения:
  •  Наполнение соответствующей стандарту TPC-E базы данных
  •  реализация окружения, соответствующего стандарту TPC-E

Этот функционал описан в последующих разделах.


A.6 EGenLoader

A.6.4 Первый вариант функционала загрузчика, предоставляемый EGenLoader, фактически не загружает базу данных напрямую, но вместо этого создает выходные однородные файлы. Для каждой ТРС-Е таблицы создается один текстовый файл. Эти файлы содержат ряды значений данных, в которых значения данных разделены символом «|». Для использования этого функционала определите обрабатываемую во время компиляции переменную COMPILE_FLAT_FILE_LOAD во время сборки EGenLoader и используйте ключ «-l FLAT» во время выполнения EGenLoader.
Этот вариант функционала загрузчика предназначен для работы инструментов массовой загрузки, которые наполняют базу данных содержимым набора однородных файлов. Ввиду различий в ожидаемом формате определенных типов данных, возможно конфигурирование EGenLoader посредством обрабатываемых во время компиляции переменных для изменения формата определенных типов данных в выходных однородных файлах. Типы данных, переменные, обрабатываемые во время компилирования, и возможные значения перечислены в нижеследующей таблице:

A.6.5 Второй вариант функционала загрузчика, предоставляемый EGenLoader, предназначен для прямой загрузки базы данных Microsoft SQL Server посредством интерфейса ODBC. Для использования этого функционала определите переменную, обрабатываемую во время компилирования, COMPILE_ODBC_LOAD во время сборки EGenLoader и используйте ключ -l ODBC» во время выполнения EGenLoader.


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 Пример итогового исполнительного постановления

Статья: Приложение А. Руководство пользователя EGen

Перейти на главную страницу компании "Софтпоинт"