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