Beispiel #1
0
 def test_tcall(self):
     # need special env for this one
     env = Env("Test env",
               members=[create_newton()],
               exec_key=self.exec_key)
     acts = run(self.test_user, test_run=True)
     self.assertEqual(acts, DEF_STEPS)
Beispiel #2
0
 def test_runN(self):
     """
     Test running for N turns.
     """
     new_env = Env("Test1 env", action=env_action, members=[self.newton])
     num_periods = 10
     acts = new_env.runN(num_periods)
     self.assertEqual(acts, num_periods)
Beispiel #3
0
 def test_restore_env(self):
     """
     This test depends upon a particular, stored json
     format: must be re-written.
     """
     tests_env = env_json_basic.ret()
     ret_env = Env("env", serial_obj=tests_env)
     self.assertEqual(str(type(ret_env)), "<class 'indra.env.Env'>")
Beispiel #4
0
 def setUp(self):
     self.exec_key = get_exec_key()
     self.env = Env("test_env", exec_key=self.exec_key)
     (self.space, self.newton) = create_space(self.exec_key)
     self.test_agent = Agent("test agent", exec_key=self.exec_key)
     self.test_agent2 = Agent("test agent 2", exec_key=self.exec_key)
     self.test_agent3 = Agent("test agent 3", exec_key=self.exec_key)
     self.test_agent4 = Agent("test agent 4", exec_key=self.exec_key)
Beispiel #5
0
    def __json_to_object(self, serial_obj, exec_key):
        """
        Takes a serial JSON object back into a live Python object.
        """
        restored_obj = dict()
        restored_groups = []
        model_deserialized = False
        for obj_name in serial_obj:
            should_restore_object = isinstance(serial_obj[obj_name],
                                               dict) and "type" in serial_obj[
                                        obj_name]
            if should_restore_object:
                if serial_obj[obj_name]["type"] == "TestUser":
                    restored_obj[obj_name] = TermUser(name=obj_name,
                                                      serial_obj=serial_obj[
                                                          obj_name],
                                                      exec_key=exec_key)
                if serial_obj[obj_name]["type"] == "APIUser":
                    restored_obj[obj_name] = APIUser(name=obj_name,
                                                     serial_obj=serial_obj[
                                                         obj_name],
                                                     exec_key=exec_key)
                if serial_obj[obj_name]["type"] == "Agent":
                    restored_obj[obj_name] = Agent(name=obj_name,
                                                   serial_obj=serial_obj[
                                                       obj_name],
                                                   exec_key=exec_key)
                elif serial_obj[obj_name]["type"] == "Model":
                    from lib.model import Model
                    print(f'restoring model for key {exec_key}')
                    restored_obj[obj_name] = Model(exec_key=exec_key,
                                                   serial_obj=serial_obj[
                                                       obj_name])
                    model_deserialized = True
                elif serial_obj[obj_name]["type"] == "Group":
                    from lib.group import Group
                    restored_obj[obj_name] = Group(exec_key=exec_key,
                                                   serial_obj=serial_obj[
                                                       obj_name],
                                                   name=serial_obj[obj_name][
                                                       'name'])
                    restored_groups.append(restored_obj[obj_name])
                elif serial_obj[obj_name]["type"] == "Env":
                    restored_obj[obj_name] = Env(exec_key=exec_key,
                                                 serial_obj=serial_obj[
                                                     obj_name],
                                                 name=serial_obj[obj_name][
                                                     'name'])
            else:
                restored_obj[obj_name] = serial_obj[obj_name]

            self.registries[exec_key][obj_name] = restored_obj[obj_name]

        if model_deserialized:
            restored_obj['model'].groups = restored_groups
            restored_obj['model'].env = restored_obj['env']
            self.registries[exec_key]['model'] = restored_obj['model']
        return restored_obj
