-- This code creates 3 simgrid processes and verifies that the global values
-- in each Lua world are correctly cloned from maestro and become different

require("simgrid")

global_string = "A global string set by maestro"

-- Assigns to the global string the first argument and prints it
function set_global_string(...)
  
  global_string = arg[1]
  simgrid.info("Changing the global string")
  print_global()
end

-- Replaces the function please_dont_change_me() by set_global_string()
-- and calls it
function replace(...)

  simgrid.info("Overwriting function please_dont_replace_me()")
  please_dont_replace_me = set_global_string
  please_dont_replace_me(...)
end

-- Shows a hello message and prints the global string
function please_dont_replace_me(...)

  simgrid.info("Hello from please_dont_replace_me(). I'm lucky, I still exist in this state.")
  print_global()
end

-- Prints the value of global_string
function print_global()

  simgrid.info("Global string is '" .. global_string .. "'")
end

print_global()

simgrid.platform("../../msg/small_platform.xml")
simgrid.application("deployment_duplicated_globals.xml")
simgrid.run()

