Exemple #1
0
    def test_get_rss__two_children(self):
        block_size = 5 * 1024 * 1024
        gc.collect()
        with self.gc_disabled():
            baseline_mem_usage = get_rss()

            child1 = self.create_memory_eating_child(block_size)
            child2 = self.create_memory_eating_child(block_size)

            # We need to wait here for the process to write to us so we can be sure it's up and allocated.
            self.wait_for_child_to_be_ready(child1)
            self.wait_for_child_to_be_ready(child2)

            # Now we are sure the child has initialized and allocated the memory, we can now test it.
            delta = get_rss() - baseline_mem_usage

            self.wait_for_child_to_exit(child1)
            self.wait_for_child_to_exit(child2)
            gc.collect()

            delta2 = get_rss() - baseline_mem_usage

        self.assertGreater(delta, block_size * 2)
        self.assertLess(delta,
                        (self.PYTHON_OVERHEAD_MAX_SIZE + block_size) * 2)
        self.assertLess(delta2, (block_size * 2))
    def test_get_rss__two_children(self):
        block_size = 5 * 1024 * 1024
        gc.collect()
        with self.gc_disabled():
            baseline_mem_usage = get_rss()

            child1 = self.create_memory_eating_child(block_size)
            child2 = self.create_memory_eating_child(block_size)

            # We need to wait here for the process to write to us so we can be sure it's up and allocated.
            self.wait_for_child_to_be_ready(child1)
            self.wait_for_child_to_be_ready(child2)

            # Now we are sure the child has initialized and allocated the memory, we can now test it.
            delta = get_rss() - baseline_mem_usage

            self.wait_for_child_to_exit(child1)
            self.wait_for_child_to_exit(child2)
            gc.collect()

            delta2 = get_rss() - baseline_mem_usage

        self.assertGreater(delta, block_size * 2)
        self.assertLess(delta, (self.PYTHON_OVERHEAD_MAX_SIZE + block_size) * 2)
        self.assertLess(delta2, (block_size * 2))
Exemple #3
0
    def test_get_rss__free_10mb(self):
        gc.collect()
        block_size = 10 * 1024 * 1024
        with self.gc_disabled():
            baseline_mem_usage = get_rss()
            eat_memory = 'x' * block_size
            delta = get_rss() - baseline_mem_usage
            del eat_memory
            gc.collect()
            delta2 = get_rss() - baseline_mem_usage

        self.assertGreater(delta, block_size / 2)
        self.assertLess(delta, block_size * 2)
        self.assertLess(delta2, block_size / 2)
    def test_get_rss__free_10mb(self):
        gc.collect()
        block_size = 10 * 1024 * 1024
        with self.gc_disabled():
            baseline_mem_usage = get_rss()
            eat_memory = 'x' * block_size
            delta = get_rss() - baseline_mem_usage
            del eat_memory
            gc.collect()
            delta2 = get_rss() - baseline_mem_usage

        self.assertGreater(delta, block_size / 2)
        self.assertLess(delta, block_size * 2)
        self.assertLess(delta2, block_size / 2)
Exemple #5
0
    def test_get_rss__eat_1mb(self):
        gc.collect()
        block_size = 1 * 1024 * 1024
        with self.gc_disabled():
            baseline_mem_usage = get_rss()
            eat_memory = 'x' * block_size
            delta = get_rss() - baseline_mem_usage

        # Since Python's memory allocator pre-allocates physical memory so it can create objects more quickly, the
        # delta we'll see will be less than the amount of memory we allocated for the object. As a safety precaution,
        # we check for an increase half the size of the memory we consumed.
        self.assertGreater(delta, block_size / 2)

        # Here we make sure the delta isn't too much - because there's no reason Python will allocate another 1MB.
        self.assertLess(delta, block_size * 2)
    def test_get_rss__eat_1mb(self):
        gc.collect()
        block_size = 1 * 1024 * 1024
        with self.gc_disabled():
            baseline_mem_usage = get_rss()
            eat_memory = 'x' * block_size
            delta = get_rss() - baseline_mem_usage

        # Since Python's memory allocator pre-allocates physical memory so it can create objects more quickly, the
        # delta we'll see will be less than the amount of memory we allocated for the object. As a safety precaution,
        # we check for an increase half the size of the memory we consumed.
        self.assertGreater(delta, block_size / 2)

        # Here we make sure the delta isn't too much - because there's no reason Python will allocate another 1MB.
        self.assertLess(delta, block_size * 2)
Exemple #7
0
    def stopTest(self, test):
        gc.disable()
        gc.collect()
        rss_current = get_rss()
        rss_delta = rss_current - self.rss_baseline
        gc.enable()

        if rss_delta > self.allowed_leftover:
            raise PotentialMemoryLeakError("test [%s]" % test, self.rss_baseline, rss_current, self.allowed_leftover)
Exemple #8
0
    def stopTest(self, test):
        gc.disable()
        gc.collect()
        rss_current = get_rss()
        rss_delta = rss_current - self.rss_baseline
        gc.enable()

        if rss_delta > self.allowed_leftover:
            raise PotentialMemoryLeakError("test [%s]" % test,
                                           self.rss_baseline, rss_current,
                                           self.allowed_leftover)
Exemple #9
0
 def test_get_rss__simple_program(self):
     # We assume here that our very simplistic Python program's RSS is in the range of
     # (1MB, PYTHON_OVERHEAD_MAX_SIZE)
     mem_usage = get_rss()
     self.assertGreater(mem_usage, 1 * 1024 * 1024)
     self.assertLess(mem_usage, self.PYTHON_OVERHEAD_MAX_SIZE)
Exemple #10
0
 def startTest(self, test):
     gc.disable()
     gc.collect()
     self.rss_baseline = get_rss()
     gc.enable()
Exemple #11
0
 def startTest(self, test):
     gc.disable()
     gc.collect()
     self.rss_baseline = get_rss()
     gc.enable()
 def test_get_rss__simple_program(self):
     # We assume here that our very simplistic Python program's RSS is in the range of
     # (1MB, PYTHON_OVERHEAD_MAX_SIZE)
     mem_usage = get_rss()
     self.assertGreater(mem_usage, 1 * 1024 * 1024)
     self.assertLess(mem_usage, self.PYTHON_OVERHEAD_MAX_SIZE)