예제 #1
0
    def test_create_experiment(self):
        """ Try creating an 'Experiment' object """

        firmware_2 = 'firmware_2.elf'
        nodes_list_2 = ['m3-%u.grenoble.iot-lab.info' % num for num in
                        (0, 2, 4, 6, 8)]

        firmware_3 = 'firmware_3.elf'
        nodes_list_3 = ['m3-%u.grenoble.iot-lab.info' % num for num in
                        (1, 3, 9, 27)]
        exp_d_2 = experiment.exp_resources(nodes_list_2, firmware_2, 'prof2')
        exp_d_3 = experiment.exp_resources(nodes_list_3, firmware_3, 'prof3')

        # pylint:disable=protected-access
        exp = experiment._Experiment('ExpName', 30, None)

        exp.add_exp_resources(exp_d_2)
        exp.add_exp_resources(exp_d_3)

        self.assertEqual(exp.type, 'physical')
        self.assertEqual(exp.nodes, ['m3-%u.grenoble.iot-lab.info' % num for
                                     num in (0, 1, 2, 3, 4, 6, 8, 9, 27)])
        self.assertTrue(exp.firmwareassociations is not None)
        self.assertTrue(exp.profileassociations is not None)
        self.assertEqual(2, len(exp.firmwareassociations))
        self.assertEqual(2, len(exp.profileassociations))
예제 #2
0
    def test_create_experiment(self):
        """ Try creating an 'Experiment' object """

        firmware_2 = 'firmware_2.elf'
        nodes_list_2 = [
            'm3-%u.grenoble.iot-lab.info' % num for num in (0, 2, 4, 6, 8)
        ]

        firmware_3 = 'firmware_3.elf'
        nodes_list_3 = [
            'm3-%u.grenoble.iot-lab.info' % num for num in (1, 3, 9, 27)
        ]
        exp_d_2 = experiment.exp_resources(nodes_list_2, firmware_2, 'prof2')
        exp_d_3 = experiment.exp_resources(nodes_list_3, firmware_3, 'prof3')

        # pylint:disable=protected-access
        exp = experiment._Experiment('ExpName', 30, None)

        exp.add_exp_resources(exp_d_2)
        exp.add_exp_resources(exp_d_3)

        self.assertEqual(exp.type, 'physical')
        self.assertEqual(exp.nodes, [
            'm3-%u.grenoble.iot-lab.info' % num
            for num in (0, 1, 2, 3, 4, 6, 8, 9, 27)
        ])
        self.assertTrue(exp.firmwareassociations is not None)
        self.assertTrue(exp.profileassociations is not None)
        self.assertEqual(2, len(exp.firmwareassociations))
        self.assertEqual(2, len(exp.profileassociations))
예제 #3
0
 def reserve_nodes(self, login, exp_name,
                   nodes_list, start_time, duration):
     """
     Submit a physical experiment (nodes list) and reservation date.
     """
     # pylint:disable=W0212,R0913,E1123
     logger.warning("iotlashell reserve_nodes")
     exp_file = helpers.FilesDict()
     _experiment = experiment._Experiment(exp_name, duration, start_time)
     _experiment.type = 'physical'
     _experiment.nodes = nodes_list
     exp_file['new_exp.json'] = helpers.json_dumps(_experiment)
     try:
         return self.api.method('admin/experiments?user=%s' % login,
                                'post',
                                files=exp_file)
     except HTTPError as err:
         logger.warning("iotlashell reserve_nodes error %s" % err.reason)
         return {'error' : err.reason}
예제 #4
0
async def submit_experiment(session):
    """ Submit experiment scenario """
    users = molotov.get_var('users')
    if users.empty():
        print("No users ...")
        assert False
    user = users.get()
    config = molotov.get_var('config')['experiments']
    exp = _Experiment(name=generate_exp_name(),
                      duration=config['duration'])
    alias = AliasNodes(config['nb_nodes'], molotov.get_var('site'), 'm3:at86rf231', False)
    exp.set_alias_nodes(alias)
    form = FormData()
    form.add_field("exp", json_dumps(exp),
                   content_type="application/json")
    async with session.post(
        urljoin(molotov.get_var('url'), 'experiments'),
        # password = Monkey-<login>
        auth=get_auth(user, 'Monkey-{}'.format(user)),
        data=form,
    ) as resp:
        res = await resp.json()
        assert res['id'] is not None
        assert resp.status == 200