@@ -205,6 +205,103 @@ func TestQueryResource_Advanced(t *testing.T) {
205205 testSerde (t , & res )
206206}
207207
208+ func TestQueryBatch_QuerySuccess (t * testing.T ) {
209+ client := startTest (t )
210+ query1 , query2 := query , query + " | take 2"
211+ timespan := azlogs .NewTimeInterval (time .Date (2022 , 3 , 2 , 0 , 0 , 0 , 0 , time .UTC ), time .Date (2022 , 3 , 3 , 0 , 0 , 0 , 0 , time .UTC ))
212+
213+ batchRequest := azlogs.BatchRequest {[]azlogs.BatchQueryRequest {
214+ {Body : & azlogs.QueryBody {Query : to .Ptr (query1 ), Timespan : to .Ptr (timespan )}, ID : to .Ptr ("1" ), WorkspaceID : to .Ptr (workspaceID )},
215+ {Body : & azlogs.QueryBody {Query : to .Ptr (query2 ), Timespan : to .Ptr (timespan )}, ID : to .Ptr ("2" ), WorkspaceID : to .Ptr (workspaceID )},
216+ }}
217+ testSerde (t , & batchRequest )
218+
219+ res , err := client .QueryBatch (context .Background (), batchRequest , nil )
220+ require .NoError (t , err )
221+ require .Len (t , res .Responses , 2 )
222+ for _ , resp := range res .Responses {
223+ require .Nil (t , resp .Body .Error )
224+ require .NotNil (t , resp .Body .Tables )
225+ if * resp .ID == "1" && len (resp .Body .Tables [0 ].Rows ) != 100 {
226+ t .Fatal ("expected 100 rows from batch request 1" )
227+ }
228+ if * resp .ID == "2" && len (resp .Body .Tables [0 ].Rows ) != 2 {
229+ t .Fatal ("expected 2 rows from batch request 2" )
230+ }
231+ }
232+ testSerde (t , & res )
233+ }
234+
235+ func TestQueryBatch_BasicQueryFailure (t * testing.T ) {
236+ client := startTest (t )
237+
238+ batchRequest := azlogs.BatchRequest {[]azlogs.BatchQueryRequest {
239+ {Body : & azlogs.QueryBody {Query : to .Ptr (query )}, ID : to .Ptr ("1" ), WorkspaceID : to .Ptr (workspaceID )},
240+ {Body : & azlogs.QueryBody {Query : to .Ptr (query )}, ID : to .Ptr ("1" ), WorkspaceID : to .Ptr (workspaceID )},
241+ }}
242+ testSerde (t , & batchRequest )
243+
244+ res , err := client .QueryBatch (context .Background (), batchRequest , nil )
245+ require .Error (t , err )
246+ require .Nil (t , res .Responses )
247+
248+ var httpErr * azcore.ResponseError
249+ require .ErrorAs (t , err , & httpErr )
250+ require .Equal (t , httpErr .ErrorCode , "BadArgumentError" )
251+ require .Equal (t , httpErr .StatusCode , 400 )
252+ }
253+
254+ func TestQueryBatch_AdvancedQuerySuccess (t * testing.T ) {
255+ client := startTest (t )
256+ timespan := azlogs .NewTimeInterval (time .Date (2022 , 12 , 25 , 0 , 0 , 0 , 0 , time .UTC ), time .Date (2022 , 12 , 25 , 12 , 0 , 0 , 0 , time .UTC ))
257+ batchPrefer1 := "wait=600,include-statistics=true,include-render=true"
258+ headers1 := map [string ]* string {"prefer" : & batchPrefer1 }
259+ batchPrefer2 := "wait=180,include-statistics=true,include-render=true"
260+ headers2 := map [string ]* string {"prefer" : & batchPrefer2 }
261+
262+ batchRequestAdvanced := azlogs.BatchRequest {[]azlogs.BatchQueryRequest {
263+ {Body : & azlogs.QueryBody {Query : to .Ptr (query ), Timespan : to .Ptr (timespan )}, ID : to .Ptr ("1" ), WorkspaceID : to .Ptr (workspaceID2 ), Headers : headers1 },
264+ {Body : & azlogs.QueryBody {Query : to .Ptr (query ), Timespan : to .Ptr (timespan )}, ID : to .Ptr ("2" ), WorkspaceID : to .Ptr (workspaceID2 ), Headers : headers2 },
265+ }}
266+ testSerde (t , & batchRequestAdvanced )
267+
268+ res , err := client .QueryBatch (context .Background (), batchRequestAdvanced , nil )
269+ require .NoError (t , err )
270+ require .Len (t , res .Responses , 2 )
271+ for _ , resp := range res .Responses {
272+ require .Nil (t , resp .Body .Error )
273+ require .NotNil (t , resp .Body .Tables )
274+ require .NotNil (t , resp .Body .Visualization )
275+ require .NotNil (t , resp .Body .Statistics )
276+ require .Len (t , resp .Body .Tables [0 ].Rows , 100 )
277+ }
278+ testSerde (t , & res )
279+ }
280+
281+ func TestQueryBatch_PartialError (t * testing.T ) {
282+ client := startTest (t )
283+
284+ batchRequest := azlogs.BatchRequest {[]azlogs.BatchQueryRequest {
285+ {Body : & azlogs.QueryBody {Query : to .Ptr ("not a valid query" )}, ID : to .Ptr ("1" ), WorkspaceID : to .Ptr (workspaceID )},
286+ {Body : & azlogs.QueryBody {Query : to .Ptr (query )}, ID : to .Ptr ("2" ), WorkspaceID : to .Ptr (workspaceID )},
287+ }}
288+
289+ res , err := client .QueryBatch (context .Background (), batchRequest , nil )
290+ require .NoError (t , err )
291+ require .Len (t , res .Responses , 2 )
292+ for _ , resp := range res .Responses {
293+ if * resp .ID == "1" {
294+ require .NotNil (t , resp .Body .Error )
295+ require .Equal (t , resp .Body .Error .Code , "BadArgumentError" )
296+ require .Contains (t , resp .Body .Error .Error (), "BadArgumentError" )
297+ }
298+ if * resp .ID == "2" {
299+ require .Nil (t , resp .Body .Error )
300+ require .Len (t , resp .Body .Tables [0 ].Rows , 100 )
301+ }
302+ }
303+ }
304+
208305func TestTimeInterval (t * testing.T ) {
209306 timespan := azlogs .NewTimeInterval (time .Date (2022 , 3 , 2 , 1 , 2 , 3 , 0 , time .UTC ), time .Date (2022 , 3 , 3 , 0 , 0 , 0 , 0 , time .UTC ))
210307 require .Equal (t , timespan , azlogs .TimeInterval ("2022-03-02T01:02:03Z/2022-03-03T00:00:00Z" ))
0 commit comments