@@ -210,6 +210,43 @@ func TestOverridesPriority(t *testing.T) {
210
210
assert .Equal (t , parsedURL , subgraphs [0 ].Url )
211
211
}
212
212
213
+ func TestTrafficShapingRules (t * testing.T ) {
214
+ allRequestTimeout := 10 * time .Second
215
+ allDialTimeout := 0 * time .Second
216
+ subgraphRequestTimeout := 15 * time .Second
217
+ subgraphDialTimeout := 0 * time .Second
218
+
219
+ defaults := DefaultTransportRequestOptions ()
220
+
221
+ config := config.TrafficShapingRules {
222
+ All : config.GlobalSubgraphRequestRule {
223
+ RequestTimeout : & allRequestTimeout ,
224
+ DialTimeout : & allDialTimeout ,
225
+ },
226
+ Subgraphs : map [string ]* config.GlobalSubgraphRequestRule {
227
+ "some-subgraph" : {
228
+ RequestTimeout : & subgraphRequestTimeout ,
229
+ DialTimeout : & subgraphDialTimeout ,
230
+ },
231
+ },
232
+ }
233
+
234
+ options := []Option {
235
+ WithSubgraphTransportOptions (NewSubgraphTransportOptions (config )),
236
+ }
237
+ router , err := NewRouter (options ... )
238
+ assert .Nil (t , err )
239
+
240
+ // Assert that configs are loaded for real, zero and absent values.
241
+ assert .Equal (t , allRequestTimeout , router .subgraphTransportOptions .RequestTimeout )
242
+ assert .Equal (t , allDialTimeout , router .subgraphTransportOptions .DialTimeout )
243
+ assert .Equal (t , defaults .MaxIdleConns , router .subgraphTransportOptions .MaxIdleConns )
244
+
245
+ assert .Equal (t , subgraphRequestTimeout , router .subgraphTransportOptions .SubgraphMap ["some-subgraph" ].RequestTimeout )
246
+ assert .Equal (t , subgraphDialTimeout , router .subgraphTransportOptions .SubgraphMap ["some-subgraph" ].DialTimeout )
247
+ assert .Equal (t , defaults .MaxIdleConns , router .subgraphTransportOptions .SubgraphMap ["some-subgraph" ].MaxIdleConns )
248
+ }
249
+
213
250
// Confirms that defaults and fallthrough works properly
214
251
func TestNewTransportRequestOptions (t * testing.T ) {
215
252
defaults := DefaultTransportRequestOptions ()
0 commit comments