def test_buffered_mode_change_buffer_size(self): assert not signac.is_buffered() with signac.buffered(buffer_size=12): assert signac.buffered() assert signac.get_buffer_size() == 12 assert not signac.is_buffered() with pytest.raises(TypeError): with signac.buffered(buffer_size=True): pass assert not signac.is_buffered() with signac.buffered(buffer_size=12): assert signac.buffered() assert signac.get_buffer_size() == 12 with signac.buffered(buffer_size=12): assert signac.buffered() assert signac.get_buffer_size() == 12 assert not signac.is_buffered() with pytest.raises(BufferException): with signac.buffered(buffer_size=12): assert signac.buffered() assert signac.get_buffer_size() == 12 with signac.buffered(buffer_size=14): pass
def test_buffered_mode_change_buffer_size(self): self.assertFalse(signac.is_buffered()) with signac.buffered(buffer_size=12): self.assertTrue(signac.buffered()) self.assertEqual(signac.get_buffer_size(), 12) self.assertFalse(signac.is_buffered()) with self.assertRaises(TypeError): with signac.buffered(buffer_size=True): pass self.assertFalse(signac.is_buffered()) with signac.buffered(buffer_size=12): self.assertTrue(signac.buffered()) self.assertEqual(signac.get_buffer_size(), 12) with signac.buffered(buffer_size=12): self.assertTrue(signac.buffered()) self.assertEqual(signac.get_buffer_size(), 12) self.assertFalse(signac.is_buffered()) with self.assertRaises(BufferException): with signac.buffered(buffer_size=12): self.assertTrue(signac.buffered()) self.assertEqual(signac.get_buffer_size(), 12) with signac.buffered(buffer_size=14): pass
def test_buffered_mode_force_write(self): with signac.buffered(force_write=False): with signac.buffered(force_write=False): pass self.assertFalse(signac.is_buffered()) with signac.buffered(force_write=True): with signac.buffered(force_write=True): pass with self.assertRaises(Error): with signac.buffered(): with signac.buffered(force_write=True): pass self.assertFalse(signac.is_buffered())
def test_buffered_mode_force_write(self): with signac.buffered(force_write=False): with signac.buffered(force_write=False): pass assert not signac.is_buffered() with signac.buffered(force_write=True): with signac.buffered(force_write=True): pass with pytest.raises(Error): with signac.buffered(): with signac.buffered(force_write=True): pass assert not signac.is_buffered()
def test_buffered_mode_force_write_with_file_modification(self): job = self.project.open_job(dict(a=0)) job.init() job.doc.a = True x = job.doc.a self.assertEqual(job.doc.a, x) with self.assertRaises(BufferedFileError): with signac.buffered(): self.assertEqual(job.doc.a, x) job.doc.a = not x self.assertEqual(job.doc.a, not x) sleep(1.0) with open(job.doc._filename, 'wb') as file: file.write(json.dumps({'a': x}).encode()) self.assertFalse(signac.is_buffered()) self.assertEqual(job.doc.a, x) with signac.buffered(force_write=True): self.assertEqual(job.doc.a, x) job.doc.a = not x self.assertEqual(job.doc.a, not x) sleep(1.0) with open(job.doc._filename, 'wb') as file: file.write(json.dumps({'a': x}).encode()) self.assertEqual(job.doc.a, not x)
def test_buffered_mode_force_write_with_file_modification(self): job = self.project.open_job(dict(a=0)) job.init() job.doc.a = True x = job.doc.a assert job.doc.a == x with pytest.raises(BufferedFileError): with signac.buffered(): assert job.doc.a == x job.doc.a = not x assert job.doc.a == (not x) sleep(1.0) with open(job.doc._filename, "wb") as file: file.write(json.dumps({"a": x}).encode()) assert not signac.is_buffered() assert job.doc.a == x with signac.buffered(force_write=True): assert job.doc.a == x job.doc.a = not x assert job.doc.a == (not x) sleep(1.0) with open(job.doc._filename, "wb") as file: file.write(json.dumps({"a": x}).encode()) assert job.doc.a == (not x)
def test_buffered_mode_change_buffer_size(self): assert not signac.is_buffered() with signac.buffered(buffer_size=12): assert signac.buffered() assert signac.get_buffer_size() == 12 assert not signac.is_buffered() assert not signac.is_buffered() with signac.buffered(buffer_size=12): assert signac.buffered() assert signac.get_buffer_size() == 12 with signac.buffered(): assert signac.buffered() assert signac.get_buffer_size() == 12 assert not signac.is_buffered()
def test_enter_exit_buffered_mode(self): self.assertFalse(signac.is_buffered()) with signac.buffered(): self.assertTrue(signac.is_buffered()) self.assertFalse(signac.is_buffered()) self.assertFalse(signac.is_buffered()) with signac.buffered(): self.assertTrue(signac.is_buffered()) with signac.buffered(): self.assertTrue(signac.is_buffered()) self.assertTrue(signac.is_buffered()) self.assertFalse(signac.is_buffered())
def test_enter_exit_buffered_mode(self): assert not signac.is_buffered() with signac.buffered(): assert signac.is_buffered() assert not signac.is_buffered() assert not signac.is_buffered() with signac.buffered(): assert signac.is_buffered() with signac.buffered(): assert signac.is_buffered() assert signac.is_buffered() assert not signac.is_buffered()
def test_integration(self): def routine(): for i in range(1, 4): job = self.project.open_job(dict(a=i)) job.doc.a = True for job in self.project: self.assertTrue(job.sp.a > 0) job.sp.a = -job.sp.a self.assertTrue(job.sp.a < 0) job2 = self.project.open_job(id=job.get_id()) self.assertTrue(job2.sp.a < 0) job.sp.a = -job.sp.a self.assertTrue(job.sp.a > 0) job2 = self.project.open_job(id=job.get_id()) self.assertTrue(job2.sp.a > 0) for job in self.project: self.assertTrue(job.doc.a) job.doc.a = not job.doc.a self.assertFalse(job.doc.a) job.doc.a = not job.doc.a self.assertTrue(job.doc.a) routine() with signac.buffered(): self.assertTrue(signac.is_buffered()) routine() for job in self.project: x = job.doc.a with signac.buffered(): self.assertEqual(job.doc.a, x) job.doc.a = not job.doc.a self.assertEqual(job.doc.a, not x) job2 = self.project.open_job(id=job.get_id()) self.assertEqual(job2.doc.a, not x) self.assertEqual(job.doc.a, not x) self.assertEqual(job2.doc.a, not x) job.doc.a = x with signac.buffered(): self.assertEqual(job.doc.a, x) job.doc.a = not x self.assertEqual(job.doc.a, not x) job2.doc.a = x self.assertEqual(job.doc.a, x) self.assertEqual(job2.doc.a, x) self.assertEqual(job.doc.a, x) self.assertEqual(job2.doc.a, x) job.doc.a = x with signac.buffered(): self.assertEqual(job.doc.a, x) job.doc.a = not x self.assertEqual(job.doc.a, not x) job2.doc.a = x self.assertEqual(job.doc.a, x) self.assertEqual(job2.doc.a, x) job.doc.a = not x self.assertEqual(job.doc.a, not x) self.assertEqual(job2.doc.a, not x) self.assertEqual(job.doc.a, not x) self.assertEqual(job2.doc.a, not x) self.assertEqual(job.doc.a, not x) with self.assertRaises(BufferedFileError) as cm: with signac.buffered(): self.assertEqual(job.doc.a, not x) job.doc.a = x self.assertEqual(job.doc.a, x) sleep(1.0) with open(job.doc._filename, 'wb') as file: file.write(json.dumps({'a': not x}).encode()) self.assertIn(job.doc._filename, cm.exception.files) break # only test for one job
def test_integration(self): def routine(): for i in range(1, 4): job = self.project.open_job(dict(a=i)) job.doc.a = True for job in self.project: assert job.sp.a > 0 job.sp.a = -job.sp.a assert job.sp.a < 0 with pytest.deprecated_call(): job2 = self.project.open_job(id=job.get_id()) assert job2.sp.a < 0 job.sp.a = -job.sp.a assert job.sp.a > 0 with pytest.deprecated_call(): job2 = self.project.open_job(id=job.get_id()) assert job2.sp.a > 0 for job in self.project: assert job.doc.a job.doc.a = not job.doc.a assert not job.doc.a job.doc.a = not job.doc.a assert job.doc.a routine() assert signac.get_buffer_load() == 0 with signac.buffered(): assert signac.is_buffered() routine() assert signac.get_buffer_load() > 0 assert signac.get_buffer_load() == 0 for job in self.project: x = job.doc.a with signac.buffered(): assert signac.get_buffer_load() == 0 assert job.doc.a == x assert signac.get_buffer_load() > 0 job.doc.a = not job.doc.a assert job.doc.a == (not x) with pytest.deprecated_call(): job2 = self.project.open_job(id=job.get_id()) assert job2.doc.a == (not x) assert signac.get_buffer_load() == 0 assert job.doc.a == (not x) assert job2.doc.a == (not x) job.doc.a = x with signac.buffered(): assert job.doc.a == x job.doc.a = not x assert job.doc.a == (not x) job2.doc.a = x assert job.doc.a == x assert job2.doc.a == x assert job.doc.a == x assert job2.doc.a == x job.doc.a = x with signac.buffered(): assert job.doc.a == x job.doc.a = not x assert job.doc.a == (not x) job2.doc.a = x assert job.doc.a == x assert job2.doc.a == x job.doc.a = not x assert job.doc.a == (not x) assert job2.doc.a == (not x) assert job.doc.a == (not x) assert job2.doc.a == (not x) assert job.doc.a == (not x) with pytest.raises(BufferedFileError) as cm: with signac.buffered(): assert job.doc.a == (not x) job.doc.a = x assert job.doc.a == x sleep(1.0) with open(job.doc._filename, "wb") as file: file.write(json.dumps({"a": not x}).encode()) assert job.doc._filename in cm.value.files break # only test for one job