Пример #1
0
 def test_info(self):
     job = Job.oarsub_cluster(
         username=self.user,
         cluster=self.cluster,
         walltime=Time(minutes=5),
         nb_nodes=self.nb_nodes,
         deploy=False,
     )
     info = job.platform_information()
     self.assertEqual(info['deployment'], False)
     self.assertIn('command', info)
     self.assertEqual(info['jobid'], job.jobid)
     self.assertEqual(info['site'], self.site)
     self.assertEqual(info['cluster'], self.cluster)
     for host in job.hostnames:
         self.assertIn(host, info)
         for key in ['arp', 'cpu', 'kernel', 'mpi', 'version']:
             self.assertIn(key, info[host])
     git_hash = '61888b8576a7913c9fa7c40c2918f92bcc1f5c17'
     url = 'https://github.com/dylanbeattie/rockstar.git'
     job.git_clone(url, 'rockstar', checkout=git_hash)
     new_info = job.platform_information()
     self.assertEqual(new_info['git_repositories'], [{
         'path': 'rockstar',
         'url': url,
         'hash': git_hash
     }])
     del new_info['git_repositories']
     self.assertEqual(new_info, info)
Пример #2
0
 def test_job(self):
     job = Job.oarsub_cluster(
         username=self.user,
         cluster=self.cluster,
         walltime=Time(minutes=5),
         nb_nodes=self.nb_nodes,
         deploy=False,
     )
     result = job.frontend.run_unique('hostname -f').stdout.strip()
     self.assertEqual(result, 'f%s.%s.grid5000.fr' % (self.site, self.site))
     hosts = job.hostnames
     jobs = Job.get_jobs(self.site, self.user)
     self.assertTrue(any(j.hostnames == hosts for j in jobs))
     self.assertEqual(len(set(hosts)), self.nb_nodes)
     for host in hosts:
         self.assertEqual(host[:len(self.cluster)], self.cluster)
     self.assertEqual(set(job.hostnames), set(job.nodes.hostnames))
     result = job.nodes.run('hostname -f')
     for node, res in result.items():
         self.assertEqual(node.host, res.stdout.strip())
     result = job.nodes.run_unique('pwd')
     self.assertEqual(result.stdout.strip(), '/tmp')
     expected_cores = [[i, i + 12] for i in list(range(0, 12, 2)) +
                       list(range(1, 12, 2))]
     self.assertEqual(job.nodes.cores, expected_cores)
     self.assertEqual(set(job.nodes.hyperthreads), set(range(12, 24)))
     job.add_content_to_archive('hello, world!', 'file_hello')
     job.add_content_to_archive('foo bar' * 50, 'file_foo')
     with open('/tmp/bla', 'w') as f:
         f.write('this is a test')
     job.add_file_to_archive('/tmp/bla', 'file_test')
     job.get_archive()
     self.assertTrue(os.path.isfile(job.archive_name))
     archive = zipfile.ZipFile(job.archive_name)
     self.assertEqual(set(archive.namelist()),
                      {'file_hello', 'file_foo', 'file_test'})
     self.assertEqual(
         archive.read('file_hello').decode('ascii'), 'hello, world!')
     self.assertEqual(
         archive.read('file_foo').decode('ascii'), 'foo bar' * 50)
     self.assertEqual(
         archive.read('file_test').decode('ascii'), 'this is a test')
     job.add_information_to_archive()
     job.get_archive()
     archive = zipfile.ZipFile(job.archive_name)
     for name in [
             'info.yaml', 'oarstat.yaml', 'commands.log', 'history.json'
     ]:
         self.assertIn(name, archive.namelist())
     for host in job.hostnames:
         for name in [
                 'cpuinfo.txt', 'environment.txt', 'topology.xml',
                 'topology.pdf', 'lspci.txt', 'dmidecode.txt'
         ]:
             name = os.path.join('information', host, name)
             self.assertIn(name, archive.namelist())
     os.remove(job.archive_name)
Пример #3
0
 def test_job_deploy(self):
     self.job = Job.oarsub_cluster(
         username=self.user,
         cluster=self.cluster,
         walltime=Time(minutes=15),
         nb_nodes=self.nb_nodes,
         deploy='debian9-x64-min',
     )
     self.job.kadeploy().apt_install('hwloc', 'cpufrequtils',
                                     'linux-cpupower')
     nb = len(self.job.nodes.hyperthreads)
     self.assert_run(str(nb * 2), 'grep processor /proc/cpuinfo | wc -l')
     self.job.nodes.disable_hyperthreading()
     self.assert_run(str(nb), 'grep processor /proc/cpuinfo | wc -l')
     self.job.nodes.enable_hyperthreading()
     self.assert_run(str(nb * 2), 'grep processor /proc/cpuinfo | wc -l')
     freq_info = self.job.nodes.frequency_information
     self.assertEqual(freq_info.governor, ('performance', 'powersave'))
     self.assertEqual(freq_info.min_freq, 1200000)
     self.assertEqual(freq_info.max_freq, 2800000)
     for _ in range(2):
         for governor in freq_info.governor:
             min_freq = random.randint(freq_info.min_freq,
                                       freq_info.max_freq)
             max_freq = random.randint(min_freq, freq_info.max_freq)
             self.job.nodes.set_frequency_information(
                 governor, min_freq, max_freq)
             self.assertEqual(self.job.nodes.current_frequency_information,
                              (governor, min_freq, max_freq))
     self.job.nodes.reset_frequency_information()
     self.assertEqual(self.job.nodes.current_frequency_information,
                      ('powersave', freq_info.min_freq, freq_info.max_freq))
     self.job.nodes.set_frequency_performance()
     self.assertEqual(
         self.job.nodes.current_frequency_information,
         ('performance', freq_info.max_freq, freq_info.max_freq))
     with self.assertRaises(ValueError):
         self.job.nodes.set_frequency_information(governor='bla')
     with self.assertRaises(ValueError):
         self.job.nodes.set_frequency_information(min_freq=42)
     with self.assertRaises(ValueError):
         self.job.nodes.set_frequency_information(max_freq=42)
     with self.assertRaises(ValueError):
         self.job.nodes.set_frequency_information(
             min_freq=freq_info.min_freq + 100, max_freq=freq_info.min_freq)