|
1 | 1 | require "spec_helper"
|
2 | 2 |
|
3 | 3 | 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) } |
6 | 6 | let(:timeout_schema) {
|
7 | 7 |
|
8 | 8 | sleep_for_seconds_resolve = -> (obj, args, ctx) {
|
|
45 | 45 | describe "timeout part-way through" do
|
46 | 46 | let(:query_string) {%|
|
47 | 47 | {
|
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) |
53 | 53 | }
|
54 | 54 | |}
|
55 | 55 | it "returns a partial response and error messages" do
|
56 | 56 | 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, |
60 | 60 | "d"=>nil,
|
61 | 61 | "e"=>nil,
|
62 | 62 | }
|
|
79 | 79 | describe "timeout in nested fields" do
|
80 | 80 | let(:query_string) {%|
|
81 | 81 | {
|
82 |
| - a: nestedSleep(seconds: 1) { |
| 82 | + a: nestedSleep(seconds: 0.3) { |
83 | 83 | seconds
|
84 |
| - b: nestedSleep(seconds: 0.4) { |
| 84 | + b: nestedSleep(seconds: 0.3) { |
85 | 85 | seconds
|
86 |
| - c: nestedSleep(seconds: 0.4) { |
| 86 | + c: nestedSleep(seconds: 0.3) { |
87 | 87 | seconds
|
88 | 88 | d: nestedSleep(seconds: 0.4) {
|
89 | 89 | seconds
|
|
96 | 96 | }
|
97 | 97 | }
|
98 | 98 | |}
|
| 99 | + |
99 | 100 | it "returns a partial response and error messages" do
|
100 | 101 | expected_data = {
|
101 | 102 | "a" => {
|
102 |
| - "seconds" => 1.0, |
| 103 | + "seconds" => 0.3, |
103 | 104 | "b" => {
|
104 |
| - "seconds" => 0.4, |
| 105 | + "seconds" => 0.3, |
105 | 106 | "c" => {
|
106 |
| - "seconds"=>0.4, |
| 107 | + "seconds"=>0.3, |
107 | 108 | "d" => {
|
108 | 109 | "seconds"=>nil,
|
109 | 110 | "e"=>nil
|
|
131 | 132 | describe "long-running fields" do
|
132 | 133 | let(:query_string) {%|
|
133 | 134 | {
|
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) |
137 | 138 | d: sleepFor(seconds: 0.1)
|
138 | 139 | }
|
139 | 140 | |}
|
140 | 141 | it "doesn't terminate long-running field execution" do
|
141 | 142 | 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, |
145 | 146 | "d"=>nil,
|
146 | 147 | }
|
147 | 148 |
|
|
159 | 160 |
|
160 | 161 | describe "with a custom block" do
|
161 | 162 | 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| |
163 | 164 | raise("Query timed out after 2s: #{query.class.name}")
|
164 | 165 | end
|
165 | 166 | }
|
166 | 167 | let(:query_string) {%|
|
167 | 168 | {
|
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) |
173 | 174 | }
|
174 | 175 | |}
|
175 | 176 |
|
|
0 commit comments