| Index: test/cctest/test-log-utils.cc
|
| diff --git a/test/cctest/test-log-utils.cc b/test/cctest/test-log-utils.cc
|
| index 5966514f711a2edc154dbd50e1dd80715b69e2d2..64e59009917ed8e165705ea19912ee3e6d08e7d6 100644
|
| --- a/test/cctest/test-log-utils.cc
|
| +++ b/test/cctest/test-log-utils.cc
|
| @@ -37,12 +37,14 @@ static int ReadData(
|
| }
|
|
|
|
|
| -// Helper function used by CHECK_EQ to compare Vectors.
|
| +// Helper function used by CHECK_EQ to compare Vectors. Templatized to
|
| +// accept both "char" and "const char" vector contents.
|
| +template <typename E, typename V>
|
| static inline void CheckEqualsHelper(const char* file, int line,
|
| const char* expected_source,
|
| - const Vector<char>& expected,
|
| + const Vector<E>& expected,
|
| const char* value_source,
|
| - const Vector<char>& value) {
|
| + const Vector<V>& value) {
|
| if (expected.length() != value.length()) {
|
| V8_Fatal(file, line, "CHECK_EQ(%s, %s) failed\n"
|
| "# Vectors lengths differ: %d expected, %d found",
|
| @@ -62,7 +64,7 @@ static inline void CheckEqualsHelper(const char* file, int line,
|
|
|
|
|
| TEST(DynaBufSingleBlock) {
|
| - LogDynamicBuffer dynabuf(32, 32);
|
| + LogDynamicBuffer dynabuf(32, 32, "", 0);
|
| EmbeddedVector<char, 32> ref_buf;
|
| WriteData(&dynabuf, &ref_buf);
|
| EmbeddedVector<char, 32> buf;
|
| @@ -77,7 +79,7 @@ TEST(DynaBufSingleBlock) {
|
|
|
|
|
| TEST(DynaBufCrossBlocks) {
|
| - LogDynamicBuffer dynabuf(32, 128);
|
| + LogDynamicBuffer dynabuf(32, 128, "", 0);
|
| EmbeddedVector<char, 48> ref_buf;
|
| WriteData(&dynabuf, &ref_buf);
|
| CHECK_EQ(48, dynabuf.Write(ref_buf.start(), ref_buf.length()));
|
| @@ -93,7 +95,7 @@ TEST(DynaBufCrossBlocks) {
|
|
|
|
|
| TEST(DynaBufReadTruncation) {
|
| - LogDynamicBuffer dynabuf(32, 128);
|
| + LogDynamicBuffer dynabuf(32, 128, "", 0);
|
| EmbeddedVector<char, 128> ref_buf;
|
| WriteData(&dynabuf, &ref_buf);
|
| EmbeddedVector<char, 128> buf;
|
| @@ -105,4 +107,26 @@ TEST(DynaBufReadTruncation) {
|
| CHECK_EQ(ref_buf.SubVector(128 - 32, 128), tail_buf.SubVector(0, 32));
|
| }
|
|
|
| +
|
| +TEST(DynaBufSealing) {
|
| + const char* seal = "Sealed";
|
| + const int seal_size = strlen(seal);
|
| + LogDynamicBuffer dynabuf(32, 128, seal, seal_size);
|
| + EmbeddedVector<char, 100> ref_buf;
|
| + WriteData(&dynabuf, &ref_buf);
|
| + // Try to write data that will not fit in the buffer.
|
| + CHECK_EQ(0, dynabuf.Write(ref_buf.start(), 128 - 100 - seal_size + 1));
|
| + // Now the buffer is sealed, writing of any amount of data is forbidden.
|
| + CHECK_EQ(0, dynabuf.Write(ref_buf.start(), 1));
|
| + EmbeddedVector<char, 100> buf;
|
| + CHECK_EQ(100, ReadData(&dynabuf, 0, &buf));
|
| + CHECK_EQ(ref_buf, buf);
|
| + // Check the seal.
|
| + EmbeddedVector<char, 50> seal_buf;
|
| + CHECK_EQ(seal_size, ReadData(&dynabuf, 100, &seal_buf));
|
| + CHECK_EQ(v8::internal::CStrVector(seal), seal_buf.SubVector(0, seal_size));
|
| + // Verify that there's no data beyond the seal.
|
| + CHECK_EQ(0, ReadData(&dynabuf, 100 + seal_size, &buf));
|
| +}
|
| +
|
| #endif // ENABLE_LOGGING_AND_PROFILING
|
|
|