Beispiel #6
0
    def test_backlog(self):

        from lib.env import Env
        from lib.paramenters import Parameters
        import lib.other_agent as other_agent
        pa = Parameters()
        pa.num_nw = 5
        pa.simu_len = 50
        pa.num_ex = 10
        pa.new_job_rate = 1
        pa.compute_dependent_parameters()

        env = Env(pa, render=False, repre='image')

        env.step(5)
        env.step(5)
        env.step(5)
        env.step(5)
        env.step(5)

        env.step(5)
        # self.assertIsNotNone(env.job_backlog.backlog[0])
        # self.assertIsNone(env.job_backlog.backlog[1])
        print("New job is backlogged.")

        env.step(5)
        env.step(5)
        env.step(5)
        env.step(5)

        job = env.job_backlog.backlog[0]
        env.step(0)
        self.assertEqual(env.job_slot.slot[0], job)
        # assert env.job_slot.slot[0] == job

        job = env.job_backlog.backlog[0]
        env.step(0)
        self.assertEqual(env.job_slot.slot[0], job)

        # assert env.job_slot.slot[0] == job

        job = env.job_backlog.backlog[0]
        env.step(1)
        self.assertEqual(env.job_slot.slot[1], job)

        job = env.job_backlog.backlog[0]
        env.step(1)
        self.assertEqual(env.job_slot.slot[1], job)

        env.step(5)

        job = env.job_backlog.backlog[0]
        env.step(3)
        # self.assertEqual(env.job_slot.slot[3],job )

        print("- Backlog test passed -")
Beispiel #7
0
 def create_env(self, env_action=None, random_placing=True):
     """
     Override this method to create a unique env...
     but this one will already set the model name and add
     the groups.
     """
     # NOTE: WE DEFAULT TO RANDOM PLACING ALL THE TIME
     # EVEN FOR MODELS LIKE FOREST FIRE
     self.env = Env(self.module,
                    members=self.groups,
                    exec_key=self.exec_key,
                    width=self.width,
                    height=self.height,
                    action=env_action,
                    random_placing=random_placing)
     self.env.user = self.user
     self.env.user_type = self.user_type
     self.create_pop_hist()
     return self.env
Beispiel #8
0
    def test_image_speed(self):
        from lib.env import Env
        from lib.paramenters import Parameters
        import lib.other_agent as other_agent

        pa = Parameters()
        pa.simu_len = 50
        pa.num_ex = 10
        pa.new_job_rate = 0.3
        pa.compute_dependent_parameters()

        env = Env(pa, render=False, repre='image')

        import time

        start_time = time.time()
        for i in range(100000):
            a = other_agent.get_sjf_action(env.machine, env.job_slot)
            env.step(a)
        end_time = time.time()
        print("- Elapsed time: ", end_time - start_time, "sec -")
Beispiel #9
0
 def test_plot_data(self):
     """
     Test the construction of scatter plot data.
     """
     global travis
     travis = os.getenv("TRAVIS")
     if not travis:
         our_grp = Group(GRP1,
                         members=[self.newton],
                         exec_key=self.exec_key)
         self.env = Env("Test env",
                        members=[our_grp],
                        exec_key=self.exec_key)
         ret = self.env.plot_data()
         (x, y) = self.newton.pos
         self.assertEqual(
             ret, {GRP1: {
                 X: [x],
                 Y: [y],
                 'color': None,
                 'marker': None
             }})
Beispiel #10
0
 def from_json(self, jrep):
     """
     This method restores a model from its JSON rep.
     """
     self.module = jrep["module"]
     self.exec_key = jrep["exec_key"]
     self.period = jrep["period"]
     self.switches = jrep["switches"]
     # We should restore user from json:
     # self.user = jrep["user"]
     # But for the moment we will hard code this:
     self.user = APIUser(model=self,
                         name="API",
                         exec_key=self.exec_key,
                         serial_obj=jrep["user"])
     self.user_type = jrep["user_type"]
     self.props = jrep["props"]
     self.env = Env(self.module,
                    serial_obj=jrep["env"],
                    exec_key=self.exec_key)
     # since self.groups is a list and self.env.members is an OrderedDict
     self.groups = [
         self.env.members[group_nm] for group_nm in self.env.members
     ]
Beispiel #11
0
 def setUp(self):
     self.exec_key = get_exec_key()
     self.env = Env("Test env", exec_key=self.exec_key)
     self.user = TermUser("User", exec_key=self.exec_key)
     self.test_user = TestUser("TestUser", exec_key=self.exec_key)