2016-11-23 91 views
0

我一直在編寫測試來驗證我的Java日誌流是BigQuery。我用dsunit(golang)使用jdsunit(dsunit的Java客戶端),但我有一個問題,因爲爲了驗證BiqQuery中的流數據,我必須指定唯一標識符,我的日誌沒有時間標記旁邊的唯一標識符(難以使用) 。測試Java客戶端的dsunit

如何用dsunit測試數據而沒有唯一字段?任何建議表示讚賞!

+1

請刪除您周圍的文字編碼格式。如果您將測試代碼與獨特的字段一起發佈,它也會有所幫助。 – kabanus

+0

這是我的datastore_init.json配置文件,其中包含唯一唯一列requestTimestamp(以毫秒爲單位)的表。 {「DatastoreConfigs」:[{「Datastore」:「MyDataStore」,「AdminDbName」:「MyDataStore」,「ClearDatastore」:true,「ConfigUrl」:「test://resources/bq/config/store.json」 ,「描述符」:[{「Table」:「LogHistory」,「PkColumns」:[「requestTimestamp」],「Columns」:[「eventId」,「param1」,「param2」,「requestTimestamp」], :「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 } 
]