Въведение:Този пример демонстрирапо-стар метод за използване на IRI RowGen за генериране и попълване на големи или сложни колекции прототипи за тестване или капацитет на системата с помощта на плоски файлове. Както ще прочетете, RowGen ще създаде необходимите тестови данни и ще създаде CSV файл, който ще бъде зареден в MongoDB с помощта на помощната програма за импортиране на Mongo.
Актуализация за 2019 г.:IRI вече също предлага JSON и директна поддръжка на драйвери за преместване на данни между MongoDB колекции и SortCL-съвместими IRI софтуерни продукти като RowGen или FieldShield. Това означава, че можете да използвате RowGen за генериране на тестови JSON файлове за импортиране в MongoDB (не за разлика от метода, показан по-долу в тази статия), или да използвате FieldShield за маскиране на данни в таблици Mongo в тестови цели.
Обърнете внимание, че както FieldShield, така и RowGen са включени в платформата за управление на данни IRI Voracity, която предлага четири начина за създаване на тестови данни.
Въпреки че MongoDB е фина кросплатформена, ориентирана към документи NoSQL база данни, тя няма удобен начин за генериране и попълване на големи или сложни прототипи за колекция които могат да се използват за тестване на заявки или планиране на капацитет. Тази статия обяснява как да създадете тестови данни, които MongoDB може да използва чрез IRI RowGen, уточвайки параметрите за синтетичен, но реалистичен CSV файл, който MongoDB може да импортира за функционално тестване и тестване на производителността.
Първо трябва да разгледате структурата и съдържанието на тестовите данни за нуждите на вашата колекция (таблица MongoDB). Вижте тази статия за типични съображения за планиране.
В примера знаем, че нашата колекция ще се състои от клиенти, които всички имат Потребителски имена , Име и фамилия , Имейл адреси и Номера на кредитни карти .
За да създадем нашите тестови данни, първо трябва да генерираме някои наборни файлове. Файлът с набор е списък с една или повече стойности, разделени с табулатори, които може да съществуват или трябва да бъдат генерирани ръчно или автоматично от колоните на базата данни чрез съветника „Генериране на нов файл за набор“ в IRI RowGen.
Генериране на имена
1) Създайте сложна стойност на данни (има и фамилия комбинирани) скрипт за задание на име „CreateNamesSet.rcl“, който RowGen може да изпълни, за да създаде файл с набор; извикайте изхода „User.set“, защото тези имена също ще бъдат използвани като основа за нашите потребителски имена.
2) Създайте три полета, които да се генерират в Names.set:фамилно име, разделител на табулатори и собствено име. Наименувайте първото поле „LastName“ и изберете метода, който ще избере стойности от предоставен от IRI файл с набор, наречен „names_last.set“. Добавете литералната стойност „\t“, за да добавите разделител на табулатори, и след това повторете процеса, използван за стойностите LastName и FirstName, като използвате names_first.set.
3) Изпълнете CreateNamesSet.rcl с RowGen, или в командния ред, или от GUI на IRI Workbench, за да създадете разделения с табулатори User.set файла с имена и фамилни имена, които ще се използват в както генерирането на потребителски имена, така и в окончателната компилация на тестов файл, който попълва нашата колекция от прототипи.
Генериране на потребителски имена
За потребителски имена ще създадем файл с набор, който използва генерирания по-горе файл Users.set. Потребителските имена за този пример ще комбинират фамилно име, първи инициал и произволно генерирано число между 100 и 999.
1) Създайте нов скрипт за работа на RowGen със съветника за съставни данни, наречете го „CreateUsernamesSet.rcl“ и наименувайте файла с изходния набор „Usernames.set“.
2) Създайте съставни стойности на потребителско име с три компонента с имена Част 1, Част 2 и Част 3.
3) За част 1 изберете метода, който избира стойности от (прегледайте) по-рано генерирания файл User.set и посочете „ВСИЧКИ“ за типа избор, за да поддържате връзката между потребителите, потребителски имена и имейл адреси. Задайте размера на 5.
4) За част 2 повторете процеса, използван за част 1, с изключение на тип селекция, изберете „Ред“ и задайте индекс на колона на 2. Задайте размера на 1. Това гарантира, че всички фамилни имена ще бъдат използвани в поколението и че първата буква от първото име в същия ред е добавена към потребителското име.
5) За част 3 посочете генерирането на числова стойност между 100 и 999, за да добавите суфикс на произволно цяло число към всяко потребителско име.
При изпълнение на CreateUsernamesSet.rcl виждаме, че всяко потребителско име съдържа първите пет букви от фамилното им име, след това първия им инициал, след това произволно 3-цифрено число:
Генериране на имейли
След това ще създадем файл с набор от имейли, който добавя стойностите на потребителското име с произволно избрани имена на домейни. Тъй като някои имейл услуги са по-популярни от други, ние също ще създадем система за претегляне, която да отразява по-висока честота на yahoo и gmail домейни.
1) Стартирайте съветника за задание „Нови персонализирани тестови данни“ на RowGen, за да създадете задание, наречено „CreateEmailsSet“, което създава наборен файл, наречен „Emails.set“.
2) Създайте частта с потребителското име от имейла. В диалоговия прозорец Дефиниране на тестови данни щракнете върху Ново поле и преименувайте първото поле Потребителски имена. Щракнете двукратно върху него, за да стартирате диалоговия прозорец Generation Field и „Define…“ неговия Set файл като Usernames.set. Задайте размера на 9 и щракнете върху OK.
3) Създайте частта за домейна на имейла (която включва символа @). В диалоговия прозорец „Полета на оформление“ щракнете върху Ново поле и го преименувайте на „адрес“ и щракнете двукратно върху него. В диалоговия прозорец „Поле за генериране“ посочете „ ,“ с позиция 10 и размер 20. В секцията Генериране на данни / Разпределение на данни по-долу щракнете върху „Дефиниране…“, за да наименувате ново разпределение на данни на елементи „WeightedEmails“.
4) В съветника за ново разпространение изберете „Претеглено разпределение на елементите“ и въведете тези елементи съответно в текстовите полета за съотношение и букви, след което добавете всеки към списъка.
(32 | @gmail.com), (32 | @yahoo.com), (2 | @ibm.com), (4 | @msn.com), (2 | @ymail.com), (2 | @inmail.com), (2 | @cnet.net), (2 | @chase.org), (1 | @iri.com), (1 | @gdic.com), (1 | @aci.com), (2 | @oracle.net), (1 | @gmx.org), (4 | @aol.com), (2 | @inbox.com), (2 | @hushmail.com), (2 | @outlook.com), (2 | @zoho.com), (2 | @yandex.net), (2 | @mail.com)
След като въведете тези стойности, щракнете върху Напред в оригиналния съветник, за да се преместите в диалоговия прозорец „Цели за данни“. Използвайте „Add Data Target…“, за да посочите изходния файл „Email.set“. Това също ще се използва по време на изграждане на колекция.
Имейлът, за който сме задали най-високите тежести (gmail и yahoo), се показва най-често, като други се появяват периодично.
Генериране на номера на кредитни карти
Накрая ще създадем компютърно валидни номера на карти във формата XXXX-XXXX-XXXX-XXXX. Първите четири цифри отразяват действителните идентификационни номера на издаване (IIN) на различни компании за кредитни карти, а последната цифра потвърждава автентичността на картите.
За да направите това, създайте и стартирайте нова (празна) задача. Наречете го „CreateCCNSet.rcl“ (или .scl) и го попълнете със скрипта по-долу, за да създадете „CCN.set“. Стойността /INCOLLECT в скриптовете на RowGen определя броя на генерираните редове.
Специално изградената функция за генериране на CCN на RowGen, ccn_gen(„ANY, „-“) се извиква, за да попълни това поле. Имайте предвид, че подобни функции съществуват за номера на социално осигуряване в САЩ и Корея и националните идентификационни номера на Италия и Холандия.
Създаване на окончателния тест файл
С изградени всички зададени файлове е време да ги използваме в тестовия CSV файл, който ще създадем и експортираме в колекция MongoDB.
1) Стартирайте съветника за задание „Нови персонализирани тестови данни“ на RowGen, за да създадете задание, наречено „CreateMongoUserData.rcl“, което ще генерира Customers.csv файла, файла, който след това ще експортираме в MongoDB.
2) Щракнете върху „Полета на оформление…“, за да влезете в диалоговия прозорец „Полета на оформление“. Щракнете върху Ново поле и преименувайте първото поле на Потребителски имена. Щракнете двукратно върху него, за да стартирате диалоговия прозорец Generation Field и “Define…” неговия Set файл като Usernames.set; след това изберете ВСИЧКИ за неговия тип избор.
3) Щракнете върху Ново поле и преименувайте второто поле на LastNames. Щракнете двукратно върху него, за да стартирате диалоговия прозорец Generation Field и “Define…” неговия Set файл като Users.set; след това изберете ВСИЧКИ за неговия тип избор.
4) Щракнете върху Ново поле и преименувайте третото поле на FirstNames. Щракнете двукратно върху него, за да стартирате диалоговия прозорец Generation Field и “Define…” неговия Set файл като Users.set; след това изберете ROWS за неговия тип избор и задайте индекса на колоната на 2.
5) Щракнете върху Ново поле и преименувайте четвъртото поле на Имейл. Щракнете двукратно върху него, за да стартирате диалоговия прозорец Generation Field и “Define…” неговия Set файл като Emails.set; след това изберете ВСИЧКИ за неговия тип избор.
6) Щракнете върху Ново поле и преименувайте петото поле на CreditCardNumbers. Щракнете двукратно върху него, за да стартирате диалоговия прозорец Generation Field и “Define…” неговия Set файл като CCN.set; след това изберете ВСИЧКИ за неговия тип избор.
7) След като въведете тези стойности, щракнете върху Напред в оригиналния съветник, за да се преместите в диалоговия прозорец Целеви данни. Използвайте „Add Data Target…“, за да посочите изходния файл Customers.csv; след това изпълнете скрипта в Workbench или в командния ред, за да генерирате този файл:
rowgen /spec=CreateMongoUserData.rcl
Обърнете внимание, че RowGen, в допълнение към създаването на този CSV файл по време на изпълнение, би могъл също да създаде множество други файлове, база данни, форматиран отчет, named-pipe, процедурен и дори BIRT дисплей в реално време , с полета от генерираните тестови данни, всички по едно и също време.
Импортиране в MongoDB
За да импортирате CSV файла във вашата база данни Mongo, извикайте „помощната програма mongoimport“ и изпълнете следната команда:
--db <Database Name> --collection <Collection Name> --type csv --fields <fieldname1,fieldname2,...> --file <File path to the CSV file to import>
Ето записите в тестовата колекция (показани с MongoVUE), които MongoDB автоматично ще индексира с генерирани стойности на ID за всеки запис:
MongoDB присвоява уникална стойност на идентификатора на всеки запис в колекцията.
Можете също да заредите тестови данни директно в базата данни Mongo, като използвате драйвера DataDirect ODBC на Progress Software за MongoDB. Преди да стартирам заданието RowGen в Workbench, имах празна колекция, наречена CUSTOMERS_CNN в MYDB, за да получа данните.
Първо изпълних заданието с помощта на stdout, за да прегледам тестовите си данни в прозореца на конзолата:
След като изпълних скрипта в Workbench, вече мога да виждам данните си с помощта на Data Source Explorer и DataDirect JDBC драйвера.
За повече информация относно наличните опции за генериране вижте Целеви за тестови файлове раздел на адрес: http://www.iri.com/products/rowgen/technical-details.