Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: third_party/tcmalloc/chromium/src/tests/malloc_extension_test.cc

Issue 9666033: Experiment for updating the tcmalloc chromium branch to r144 (gperftools 2.0). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2008, Google Inc. 1 // Copyright (c) 2008, Google Inc.
2 // All rights reserved. 2 // All rights reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // * Redistributions of source code must retain the above copyright 8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer. 9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above 10 // * Redistributions in binary form must reproduce the above
(...skipping 18 matching lines...) Expand all
29 29
30 // --- 30 // ---
31 // Author: Craig Silverstein 31 // Author: Craig Silverstein
32 // 32 //
33 // Simple test of malloc_extension. Includes test of C shims. 33 // Simple test of malloc_extension. Includes test of C shims.
34 34
35 #include "config_for_unittests.h" 35 #include "config_for_unittests.h"
36 #include <stdio.h> 36 #include <stdio.h>
37 #include <sys/types.h> 37 #include <sys/types.h>
38 #include "base/logging.h" 38 #include "base/logging.h"
39 #include <google/malloc_extension.h> 39 #include <gperftools/malloc_extension.h>
40 #include <google/malloc_extension_c.h> 40 #include <gperftools/malloc_extension_c.h>
41 41
42 using STL_NAMESPACE::vector; 42 using STL_NAMESPACE::vector;
43 43
44 int main(int argc, char** argv) { 44 int main(int argc, char** argv) {
45 void* a = malloc(1000); 45 void* a = malloc(1000);
46 46
47 size_t cxx_bytes_used, c_bytes_used; 47 size_t cxx_bytes_used, c_bytes_used;
48 ASSERT_TRUE(MallocExtension::instance()->GetNumericProperty( 48 ASSERT_TRUE(MallocExtension::instance()->GetNumericProperty(
49 "generic.current_allocated_bytes", &cxx_bytes_used)); 49 "generic.current_allocated_bytes", &cxx_bytes_used));
50 ASSERT_TRUE(MallocExtension_GetNumericProperty( 50 ASSERT_TRUE(MallocExtension_GetNumericProperty(
51 "generic.current_allocated_bytes", &c_bytes_used)); 51 "generic.current_allocated_bytes", &c_bytes_used));
52 ASSERT_GT(cxx_bytes_used, 1000); 52 ASSERT_GT(cxx_bytes_used, 1000);
53 ASSERT_EQ(cxx_bytes_used, c_bytes_used); 53 ASSERT_EQ(cxx_bytes_used, c_bytes_used);
54 54
55 ASSERT_TRUE(MallocExtension::instance()->VerifyAllMemory()); 55 ASSERT_TRUE(MallocExtension::instance()->VerifyAllMemory());
56 ASSERT_TRUE(MallocExtension_VerifyAllMemory()); 56 ASSERT_TRUE(MallocExtension_VerifyAllMemory());
57 57
58 ASSERT_EQ(MallocExtension::kOwned,
59 MallocExtension::instance()->GetOwnership(a));
60 // TODO(csilvers): this relies on undocumented behavior that
61 // GetOwnership works on stack-allocated variables. Use a better test.
62 ASSERT_EQ(MallocExtension::kNotOwned,
63 MallocExtension::instance()->GetOwnership(&cxx_bytes_used));
64 ASSERT_EQ(MallocExtension::kNotOwned,
65 MallocExtension::instance()->GetOwnership(NULL));
58 ASSERT_GE(MallocExtension::instance()->GetAllocatedSize(a), 1000); 66 ASSERT_GE(MallocExtension::instance()->GetAllocatedSize(a), 1000);
59 // This is just a sanity check. If we allocated too much, tcmalloc is broken 67 // This is just a sanity check. If we allocated too much, tcmalloc is broken
60 ASSERT_LE(MallocExtension::instance()->GetAllocatedSize(a), 5000); 68 ASSERT_LE(MallocExtension::instance()->GetAllocatedSize(a), 5000);
61 ASSERT_GE(MallocExtension::instance()->GetEstimatedAllocatedSize(1000), 1000); 69 ASSERT_GE(MallocExtension::instance()->GetEstimatedAllocatedSize(1000), 1000);
62 70
63 for (int i = 0; i < 10; ++i) { 71 for (int i = 0; i < 10; ++i) {
64 void *p = malloc(i); 72 void *p = malloc(i);
65 ASSERT_GE(MallocExtension::instance()->GetAllocatedSize(p), 73 ASSERT_GE(MallocExtension::instance()->GetAllocatedSize(p),
66 MallocExtension::instance()->GetEstimatedAllocatedSize(i)); 74 MallocExtension::instance()->GetEstimatedAllocatedSize(i));
67 free(p); 75 free(p);
68 } 76 }
69 77
70 // Check the c-shim version too. 78 // Check the c-shim version too.
79 ASSERT_EQ(MallocExtension_kOwned, MallocExtension_GetOwnership(a));
80 ASSERT_EQ(MallocExtension_kNotOwned,
81 MallocExtension_GetOwnership(&cxx_bytes_used));
82 ASSERT_EQ(MallocExtension_kNotOwned, MallocExtension_GetOwnership(NULL));
71 ASSERT_GE(MallocExtension_GetAllocatedSize(a), 1000); 83 ASSERT_GE(MallocExtension_GetAllocatedSize(a), 1000);
72 ASSERT_LE(MallocExtension_GetAllocatedSize(a), 5000); 84 ASSERT_LE(MallocExtension_GetAllocatedSize(a), 5000);
73 ASSERT_GE(MallocExtension_GetEstimatedAllocatedSize(1000), 1000); 85 ASSERT_GE(MallocExtension_GetEstimatedAllocatedSize(1000), 1000);
74 86
75 free(a); 87 free(a);
76 88
89 // Verify that the .cc file and .h file have the same enum values.
90 ASSERT_EQ(static_cast<int>(MallocExtension::kUnknownOwnership),
91 static_cast<int>(MallocExtension_kUnknownOwnership));
92 ASSERT_EQ(static_cast<int>(MallocExtension::kOwned),
93 static_cast<int>(MallocExtension_kOwned));
94 ASSERT_EQ(static_cast<int>(MallocExtension::kNotOwned),
95 static_cast<int>(MallocExtension_kNotOwned));
96
77 printf("DONE\n"); 97 printf("DONE\n");
78 return 0; 98 return 0;
79 } 99 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698