Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #4
0
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()
Beispiel #5
0
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()
Beispiel #6
0
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()
Beispiel #9
0
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