test.cc revision 2ee91b4af4353b9e6a9d591c32fedfc58fd4ef35
12ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// Copyright 2009 The RE2 Authors. All Rights Reserved. 22ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// Use of this source code is governed by a BSD-style 32ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// license that can be found in the LICENSE file. 42ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 52ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#include <stdio.h> 62ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#include <sys/resource.h> 72ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#include "util/test.h" 82ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 92ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian HodsonDEFINE_string(test_tmpdir, "/var/tmp", "temp directory"); 102ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 112ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonstruct Test { 122ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson void (*fn)(void); 132ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson const char *name; 142ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson}; 152ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 162ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonstatic Test tests[10000]; 172ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonstatic int ntests; 182ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 192ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonvoid RegisterTest(void (*fn)(void), const char *name) { 202ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson tests[ntests].fn = fn; 212ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson tests[ntests++].name = name; 222ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson} 232ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 242ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonnamespace re2 { 252ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonint64 VirtualProcessSize() { 262ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson struct rusage ru; 272ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson getrusage(RUSAGE_SELF, &ru); 282ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson return (int64)ru.ru_maxrss*1024; 292ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson} 302ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson} // namespace re2 312ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 322ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonint main(int argc, char **argv) { 332ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson for (int i = 0; i < ntests; i++) { 342ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson printf("%s\n", tests[i].name); 352ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson tests[i].fn(); 362ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson } 372ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson printf("PASS\n"); 382ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson return 0; 392ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson} 40