2016-11-23 2 views
0

Я писал тесты для проверки моих журналов на Java, которые являются потоками в BigQuery. Я использую jdsunit (Java-клиент для dsunit) с dsunit (golang), но у меня есть проблема, так как для проверки данных потока в BiqQuery я должен указать уникальный идентификатор, у моих журналов нет уникального идентификатора рядом с timetamp (сложным в использовании) ,Тестирование Java-клиента для dsunit

Как проверить данные с помощью dsunit без уникального поля? Любые советы приветствуются!

+1

Пожалуйста, удалите формат кода вокруг текста. Также это поможет, если вы разместите свой тестовый код с уникальным полем. – kabanus

+0

Вот мой конфигурационный файл datastore_init.json с таблицей, содержащей единственный уникальный запрос columnTimestamp (в миллисекундах). { {"DatastoreConfigs": [{"Datastore": "MyDataStore", "AdminDbName": "MyDataStore", "ClearDatastore": true, "ConfigUrl": "test: //resources/bq/config/store.json" , «Дескрипторы»: [{«Таблица»: «LogHistory», «PkColumns»: [«requestTimestamp»], «Columns»: [«eventId», «param1», «param2», «requestTimestamp»], «FromQuery», : «SELECT eventId, param1, param2, param3, requestTimestamp FROM LogHistory»}]}]} – StackTest

ответ

0

В вашем тестовом примере я бы предположил, что журнал регистрирует записи последовательно, поэтому вы можете использовать положение порядка записей по метке времени. Если это так, пожалуйста, используйте следующий SQL в качестве источника FromQuery:

SELECT 
ROW_NUMBER() OVER() position, eventId, param1, param2, param3, requestTimestamp FROM LogHistory 
ORDER BY requestTimestamp 

в вашей проверке набора данных просто добавить положение, т.е.

[ 
    {"position":1, "eventId":123,"param1":"p1.1",....,"requestTimestamp":t1 }, 
    {"position":2, "eventId":123,"param1":"p1.2",....,"requestTimestamp":t2 } 
    {"position":3, "eventId":345,"param1":"p1.1",....,"requestTimestamp":t3 } 
] 
Смежные вопросы