@@ -30,6 +30,7 @@ g.cluster = cartridge_helpers.Cluster:new({
30
30
roles = { ' vshard-storage' },
31
31
servers = {
32
32
{ instance_uuid = cartridge_helpers .uuid (' b' , 1 ), },
33
+ { instance_uuid = cartridge_helpers .uuid (' b' , 2 ), },
33
34
},
34
35
},
35
36
},
@@ -167,3 +168,62 @@ g.test_reload = function()
167
168
end
168
169
end
169
170
171
+ -- https://github.com/tarantool/migrations/issues/56
172
+ g .test_up_on_replica = function ()
173
+ for _ , server in pairs (g .cluster .servers ) do
174
+ server .net_box :eval ([[
175
+ require('migrator').set_loader(
176
+ require('migrator.config-loader').new()
177
+ )
178
+ ]] )
179
+ end
180
+
181
+ -- create some space
182
+ g .cluster .main_server :http_request (' post' , ' /migrations/up' , { json = {} })
183
+ utils .set_sections (g , { { filename = " migrations/source/100_create_space.lua" , content = [[
184
+ return {
185
+ up = function()
186
+ local f = box.schema.create_space('somespace', {
187
+ format = {
188
+ { name = 'key', type = 'string' },
189
+ { name = 'value', type = 'string', is_nullable = true }
190
+ },
191
+ if_not_exists = true,
192
+ })
193
+ f:create_index('primary', {
194
+ parts = { 'key' },
195
+ if_not_exists = true,
196
+ })
197
+ end
198
+ }
199
+ ]] } })
200
+ g .cluster .main_server :http_request (' post' , ' /migrations/up' , { json = {} })
201
+
202
+ fiber .sleep (0.5 )
203
+
204
+ -- inject schema replication delay
205
+ g .cluster :server (' storage-1-2' ).net_box :eval ([[
206
+ box.space._space:before_replace(function(old, new) os.execute('sleep 0.5'); return new end)
207
+ ]] )
208
+
209
+ -- change space format to make ddl schema incompatible
210
+ utils .set_sections (g , { { filename = " migrations/source/101_alter_space.lua" , content = [[
211
+ return {
212
+ up = function()
213
+ box.space.somespace:format({
214
+ { name = 'key', type = 'string' },
215
+ { name = 'value', type = 'string', is_nullable = true },
216
+ { name = 'secondvalue', type = 'string', is_nullable = true }
217
+ })
218
+ end
219
+ }
220
+ ]] } })
221
+ g .cluster :server (' storage-1-2' ):http_request (' post' , ' /migrations/up' , { json = {} })
222
+ end
223
+
224
+ g .after_each (function ()
225
+ g .cluster :server (' storage-1-2' ).net_box :eval ([[
226
+ local f = box.space._space:before_replace()
227
+ box.space._space:before_replace(nil, f[1])
228
+ ]] )
229
+ end )
0 commit comments