summaryrefslogtreecommitdiff
path: root/storage/internal/test/conformance/retry_tests.json
blob: 09f384c5d69d91b71c03a60da4f5ae7850194a2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
{
  "retryTests": [
    {
      "id": 1,
      "description": "always_idempotent",
      "cases": [
        {
          "instructions": ["return-503", "return-503"]
        },
        {
          "instructions": ["return-reset-connection", "return-reset-connection"]
        },
        {
          "instructions": ["return-reset-connection", "return-503"]
        }
      ],
      "methods": [
        {"name": "storage.bucket_acl.get",                "resources": ["BUCKET"]},
        {"name": "storage.bucket_acl.list",               "resources": ["BUCKET"]},
        {"name": "storage.buckets.delete",                "resources": ["BUCKET"]},
        {"name": "storage.buckets.get",                   "resources": ["BUCKET"]},
        {"name": "storage.buckets.getIamPolicy",          "resources": ["BUCKET"]},
        {"name": "storage.buckets.insert",                "resources": []},
        {"name": "storage.buckets.list",                  "resources": ["BUCKET"]},
        {"name": "storage.buckets.lockRetentionPolicy",   "resources": ["BUCKET"]},
        {"name": "storage.buckets.testIamPermissions",    "resources": ["BUCKET"]},
        {"name": "storage.default_object_acl.get",        "resources": ["BUCKET"]},
        {"name": "storage.default_object_acl.list",       "resources": ["BUCKET"]},
        {"name": "storage.hmacKey.delete",                "resources": ["HMAC_KEY"]},
        {"name": "storage.hmacKey.get",                   "resources": ["HMAC_KEY"]},
        {"name": "storage.hmacKey.list",                  "resources": ["HMAC_KEY"]},
        {"name": "storage.notifications.delete",          "resources": ["BUCKET", "NOTIFICATION"]},
        {"name": "storage.notifications.get",             "resources": ["BUCKET", "NOTIFICATION"]},
        {"name": "storage.notifications.list",            "resources": ["BUCKET", "NOTIFICATION"]},
        {"name": "storage.object_acl.get",                "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.object_acl.list",               "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.get",                   "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.list",                  "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.serviceaccount.get",            "resources": []}
      ],
      "preconditionProvided": false,
      "expectSuccess": true
    },
    {
      "id": 2,
      "description": "conditionally_idempotent_retries_when_precondition_is_present",
      "cases": [
        {
          "instructions": ["return-503", "return-503"]
        },
        {
          "instructions": ["return-reset-connection", "return-reset-connection"]
        },
        {
          "instructions": ["return-reset-connection", "return-503"]
        }
      ],
      "methods": [
        {"name": "storage.buckets.patch",         "resources": ["BUCKET"]},
        {"name": "storage.buckets.setIamPolicy",  "resources": ["BUCKET"]},
        {"name": "storage.buckets.update",        "resources": ["BUCKET"]},
        {"name": "storage.hmacKey.update",        "resources": ["HMAC_KEY"]},
        {"name": "storage.objects.compose",       "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.copy",          "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.delete",        "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.insert",        "resources": ["BUCKET"]},
        {"name": "storage.objects.patch",         "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.rewrite",       "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.update",        "resources": ["BUCKET", "OBJECT"]}
      ],
      "preconditionProvided": true,
      "expectSuccess": true
    },
    {
      "id": 3,
      "description": "conditionally_idempotent_no_retries_when_precondition_is_absent",
      "cases": [
        {
          "instructions": ["return-503"]
        },
        {
          "instructions": ["return-reset-connection"]
        }
      ],
      "methods": [
        {"name": "storage.buckets.patch",         "resources": ["BUCKET"]},
        {"name": "storage.buckets.setIamPolicy",  "resources": ["BUCKET"]},
        {"name": "storage.buckets.update",        "resources": ["BUCKET"]},
        {"name": "storage.hmacKey.update",        "resources": ["HMAC_KEY"]},
        {"name": "storage.objects.compose",       "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.copy",          "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.delete",        "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.insert",        "resources": ["BUCKET"]},
        {"name": "storage.objects.patch",         "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.rewrite",       "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.update",        "resources": ["BUCKET", "OBJECT"]}
      ],
      "preconditionProvided": false,
      "expectSuccess": false
    },
    {
      "id": 4,
      "description": "non_idempotent",
      "cases": [
        {
          "instructions": ["return-503"]
        },
        {
          "instructions": ["return-reset-connection"]
        }
      ],
      "methods": [
        {"name": "storage.bucket_acl.delete",             "resources": ["BUCKET"]},
        {"name": "storage.bucket_acl.insert",             "resources": ["BUCKET"]},
        {"name": "storage.bucket_acl.patch",              "resources": ["BUCKET"]},
        {"name": "storage.bucket_acl.update",             "resources": ["BUCKET"]},
        {"name": "storage.default_object_acl.delete",     "resources": ["BUCKET"]},
        {"name": "storage.default_object_acl.insert",     "resources": ["BUCKET"]},
        {"name": "storage.default_object_acl.patch",      "resources": ["BUCKET"]},
        {"name": "storage.default_object_acl.update",     "resources": ["BUCKET"]},
        {"name": "storage.hmacKey.create",                "resources": []},
        {"name": "storage.notifications.insert",          "resources": ["BUCKET"]},
        {"name": "storage.object_acl.delete",             "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.object_acl.insert",             "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.object_acl.patch",              "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.object_acl.update",             "resources": ["BUCKET", "OBJECT"]}
      ],
      "preconditionProvided": false,
      "expectSuccess": false
    },
    {
      "id": 5,
      "description": "non-retryable errors",
      "cases": [
        {
          "instructions": ["return-400"]
        },
        {
          "instructions": ["return-401"]
        }
      ],
      "methods": [
        {"name": "storage.bucket_acl.delete",             "resources": ["BUCKET"]},
        {"name": "storage.bucket_acl.get",                "resources": ["BUCKET"]},
        {"name": "storage.bucket_acl.insert",             "resources": ["BUCKET"]},
        {"name": "storage.bucket_acl.list",               "resources": ["BUCKET"]},
        {"name": "storage.bucket_acl.patch",              "resources": ["BUCKET"]},
        {"name": "storage.bucket_acl.update",             "resources": ["BUCKET"]},
        {"name": "storage.buckets.delete",                "resources": ["BUCKET"]},
        {"name": "storage.buckets.get",                   "resources": ["BUCKET"]},
        {"name": "storage.buckets.getIamPolicy",          "resources": ["BUCKET"]},
        {"name": "storage.buckets.insert",                "resources": ["BUCKET"]},
        {"name": "storage.buckets.list",                  "resources": ["BUCKET"]},
        {"name": "storage.buckets.lockRetentionPolicy",   "resources": ["BUCKET"]},
        {"name": "storage.buckets.patch",                 "resources": ["BUCKET"]},
        {"name": "storage.buckets.setIamPolicy",          "resources": ["BUCKET"]},
        {"name": "storage.buckets.testIamPermissions",    "resources": ["BUCKET"]},
        {"name": "storage.buckets.update",                "resources": ["BUCKET"]},
        {"name": "storage.default_object_acl.delete",     "resources": ["BUCKET"]},
        {"name": "storage.default_object_acl.get",        "resources": ["BUCKET"]},
        {"name": "storage.default_object_acl.insert",     "resources": ["BUCKET"]},
        {"name": "storage.default_object_acl.list",       "resources": ["BUCKET"]},
        {"name": "storage.default_object_acl.patch",      "resources": ["BUCKET"]},
        {"name": "storage.default_object_acl.update",     "resources": ["BUCKET"]},
        {"name": "storage.hmacKey.create",                "resources": []},
        {"name": "storage.hmacKey.delete",                "resources": ["HMAC_KEY"]},
        {"name": "storage.hmacKey.get",                   "resources": ["HMAC_KEY"]},
        {"name": "storage.hmacKey.list",                  "resources": ["HMAC_KEY"]},
        {"name": "storage.hmacKey.update",                "resources": ["HMAC_KEY"]},
        {"name": "storage.notifications.delete",          "resources": ["BUCKET", "NOTIFICATION"]},
        {"name": "storage.notifications.get",             "resources": ["BUCKET", "NOTIFICATION"]},
        {"name": "storage.notifications.insert",          "resources": ["BUCKET", "NOTIFICATION"]},
        {"name": "storage.notifications.list",            "resources": ["BUCKET", "NOTIFICATION"]},
        {"name": "storage.object_acl.delete",             "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.object_acl.get",                "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.object_acl.insert",             "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.object_acl.list",               "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.object_acl.patch",              "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.object_acl.update",             "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.compose",               "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.copy",                  "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.delete",                "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.get",                   "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.insert",                "resources": ["BUCKET"]},
        {"name": "storage.objects.list",                  "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.patch",                 "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.rewrite",               "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.objects.update",                "resources": ["BUCKET", "OBJECT"]},
        {"name": "storage.serviceaccount.get",            "resources": []}
      ],
      "preconditionProvided": false,
      "expectSuccess": false
    }
  ]
}