Skip to content

Commit 010b9e5

Browse files
committed
use 1s for timeout middleware test
1 parent 6436fbb commit 010b9e5

File tree

2 files changed

+30
-28
lines changed

2 files changed

+30
-28
lines changed

lib/graphql/schema/timeout_middleware.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def initialize(max_seconds:, context_key: DEFAULT_CONTEXT_KEY, &block)
3333

3434
def call(parent_type, parent_object, field_definition, field_args, query_context, next_middleware)
3535
timeout_at = query_context[@context_key] ||= Time.now + @max_seconds
36+
3637
if timeout_at < Time.now
3738
on_timeout(parent_type, parent_object, field_definition, field_args, query_context)
3839
else

spec/graphql/schema/timeout_middleware_spec.rb

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
require "spec_helper"
22

33
describe GraphQL::Schema::TimeoutMiddleware do
4-
let(:max_seconds) { 2 }
5-
let(:timeout_middleware) { GraphQL::Schema::TimeoutMiddleware.new(max_seconds: 2) }
4+
let(:max_seconds) { 1 }
5+
let(:timeout_middleware) { GraphQL::Schema::TimeoutMiddleware.new(max_seconds: max_seconds) }
66
let(:timeout_schema) {
77

88
sleep_for_seconds_resolve = -> (obj, args, ctx) {
@@ -45,18 +45,18 @@
4545
describe "timeout part-way through" do
4646
let(:query_string) {%|
4747
{
48-
a: sleepFor(seconds: 0.7)
49-
b: sleepFor(seconds: 0.7)
50-
c: sleepFor(seconds: 0.7)
51-
d: sleepFor(seconds: 0.7)
52-
e: sleepFor(seconds: 0.7)
48+
a: sleepFor(seconds: 0.4)
49+
b: sleepFor(seconds: 0.4)
50+
c: sleepFor(seconds: 0.4)
51+
d: sleepFor(seconds: 0.4)
52+
e: sleepFor(seconds: 0.4)
5353
}
5454
|}
5555
it "returns a partial response and error messages" do
5656
expected_data = {
57-
"a"=>0.7,
58-
"b"=>0.7,
59-
"c"=>0.7,
57+
"a"=>0.4,
58+
"b"=>0.4,
59+
"c"=>0.4,
6060
"d"=>nil,
6161
"e"=>nil,
6262
}
@@ -79,11 +79,11 @@
7979
describe "timeout in nested fields" do
8080
let(:query_string) {%|
8181
{
82-
a: nestedSleep(seconds: 1) {
82+
a: nestedSleep(seconds: 0.3) {
8383
seconds
84-
b: nestedSleep(seconds: 0.4) {
84+
b: nestedSleep(seconds: 0.3) {
8585
seconds
86-
c: nestedSleep(seconds: 0.4) {
86+
c: nestedSleep(seconds: 0.3) {
8787
seconds
8888
d: nestedSleep(seconds: 0.4) {
8989
seconds
@@ -96,14 +96,15 @@
9696
}
9797
}
9898
|}
99+
99100
it "returns a partial response and error messages" do
100101
expected_data = {
101102
"a" => {
102-
"seconds" => 1.0,
103+
"seconds" => 0.3,
103104
"b" => {
104-
"seconds" => 0.4,
105+
"seconds" => 0.3,
105106
"c" => {
106-
"seconds"=>0.4,
107+
"seconds"=>0.3,
107108
"d" => {
108109
"seconds"=>nil,
109110
"e"=>nil
@@ -131,17 +132,17 @@
131132
describe "long-running fields" do
132133
let(:query_string) {%|
133134
{
134-
a: sleepFor(seconds: 0.7)
135-
b: sleepFor(seconds: 0.7)
136-
c: sleepFor(seconds: 1.5)
135+
a: sleepFor(seconds: 0.2)
136+
b: sleepFor(seconds: 0.2)
137+
c: sleepFor(seconds: 0.8)
137138
d: sleepFor(seconds: 0.1)
138139
}
139140
|}
140141
it "doesn't terminate long-running field execution" do
141142
expected_data = {
142-
"a"=>0.7,
143-
"b"=>0.7,
144-
"c"=>1.5,
143+
"a"=>0.2,
144+
"b"=>0.2,
145+
"c"=>0.8,
145146
"d"=>nil,
146147
}
147148

@@ -159,17 +160,17 @@
159160

160161
describe "with a custom block" do
161162
let(:timeout_middleware) {
162-
GraphQL::Schema::TimeoutMiddleware.new(max_seconds: 2) do |err, query|
163+
GraphQL::Schema::TimeoutMiddleware.new(max_seconds: max_seconds) do |err, query|
163164
raise("Query timed out after 2s: #{query.class.name}")
164165
end
165166
}
166167
let(:query_string) {%|
167168
{
168-
a: sleepFor(seconds: 0.7)
169-
b: sleepFor(seconds: 0.7)
170-
c: sleepFor(seconds: 0.7)
171-
d: sleepFor(seconds: 0.7)
172-
e: sleepFor(seconds: 0.7)
169+
a: sleepFor(seconds: 0.4)
170+
b: sleepFor(seconds: 0.4)
171+
c: sleepFor(seconds: 0.4)
172+
d: sleepFor(seconds: 0.4)
173+
e: sleepFor(seconds: 0.4)
173174
}
174175
|}
175176

0 commit comments

Comments
 (0)