Skip to content

Commit f7e0515

Browse files
committed
Merge pull request #9 from Shopify/check_listen_on_populate
Check upstream and listen when populating proxies
2 parents 0383587 + 3e24b7a commit f7e0515

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed

lib/toxiproxy.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,12 @@ def self.populate(*proxies)
8989
proxies = proxies.first if proxies.first.is_a?(Array)
9090

9191
proxies.map { |proxy|
92-
self.create(proxy) unless find_by_name(proxy[:name])
92+
existing = find_by_name(proxy[:name])
93+
if existing && (existing.upstream != proxy[:upstream] || existing.listen != proxy[:listen])
94+
existing.destroy
95+
existing = false
96+
end
97+
self.create(proxy) unless existing
9398
}.compact
9499
end
95100

test/toxiproxy_test.rb

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,53 @@ def test_populate_creates_proxies_args
303303
end
304304
end
305305

306+
def test_populate_creates_proxies_update_listen
307+
proxies = [{
308+
name: "test_toxiproxy_populate1",
309+
upstream: "localhost:3306",
310+
listen: "localhost:22222",
311+
},
312+
]
313+
314+
proxies = Toxiproxy.populate(proxies)
315+
316+
proxies = [{
317+
name: "test_toxiproxy_populate1",
318+
upstream: "localhost:3306",
319+
listen: "localhost:22223",
320+
},
321+
]
322+
323+
proxies = Toxiproxy.populate(proxies)
324+
325+
proxies.each do |proxy|
326+
assert_proxy_available(proxy)
327+
end
328+
end
329+
330+
def test_populate_creates_proxies_update_upstream
331+
proxies = [{
332+
name: "test_toxiproxy_populate1",
333+
upstream: "localhost:3306",
334+
listen: "localhost:22222",
335+
},
336+
]
337+
338+
proxies = Toxiproxy.populate(proxies)
339+
340+
proxies = [{
341+
name: "test_toxiproxy_populate1",
342+
upstream: "localhost:3307",
343+
listen: "localhost:22222",
344+
},
345+
]
346+
347+
proxies2 = Toxiproxy.populate(proxies)
348+
349+
assert_equal proxies.first[:upstream], proxies2.first.upstream
350+
assert_proxy_available(proxies2.first)
351+
end
352+
306353
private
307354

308355
def assert_proxy_available(proxy)

0 commit comments

Comments
 (0)