def main(): print(' **make.py** ', sys.argv[1]) dumpname = sys.argv[1] fn = file('/dev/null') app = './%s' % (dumpname[:dumpname.rindex('.')]) print(' **make.py** app', app) try: print(' **cleantree** dumpname', dumpname) shutil.rmtree(dumpname) print(' **cleantree done** dumpname', dumpname) except: pass print(' **open stdout w** ', app + ".stdout") out = file(app + ".stdout", 'w') #pid1 = subprocess.Popen([app], stdout=fn.fileno()) print(' **popen process** ', app) pid1 = subprocess.Popen([app], bufsize=-1, stdout=out.fileno()) print "process",pid1.pid, "was launched" time.sleep(0.9) print(" **end sleep**",pid1.pid) if not os.access(app + ".stdout", os.F_OK): print " ** preDUMP ** file %s was not written"%app + ".stdout" print(' **DUMP** ', pid1.pid) memory_dumper.dump(pid1.pid, dumpname) print(' **DUMP terminated** ', pid1.pid) print(' **KILL** ', pid1.pid) pid1.kill() print(' **KILL finished** ', pid1.pid) out.close() if not os.access(app + ".stdout", os.F_OK): print "file %s was not written"%app + ".stdout" with file(app + ".stdout", 'w') as out: out.write('plop') return
def main(): print(' **make.py** ', sys.argv[1]) dumpname = sys.argv[1] fn = open('/dev/null') app = './%s' % (dumpname[:dumpname.rindex('.')]) print(' **make.py** app', app) try: print(' **cleantree** dumpname', dumpname) shutil.rmtree(dumpname) print(' **cleantree done** dumpname', dumpname) except: pass print(' **open stdout w** ', app + ".stdout") out = open(app + ".stdout", 'w') # pid1 = subprocess.Popen([app], stdout=fn.fileno()) print(' **popen process** ', app) pid1 = subprocess.Popen([app], bufsize=-1, stdout=out.fileno()) print("process", pid1.pid, "was launched") time.sleep(0.9) print(" **end sleep**", pid1.pid) if not os.access(app + ".stdout", os.F_OK): print(" ** preDUMP ** file %s was not written" % app + ".stdout") print(' **DUMP** ', pid1.pid) memory_dumper.dump(pid1.pid, dumpname) print(' **DUMP terminated** ', pid1.pid) print(' **KILL** ', pid1.pid) pid1.kill() print(' **KILL finished** ', pid1.pid) out.close() if not os.access(app + ".stdout", os.F_OK): print("file %s was not written" % app + ".stdout") with open(app + ".stdout", 'w') as out: out.write('plop') return
def test_dumptype_dir(self): '''Checks if dumping to folder works''' tgt1 = self._make_tgt_dir() tgt2 = self._make_tgt_dir() tgt3 = self._make_tgt_dir() self.devnull = open('/dev/null') self.process = self.run_app_test('test3', stdout=self.devnull.fileno()) time.sleep(0.1) out1 = memory_dumper.dump(self.process.pid, tgt1, "dir", True) self.assertEqual(out1, tgt1) # same name self._renew_process() out2 = memory_dumper.dump(self.process.pid, tgt2, "dir", True) self.assertEqual(out2, tgt2) # same name self._renew_process() out3 = memory_dumper.dump(self.process.pid, tgt3, "dir", False) self.assertEqual(out3, tgt3) # same name size1 = self.get_folder_size(tgt1) size2 = self.get_folder_size(tgt2) size3 = self.get_folder_size(tgt3) self.assertGreater(size1, 500) # not a null archive # self.assertGreater(size2, size1) # more _memory_handler self.assertGreater(size3, size2) # more _memory_handler # print size1, size2, size3 # print file(out1+'/_memory_handler').read() # print '-'*80 # print file(out2+'/_memory_handler').read() # print '-'*80 # print file(out3+'/_memory_handler').read() # print '-'*80 # test opening by dump_loader from haystack import dump_loader from haystack.mappings.base import MemoryHandler # PYDOC # NotImplementedError: MACHINE has not been found. # laoder should habe a cpu, os_name loading mappings1 = dump_loader.load(out1, cpu=self.cpu_bits, os_name=self.os_name) self.assertIsInstance(mappings1, MemoryHandler) mappings2 = dump_loader.load(out2, cpu=self.cpu_bits, os_name=self.os_name) mappings3 = dump_loader.load(out3, cpu=self.cpu_bits, os_name=self.os_name) pathnames1 = [m.pathname for m in mappings1] pathnames2 = [m.pathname for m in mappings2] pathnames3 = [m.pathname for m in mappings3] self.assertEqual(pathnames1, pathnames2) self.assertEqual(pathnames3, pathnames2) return
def main(): dumpname = sys.argv[1] fn = file('/dev/null') app = './%s' % (dumpname[:dumpname.rindex('.')]) try: shutil.rmtree(dumpname) except: pass out = file(app + ".stdout", 'w') #pid1 = subprocess.Popen([app], stdout=fn.fileno()) pid1 = subprocess.Popen([app], bufsize=-1, stdout=out.fileno()) time.sleep(0.9) # memory_dumper.dump(pid1.pid, dumpname) pid1.kill()
def main(): dumpname = sys.argv[1] fn = file('/dev/null') app = './%s'%(dumpname[:dumpname.rindex('.')]) try: shutil.rmtree(dumpname) except: pass out = file(app+".stdout",'w') #pid1 = subprocess.Popen([app], stdout=fn.fileno()) pid1 = subprocess.Popen([app], bufsize=-1, stdout=out.fileno()) time.sleep(0.9) # memory_dumper.dump(pid1.pid, dumpname) pid1.kill()
def mainold(): fn = file('/dev/null') for app in ["./test-ctypes1", "./test-ctypes2", "./test-ctypes3", "./test-ctypes4"]: dumpname = app+'.dump' try: shutil.rmtree(dumpname) except: pass out = file(app+".stdout",'w') #pid1 = subprocess.Popen([app], stdout=fn.fileno()) pid1 = subprocess.Popen([app], bufsize=-1, stdout=out.fileno()) time.sleep(0.9) # print ' **DUMP**' memory_dumper.dump(pid1.pid, dumpname) pid1.kill()
def _setUp_known_pattern(self, compact=True): self.devnull = open('/dev/null') self.process = self.run_app_test('test3', stdout=subprocess.PIPE) time.sleep(0.1) tgt = self._make_tgt_dir() self.out = memory_dumper.dump(self.process.pid, tgt, 'dir', compact) self.process.kill() return self.process.communicate()
def _setUp_known_pattern(self, compact=True): self.devnull = open('/dev/null') self.process = self.run_app_test('test3', stdout=subprocess.PIPE) time.sleep(0.1) tgt = self._make_tgt_dir() self.out = memory_dumper.dump(self.process.pid, tgt, 'dir', compact) self.process.kill() return self.process.communicate()
def mainold(): fn = file('/dev/null') for app in [ "./test-ctypes1", "./test-ctypes2", "./test-ctypes3", "./test-ctypes4" ]: dumpname = app + '.dump' try: shutil.rmtree(dumpname) except: pass out = file(app + ".stdout", 'w') #pid1 = subprocess.Popen([app], stdout=fn.fileno()) pid1 = subprocess.Popen([app], bufsize=-1, stdout=out.fileno()) time.sleep(0.9) # print ' **DUMP**' memory_dumper.dump(pid1.pid, dumpname) pid1.kill()
def test_mappings_file(self): '''Checks if memory_dumper make a _memory_handler index file''' tgt1 = self._make_tgt_dir() self.devnull = open('/dev/null') self.process = self.run_app_test('test1', stdout=self.devnull.fileno()) time.sleep(0.1) # FIXME, heaponly is breaking machine detection. out1 = memory_dumper.dump(self.process.pid, tgt1, "dir", True) self.assertIsNotNone(open('%s/_memory_handler' % out1)) self.assertGreater(len( open('%s/_memory_handler' % out1).readlines()), 15, 'the _memory_handler file looks too small')
def test_mappings_file(self): '''Checks if memory_dumper make a _memory_handler index file''' tgt1 = self._make_tgt_dir() self.devnull = open('/dev/null') self.process = self.run_app_test('test1', stdout=self.devnull.fileno()) time.sleep(0.1) # FIXME, heaponly is breaking machine detection. out1 = memory_dumper.dump(self.process.pid, tgt1, "dir", True) self.assertIsNotNone(open('%s/_memory_handler' % out1)) self.assertGreater(len(open('%s/_memory_handler' % out1).readlines()), 15, 'the _memory_handler file looks too small')
def test_dumptype_dir(self): tgt1 = self._make_tgt_dir() tgt2 = self._make_tgt_dir() tgt3 = self._make_tgt_dir() out1 = memory_dumper.dump(self.process.pid, tgt1, "dir", False, True) self.assertEquals(out1, tgt1) # same name self._renew_process() out2 = memory_dumper.dump(self.process.pid, tgt2, "dir", True, True) self.assertEquals(out2, tgt2) # same name self._renew_process() out3 = memory_dumper.dump(self.process.pid, tgt3, "dir", False, False) self.assertEquals(out3, tgt3) # same name size1 = get_folder_size(tgt1) size2 = get_folder_size(tgt2) size3 = get_folder_size(tgt3) self.assertGreater(size1, 500) # not a null archive self.assertGreater(size2, size1) # more mappings self.assertGreater(size3, size2) # more mappings # test opening by dump_loader from haystack import dump_loader from haystack import memory_mapping mappings1 = dump_loader.load(out1) self.assertIsInstance( mappings1, memory_mapping.Mappings) mappings2 = dump_loader.load(out2) mappings3 = dump_loader.load(out3) pathnames1 = [m.pathname for m in mappings1] pathnames2 = [m.pathname for m in mappings2] pathnames3 = [m.pathname for m in mappings3] self.assertEquals(pathnames1, pathnames2) self.assertEquals(pathnames3, pathnames2) return
def test_dumptype_dir(self): '''Checks if dumping to folder works''' tgt1 = self._make_tgt_dir() tgt2 = self._make_tgt_dir() tgt3 = self._make_tgt_dir() self.devnull = open('/dev/null') self.process = self.run_app_test('test3', stdout=self.devnull.fileno()) time.sleep(0.1) out1 = memory_dumper.dump(self.process.pid, tgt1, "dir", True) self.assertEqual(out1, tgt1) # same name self._renew_process() out2 = memory_dumper.dump(self.process.pid, tgt2, "dir", True) self.assertEqual(out2, tgt2) # same name self._renew_process() out3 = memory_dumper.dump(self.process.pid, tgt3, "dir", False) self.assertEqual(out3, tgt3) # same name size1 = self.get_folder_size(tgt1) size2 = self.get_folder_size(tgt2) size3 = self.get_folder_size(tgt3) self.assertGreater(size1, 500) # not a null archive # self.assertGreater(size2, size1) # more _memory_handler self.assertGreater(size3, size2) # more _memory_handler # print size1, size2, size3 # print file(out1+'/_memory_handler').read() # print '-'*80 # print file(out2+'/_memory_handler').read() # print '-'*80 # print file(out3+'/_memory_handler').read() # print '-'*80 # test opening by dump_loader from haystack.mappings import folder from haystack.mappings.base import MemoryHandler # PYDOC # NotImplementedError: MACHINE has not been found. # laoder should habe a cpu, os_name loading mappings1 = folder.load( out1, cpu=self.cpu_bits, os_name=self.os_name) self.assertIsInstance(mappings1, MemoryHandler) mappings2 = folder.load( out2, cpu=self.cpu_bits, os_name=self.os_name) mappings3 = folder.load( out3, cpu=self.cpu_bits, os_name=self.os_name) pathnames1 = [m.pathname for m in mappings1] pathnames2 = [m.pathname for m in mappings2] pathnames3 = [m.pathname for m in mappings3] self.assertEqual(pathnames1, pathnames2) self.assertEqual(pathnames3, pathnames2) return