]>
git.ipfire.org Git - thirdparty/squid.git/blob - test-suite/test_tools.cc
3ea94c8ed2138790303a3b7aaf364bd0ec2f0017
3 * $Id: test_tools.cc,v 1.11 2008/02/26 18:52:54 rousskov Exp $
6 // XXX: This file is made of large pieces of src/debug.cc and src/tools.cc
7 // with only a few minor modifications. TODO: redesign or delete.
9 #define _SQUID_EXTERNNEW_
15 xassert(const char *msg
, const char *file
, int line
)
17 std::cout
<< "Assertion failed: (" << msg
<< ") at " << file
<< ":" << line
<< std::endl
;
21 int Debug::Levels
[MAX_DEBUG_SECTIONS
];
25 _db_print_stderr(const char *format
, va_list args
);
29 _db_print(const char *format
,...)
35 const char *format
= NULL
;
38 LOCAL_ARRAY(char, f
, BUFSIZ
);
51 va_start(args1
, format
);
53 va_start(args2
, format
);
55 va_start(args3
, format
);
59 format
= va_arg(args1
, const char *);
63 snprintf(f
, BUFSIZ
, "%s| %s",
64 "stub time", //debugLogTime(squid_curtime),
67 _db_print_stderr(f
, args2
);
81 _db_print_stderr(const char *format
, va_list args
) {
83 // if (opt_debug_stderr < Debug::level)
88 vfprintf(stderr
, format
, args
);
92 fatal_dump(const char *message
) {
93 debug (0,0) ("Fatal: %s",message
);
98 fatal(const char *message
) {
99 debug (0,0) ("Fatal: %s",message
);
105 fatalvf(const char *fmt
, va_list args
) {
106 static char fatal_str
[BUFSIZ
];
107 vsnprintf(fatal_str
, sizeof(fatal_str
), fmt
, args
);
111 /* printf-style interface for fatal */
114 fatalf(const char *fmt
,...) {
123 const char *fmt
= NULL
;
125 fmt
= va_arg(args
, char *);
133 debug_trap(const char *message
) {
137 int Debug::TheDepth
= 0;
140 Debug::getDebugOut() {
141 assert(TheDepth
>= 0);
144 assert(CurrentDebug
);
145 *CurrentDebug
<< std::endl
<< "reentrant debuging " << TheDepth
<< "-{";
147 assert(!CurrentDebug
);
148 CurrentDebug
= new std::ostringstream();
149 // set default formatting flags
150 CurrentDebug
->setf(std::ios::fixed
);
151 CurrentDebug
->precision(2);
153 return *CurrentDebug
;
157 Debug::finishDebug() {
158 assert(TheDepth
>= 0);
159 assert(CurrentDebug
);
161 *CurrentDebug
<< "}-" << TheDepth
<< std::endl
;
163 assert(TheDepth
== 1);
164 _db_print("%s\n", CurrentDebug
->str().c_str());
172 Debug::xassert(const char *msg
, const char *file
, int line
) {
175 *CurrentDebug
<< "assertion failed: " << file
<< ":" << line
<<
176 ": \"" << msg
<< "\"";
181 std::ostringstream
*Debug::CurrentDebug (NULL
);
183 MemAllocator
*dlink_node_pool
= NULL
;
187 if (dlink_node_pool
== NULL
)
188 dlink_node_pool
= memPoolCreate("Dlink list nodes", sizeof(dlink_node
));
190 /* where should we call memPoolDestroy(dlink_node_pool); */
191 return static_cast<dlink_node
*>(dlink_node_pool
->alloc());
194 /* the node needs to be unlinked FIRST */
196 dlinkNodeDelete(dlink_node
* m
) {
200 dlink_node_pool
->free(m
);
204 dlinkAdd(void *data
, dlink_node
* m
, dlink_list
* list
) {
207 m
->next
= list
->head
;
210 list
->head
->prev
= m
;
214 if (list
->tail
== NULL
)
219 dlinkAddAfter(void *data
, dlink_node
* m
, dlink_node
* n
, dlink_list
* list
) {
227 assert(list
->tail
== n
);
235 dlinkAddTail(void *data
, dlink_node
* m
, dlink_list
* list
) {
238 m
->prev
= list
->tail
;
241 list
->tail
->next
= m
;
245 if (list
->head
== NULL
)
250 dlinkDelete(dlink_node
* m
, dlink_list
* list
) {
252 m
->next
->prev
= m
->prev
;
255 m
->prev
->next
= m
->next
;
258 list
->head
= m
->next
;
261 list
->tail
= m
->prev
;
263 m
->next
= m
->prev
= NULL
;
267 ctx_enter(const char *descr
) {