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))
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))
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}
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