# Path: haystack/allocators/win32/win7heapwalker.py
# class Win7HeapWalker(winheapwalker.WinHeapWalker):
# class Win7HeapFinder(winheapwalker.WinHeapFinder):
#     def _create_validator(self):
#     def _validator_type(self):
#     def _walker_type(self):
#     def _make_dual_arch_ctypes(self):
#     def _get_heap_possible_kernel_pointer_from_heap(self, target_platform, heap):
# 
# Path: haystack/mappings/folder.py
# MMAP_HACK_ACTIVE = True
# MAX_MAPPING_SIZE_FOR_MMAP = 1024 * 1024 * 20
# class LazyLoadingException(Exception):
# class MemoryDumpLoader(interfaces.IMemoryLoader):
# class ProcessMemoryDumpLoader(MemoryDumpLoader):
# class LazyProcessMemoryDumpLoader(ProcessMemoryDumpLoader):
# class VeryLazyProcessMemoryDumpLoader(LazyProcessMemoryDumpLoader):
# class FolderLoader(interfaces.IMemoryLoader):
#     def __init__(self, filename):
#     def __init__(self, dumpname, bits=None, os_name=None):
#     def make_memory_handler(self):
#     def _is_valid(self):
#     def _load_mappings(self):
#     def _is_valid(self):
#     def _test_dir(self):
#     def _protected_open_file(self, mmap_fname, mmap_pathname):
#     def _load_mappings(self):
#     def _load_metadata(self):
#     def _load_memory_mappings(self):
#     def __init__(self, dumpname, maps_to_load=None, bits=None, os_name=None):
#     def _protected_open_file(self, mmap_fname, mmap_pathname):
#     def _load_memory_mappings(self):
# def load(dumpname, bits=None, os_name=None):
#     def __init__(self, opts):
#     def make_memory_handler(self):


import logging
import sys
import unittest
from haystack.allocators.win32 import win7heapwalker
from haystack.mappings import folder
from test.testfiles import putty_1_win7
        h = self.memory_handler.get_mapping_for_address(addr)
        validator = walker.get_heap_validator()
        heap = walker.get_heap()

        allocated, free = validator.get_backend_chunks(heap)
        freelists = validator.HEAP_get_freelists(heap)
        free_size = sum([x[1] for x in [(hex(x[0]), x[1]) for x in freelists]])
        free_size2 = sum([x[1] for x in free])
        self.assertEqual(heap.TotalFreeSize * 8, free_size)
        self.assertEqual(free_size, free_size2)

    def test_get_freelists_all(self):
        finder = win7heapwalker.Win7HeapFinder(self.memory_handler)
        mapping = self.memory_handler.get_mapping_for_address(0x005c0000)
        walker = finder.get_heap_walker(mapping)
        win7heap = walker._heap_module
        for addr, size in putty_1_win7.known_heaps:
            h = self.memory_handler.get_mapping_for_address(addr)
            validator = walker.get_heap_validator()
            heap = walker.get_heap()

            allocated, free = validator.get_backend_chunks(heap)
            freelists = validator.HEAP_get_freelists(heap)
            free_size = sum([x[1] for x in
                             [(hex(x[0]), x[1]) for x in freelists]])
            free_size2 = sum([x[1] for x in free])
            self.assertEqual(heap.TotalFreeSize * 8, free_size)
            self.assertEqual(free_size, free_size2)

    def test_get_frontend_chunks(self):

# Path: haystack/allocators/win32/win7heapwalker.py
# class Win7HeapWalker(winheapwalker.WinHeapWalker):
# class Win7HeapFinder(winheapwalker.WinHeapFinder):
#     def _create_validator(self):
#     def _validator_type(self):
#     def _walker_type(self):
#     def _make_dual_arch_ctypes(self):
#     def _get_heap_possible_kernel_pointer_from_heap(self, target_platform, heap):
# 
# Path: haystack/mappings/folder.py
# MMAP_HACK_ACTIVE = True
# MAX_MAPPING_SIZE_FOR_MMAP = 1024 * 1024 * 20
# class LazyLoadingException(Exception):
# class MemoryDumpLoader(interfaces.IMemoryLoader):
# class ProcessMemoryDumpLoader(MemoryDumpLoader):
# class LazyProcessMemoryDumpLoader(ProcessMemoryDumpLoader):
# class VeryLazyProcessMemoryDumpLoader(LazyProcessMemoryDumpLoader):
# class FolderLoader(interfaces.IMemoryLoader):
#     def __init__(self, filename):
#     def __init__(self, dumpname, bits=None, os_name=None):
#     def make_memory_handler(self):
#     def _is_valid(self):
#     def _load_mappings(self):
#     def _is_valid(self):
#     def _test_dir(self):
#     def _protected_open_file(self, mmap_fname, mmap_pathname):
#     def _load_mappings(self):
#     def _load_metadata(self):
#     def _load_memory_mappings(self):
#     def __init__(self, dumpname, maps_to_load=None, bits=None, os_name=None):
#     def _protected_open_file(self, mmap_fname, mmap_pathname):
#     def _load_memory_mappings(self):
# def load(dumpname, bits=None, os_name=None):
#     def __init__(self, opts):
#     def make_memory_handler(self):


# Path: test/haystack/allocators/win32/test_win7heap.py
import logging
import sys
import unittest
from haystack.allocators.win32 import win7heapwalker
from haystack.mappings import folder
from test.testfiles import putty_1_win7

        h = self.memory_handler.get_mapping_for_address(addr)
        validator = walker.get_heap_validator()
        heap = walker.get_heap()

        allocated, free = validator.get_backend_chunks(heap)
        freelists = validator.HEAP_get_freelists(heap)
        free_size = sum([x[1] for x in [(hex(x[0]), x[1]) for x in freelists]])
        free_size2 = sum([x[1] for x in free])
        self.assertEqual(heap.TotalFreeSize * 8, free_size)
        self.assertEqual(free_size, free_size2)

    def test_get_freelists_all(self):
        finder = win7heapwalker.Win7HeapFinder(self.memory_handler)
        mapping = self.memory_handler.get_mapping_for_address(0x005c0000)
        walker = finder.get_heap_walker(mapping)
        win7heap = walker._heap_module
        for addr, size in putty_1_win7.known_heaps:
            h = self.memory_handler.get_mapping_for_address(addr)
            validator = walker.get_heap_validator()
            heap = walker.get_heap()

            allocated, free = validator.get_backend_chunks(heap)
            freelists = validator.HEAP_get_freelists(heap)
            free_size = sum([x[1] for x in
                             [(hex(x[0]), x[1]) for x in freelists]])
            free_size2 = sum([x[1] for x in free])
            self.assertEqual(heap.TotalFreeSize * 8, free_size)
            self.assertEqual(free_size, free_size2)

    def test_get_frontend_chunks(self):

        finder = win7heapwalker.Win7HeapFinder(self.memory_handler)