···235235 Logger.debug(msg: "Received hello reply", garden: reply)
236236 storage = Garden.Storage.read()
237237238238- if storage.garden_sid != garden_sid do
238238+ {:join, garden_sid, persist?: persist?} =
239239+ State.process_hello_reply(garden_sid, storage.garden_sid)
240240+241241+ if persist? do
239242 storage |> Map.put(:garden_sid, garden_sid) |> Garden.Storage.write()
240243 end
241244
+4
apps/garden/lib/garden/socket/state.ex
···8383 end
8484 end
85858686+ def process_hello_reply(garden_sid, stored_garden_sid) do
8787+ {:join, garden_sid, persist?: garden_sid != stored_garden_sid}
8888+ end
8989+8690 def should_reload?(active_deployments, pending_reload) do
8791 map_size(active_deployments) == 0 and pending_reload
8892 end
+17
apps/garden/test/garden/socket/state_test.exs
···255255 refute State.should_reload?(%{}, false)
256256 end
257257 end
258258+259259+ describe "process_hello_reply/2" do
260260+ test "returns persist true when garden_sid differs from stored" do
261261+ assert {:join, "garden_new", persist?: true} =
262262+ State.process_hello_reply("garden_new", "garden_old")
263263+ end
264264+265265+ test "returns persist false when garden_sid matches stored" do
266266+ assert {:join, "garden_same", persist?: false} =
267267+ State.process_hello_reply("garden_same", "garden_same")
268268+ end
269269+270270+ test "returns persist true when stored is nil" do
271271+ assert {:join, "garden_new", persist?: true} =
272272+ State.process_hello_reply("garden_new", nil)
273273+ end
274274+ end
258275end