1 // Copyright (c) 2012 The Chromium OS Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include <syslog.h> 6 #include <gtest/gtest.h> 7 8 #include "dumper.h" 9 10 namespace { 11 12 TEST(DumperTest, SyslogDumper) { 13 struct dumper *dumper = syslog_dumper_create(LOG_ERR); 14 dumpf(dumper, "hello %d", 1); 15 dumpf(dumper, "world %d\n123", 2); 16 dumpf(dumper, "456\n"); 17 // The following should appear in syslog: 18 // dumper_unittest: hello 1world 2 19 // dumper_unittest: 123456 20 syslog_dumper_free(dumper); 21 } 22 23 TEST(DumperTest, MemDumper) { 24 struct dumper *dumper = mem_dumper_create(); 25 char *buf; 26 int size, i; 27 28 mem_dumper_get(dumper, &buf, &size); 29 EXPECT_STREQ("", buf); 30 31 dumpf(dumper, "hello %d\n", 1); 32 mem_dumper_get(dumper, &buf, &size); 33 EXPECT_STREQ("hello 1\n", buf); 34 EXPECT_EQ(8, size); 35 36 dumpf(dumper, "world %d", 2); 37 mem_dumper_get(dumper, &buf, &size); 38 EXPECT_STREQ("hello 1\nworld 2", buf); 39 EXPECT_EQ(15, size); 40 41 mem_dumper_clear(dumper); 42 mem_dumper_get(dumper, &buf, &size); 43 EXPECT_STREQ("", buf); 44 EXPECT_EQ(0, size); 45 46 for (i = 0; i < 1000; i++) { 47 dumpf(dumper, "a"); 48 } 49 mem_dumper_get(dumper, &buf, &size); 50 EXPECT_EQ(1000, strlen(buf)); 51 EXPECT_EQ(1000, 1000); 52 53 mem_dumper_free(dumper); 54 } 55 56 } // namespace 57 58 int main(int argc, char **argv) { 59 ::testing::InitGoogleTest(&argc, argv); 60 return RUN_ALL_TESTS(); 61 } 62