OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
11 #include "base/rand_util.h" | 11 #include "base/rand_util.h" |
12 #include "chromecast/base/scoped_temp_file.h" | 12 #include "chromecast/base/scoped_temp_file.h" |
13 #include "chromecast/crash/linux/dummy_minidump_generator.h" | 13 #include "chromecast/crash/linux/dummy_minidump_generator.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
15 | 15 |
16 namespace chromecast { | 16 namespace chromecast { |
17 | 17 |
18 TEST(DummyMinidumpGeneratorTest, GenerateFailsWithInvalidPath) { | 18 TEST(DummyMinidumpGeneratorTest, GenerateFailsWithInvalidPath) { |
19 // Create directory in which to put minidump. | 19 // Create directory in which to put minidump. |
20 base::ScopedTempDir minidump_dir; | 20 base::ScopedTempDir minidump_dir; |
21 ASSERT_TRUE(minidump_dir.CreateUniqueTempDir()); | 21 ASSERT_TRUE(minidump_dir.CreateUniqueTempDir()); |
22 | 22 |
23 // Attempt to generate a minidump from an invalid path. | 23 // Attempt to generate a minidump from an invalid path. |
24 DummyMinidumpGenerator generator("/path/does/not/exist/minidump.dmp"); | 24 DummyMinidumpGenerator generator("/path/does/not/exist/minidump.dmp"); |
25 ASSERT_FALSE( | 25 ASSERT_FALSE(generator.Generate( |
26 generator.Generate(minidump_dir.path().Append("minidump.dmp").value())); | 26 minidump_dir.GetPath().Append("minidump.dmp").value())); |
27 } | 27 } |
28 | 28 |
29 TEST(DummyMinidumpGeneratorTest, GenerateSucceedsWithSmallSource) { | 29 TEST(DummyMinidumpGeneratorTest, GenerateSucceedsWithSmallSource) { |
30 // Create directory in which to put minidump. | 30 // Create directory in which to put minidump. |
31 base::ScopedTempDir minidump_dir; | 31 base::ScopedTempDir minidump_dir; |
32 ASSERT_TRUE(minidump_dir.CreateUniqueTempDir()); | 32 ASSERT_TRUE(minidump_dir.CreateUniqueTempDir()); |
33 | 33 |
34 // Create a fake minidump file. | 34 // Create a fake minidump file. |
35 ScopedTempFile fake_minidump; | 35 ScopedTempFile fake_minidump; |
36 const std::string data("Test contents of the minidump file.\n"); | 36 const std::string data("Test contents of the minidump file.\n"); |
37 ASSERT_EQ(static_cast<int>(data.size()), | 37 ASSERT_EQ(static_cast<int>(data.size()), |
38 base::WriteFile(fake_minidump.path(), data.c_str(), data.size())); | 38 base::WriteFile(fake_minidump.path(), data.c_str(), data.size())); |
39 | 39 |
40 DummyMinidumpGenerator generator(fake_minidump.path().value()); | 40 DummyMinidumpGenerator generator(fake_minidump.path().value()); |
41 base::FilePath new_minidump = minidump_dir.path().Append("minidump.dmp"); | 41 base::FilePath new_minidump = minidump_dir.GetPath().Append("minidump.dmp"); |
42 EXPECT_TRUE(generator.Generate(new_minidump.value())); | 42 EXPECT_TRUE(generator.Generate(new_minidump.value())); |
43 | 43 |
44 // Original file should not exist, and new file should contain original | 44 // Original file should not exist, and new file should contain original |
45 // contents. | 45 // contents. |
46 std::string copied_data; | 46 std::string copied_data; |
47 EXPECT_FALSE(base::PathExists(fake_minidump.path())); | 47 EXPECT_FALSE(base::PathExists(fake_minidump.path())); |
48 ASSERT_TRUE(base::PathExists(new_minidump)); | 48 ASSERT_TRUE(base::PathExists(new_minidump)); |
49 EXPECT_TRUE(base::ReadFileToString(new_minidump, &copied_data)); | 49 EXPECT_TRUE(base::ReadFileToString(new_minidump, &copied_data)); |
50 EXPECT_EQ(data, copied_data); | 50 EXPECT_EQ(data, copied_data); |
51 } | 51 } |
52 | 52 |
53 TEST(DummyMinidumpGeneratorTest, GenerateSucceedsWithLargeSource) { | 53 TEST(DummyMinidumpGeneratorTest, GenerateSucceedsWithLargeSource) { |
54 // Create directory in which to put minidump. | 54 // Create directory in which to put minidump. |
55 base::ScopedTempDir minidump_dir; | 55 base::ScopedTempDir minidump_dir; |
56 ASSERT_TRUE(minidump_dir.CreateUniqueTempDir()); | 56 ASSERT_TRUE(minidump_dir.CreateUniqueTempDir()); |
57 | 57 |
58 // Create a large fake minidump file. | 58 // Create a large fake minidump file. |
59 ScopedTempFile fake_minidump; | 59 ScopedTempFile fake_minidump; |
60 size_t str_len = 32768 * 10 + 1; | 60 size_t str_len = 32768 * 10 + 1; |
61 const std::string data = base::RandBytesAsString(str_len); | 61 const std::string data = base::RandBytesAsString(str_len); |
62 | 62 |
63 // Write the string to the file. | 63 // Write the string to the file. |
64 ASSERT_EQ(static_cast<int>(data.size()), | 64 ASSERT_EQ(static_cast<int>(data.size()), |
65 base::WriteFile(fake_minidump.path(), data.c_str(), data.size())); | 65 base::WriteFile(fake_minidump.path(), data.c_str(), data.size())); |
66 | 66 |
67 base::FilePath new_minidump = minidump_dir.path().Append("minidump.dmp"); | 67 base::FilePath new_minidump = minidump_dir.GetPath().Append("minidump.dmp"); |
68 DummyMinidumpGenerator generator(fake_minidump.path().value()); | 68 DummyMinidumpGenerator generator(fake_minidump.path().value()); |
69 ASSERT_TRUE(generator.Generate(new_minidump.value())); | 69 ASSERT_TRUE(generator.Generate(new_minidump.value())); |
70 | 70 |
71 // Original file should not exist, and new file should contain original | 71 // Original file should not exist, and new file should contain original |
72 // contents. | 72 // contents. |
73 std::string copied_data; | 73 std::string copied_data; |
74 EXPECT_FALSE(base::PathExists(fake_minidump.path())); | 74 EXPECT_FALSE(base::PathExists(fake_minidump.path())); |
75 ASSERT_TRUE(base::PathExists(new_minidump)); | 75 ASSERT_TRUE(base::PathExists(new_minidump)); |
76 EXPECT_TRUE(base::ReadFileToString(new_minidump, &copied_data)); | 76 EXPECT_TRUE(base::ReadFileToString(new_minidump, &copied_data)); |
77 EXPECT_EQ(data, copied_data); | 77 EXPECT_EQ(data, copied_data); |
78 } | 78 } |
79 | 79 |
80 } // namespace chromecast | 80 } // namespace chromecast |
OLD | NEW |