summaryrefslogtreecommitdiff
path: root/indra/llcorehttp/tests
diff options
context:
space:
mode:
authorMonty Brandenberg <monty@lindenlab.com>2012-06-01 21:30:45 -0400
committerMonty Brandenberg <monty@lindenlab.com>2012-06-01 21:30:45 -0400
commit4155301015525a242a79b9b3134e66d366bc0ebd (patch)
tree33a28e6a61ac82c1f8da4fcba4c949f7cd92c163 /indra/llcorehttp/tests
parentfb5a29c069d27611b6328fbc313382ef0914ffe9 (diff)
Do some work on BufferArray to make it a bit less naive about
chunking data. Remove the stateful use of a seek pointer so that shared read is possible (though maybe not interesting).
Diffstat (limited to 'indra/llcorehttp/tests')
-rw-r--r--indra/llcorehttp/tests/test_bufferarray.hpp89
1 files changed, 33 insertions, 56 deletions
diff --git a/indra/llcorehttp/tests/test_bufferarray.hpp b/indra/llcorehttp/tests/test_bufferarray.hpp
index ecbb5ef250..2ad9391d1c 100644
--- a/indra/llcorehttp/tests/test_bufferarray.hpp
+++ b/indra/llcorehttp/tests/test_bufferarray.hpp
@@ -67,7 +67,7 @@ void BufferArrayTestObjectType::test<1>()
// Try to read
char buffer[20];
- size_t read_len(ba->read(buffer, sizeof(buffer)));
+ size_t read_len(ba->read(0, buffer, sizeof(buffer)));
ensure("Read returns empty", 0 == read_len);
// release the implicit reference, causing the object to be released
@@ -92,16 +92,13 @@ void BufferArrayTestObjectType::test<2>()
char str1[] = "abcdefghij";
char buffer[256];
- size_t len = ba->write(str1, strlen(str1));
+ size_t len = ba->write(0, str1, strlen(str1));
ensure("Wrote length correct", strlen(str1) == len);
ensure("Recorded size correct", strlen(str1) == ba->size());
// read some data back
- len = ba->seek(2);
- ensure("Seek worked", 2 == len);
-
memset(buffer, 'X', sizeof(buffer));
- len = ba->read(buffer, 2);
+ len = ba->read(2, buffer, 2);
ensure("Read length correct", 2 == len);
ensure("Read content correct", 'c' == buffer[0] && 'd' == buffer[1]);
ensure("Read didn't overwrite", 'X' == buffer[2]);
@@ -130,32 +127,26 @@ void BufferArrayTestObjectType::test<3>()
size_t str1_len(strlen(str1));
char buffer[256];
- size_t len = ba->write(str1, str1_len);
+ size_t len = ba->write(0, str1, str1_len);
ensure("Wrote length correct", str1_len == len);
ensure("Recorded size correct", str1_len == ba->size());
// again...
- len = ba->write(str1, strlen(str1));
+ len = ba->write(str1_len, str1, strlen(str1));
ensure("Wrote length correct", str1_len == len);
ensure("Recorded size correct", (2 * str1_len) == ba->size());
// read some data back
- len = ba->seek(8);
- ensure("Seek worked", 8 == len);
-
memset(buffer, 'X', sizeof(buffer));
- len = ba->read(buffer, 4);
+ len = ba->read(8, buffer, 4);
ensure("Read length correct", 4 == len);
ensure("Read content correct", 'i' == buffer[0] && 'j' == buffer[1]);
ensure("Read content correct", 'a' == buffer[2] && 'b' == buffer[3]);
ensure("Read didn't overwrite", 'X' == buffer[4]);
// Read whole thing
- len = ba->seek(0);
- ensure("Seek worked (2)", 0 == len);
-
memset(buffer, 'X', sizeof(buffer));
- len = ba->read(buffer, sizeof(buffer));
+ len = ba->read(0, buffer, sizeof(buffer));
ensure("Read length correct", (2 * str1_len) == len);
ensure("Read content correct (3)", 0 == strncmp(buffer, str1, str1_len));
ensure("Read content correct (4)", 0 == strncmp(&buffer[str1_len], str1, str1_len));
@@ -185,33 +176,29 @@ void BufferArrayTestObjectType::test<4>()
char str2[] = "ABCDEFGHIJ";
char buffer[256];
- size_t len = ba->write(str1, str1_len);
+ size_t len = ba->write(0, str1, str1_len);
ensure("Wrote length correct", str1_len == len);
ensure("Recorded size correct", str1_len == ba->size());
// again...
- len = ba->write(str1, strlen(str1));
+ len = ba->write(str1_len, str1, strlen(str1));
ensure("Wrote length correct", str1_len == len);
ensure("Recorded size correct", (2 * str1_len) == ba->size());
// reposition and overwrite
- len = ba->seek(8);
- ensure("Seek worked", 8 == len);
- len = ba->write(str2, 4);
+ len = ba->write(8, str2, 4);
ensure("Overwrite length correct", 4 == len);
- // Leave position and read verifying content
+ // Leave position and read verifying content (stale really from seek() days)
memset(buffer, 'X', sizeof(buffer));
- len = ba->read(buffer, 4);
+ len = ba->read(12, buffer, 4);
ensure("Read length correct", 4 == len);
ensure("Read content correct", 'c' == buffer[0] && 'd' == buffer[1]);
ensure("Read content correct.2", 'e' == buffer[2] && 'f' == buffer[3]);
ensure("Read didn't overwrite", 'X' == buffer[4]);
// reposition and check
- len = ba->seek(6);
- memset(buffer, 'X', sizeof(buffer));
- len = ba->read(buffer, 8);
+ len = ba->read(6, buffer, 8);
ensure("Read length correct.2", 8 == len);
ensure("Read content correct.3", 'g' == buffer[0] && 'h' == buffer[1]);
ensure("Read content correct.4", 'A' == buffer[2] && 'B' == buffer[3]);
@@ -242,21 +229,18 @@ void BufferArrayTestObjectType::test<5>()
size_t str1_len(strlen(str1));
char buffer[256];
- size_t len = ba->write(str1, str1_len);
+ size_t len = ba->write(0, str1, str1_len);
ensure("Wrote length correct", str1_len == len);
ensure("Recorded size correct", str1_len == ba->size());
// again...
- len = ba->write(str1, strlen(str1));
+ len = ba->write(str1_len, str1, str1_len);
ensure("Wrote length correct", str1_len == len);
ensure("Recorded size correct", (2 * str1_len) == ba->size());
// read some data back
- len = ba->seek(8);
- ensure("Seek worked", 8 == len);
-
memset(buffer, 'X', sizeof(buffer));
- len = ba->read(buffer, 4);
+ len = ba->read(8, buffer, 4);
ensure("Read length correct", 4 == len);
ensure("Read content correct", 'i' == buffer[0] && 'j' == buffer[1]);
ensure("Read content correct.2", 'a' == buffer[2] && 'b' == buffer[3]);
@@ -264,7 +248,7 @@ void BufferArrayTestObjectType::test<5>()
// Read some more without repositioning
memset(buffer, 'X', sizeof(buffer));
- len = ba->read(buffer, sizeof(buffer));
+ len = ba->read(12, buffer, sizeof(buffer));
ensure("Read length correct", (str1_len - 2) == len);
ensure("Read content correct.3", 0 == strncmp(buffer, str1+2, str1_len-2));
ensure("Read didn't overwrite.2", 'X' == buffer[str1_len-1]);
@@ -294,31 +278,27 @@ void BufferArrayTestObjectType::test<6>()
size_t str2_len(strlen(str2));
char buffer[256];
- size_t len = ba->write(str1, str1_len);
+ size_t len = ba->write(0, str1, str1_len);
ensure("Wrote length correct", str1_len == len);
ensure("Recorded size correct", str1_len == ba->size());
// again...
- len = ba->write(str1, strlen(str1));
+ len = ba->write(str1_len, str1, strlen(str1));
ensure("Wrote length correct", str1_len == len);
ensure("Recorded size correct", (2 * str1_len) == ba->size());
// reposition and overwrite
- len = ba->seek(8);
- ensure("Seek worked", 8 == len);
- len = ba->write(str2, str2_len);
+ len = ba->write(8, str2, str2_len);
ensure("Overwrite length correct", str2_len == len);
// Leave position and read verifying content
memset(buffer, 'X', sizeof(buffer));
- len = ba->read(buffer, 0);
+ len = ba->read(8 + str2_len, buffer, 0);
ensure("Read length correct", 0 == len);
ensure("Read didn't overwrite", 'X' == buffer[0]);
// reposition and check
- len = ba->seek(0);
- memset(buffer, 'X', sizeof(buffer));
- len = ba->read(buffer, sizeof(buffer));
+ len = ba->read(0, buffer, sizeof(buffer));
ensure("Read length correct.2", (str1_len + str2_len - 2) == len);
ensure("Read content correct", 0 == strncmp(buffer, str1, str1_len-2));
ensure("Read content correct.2", 0 == strncmp(buffer+str1_len-2, str2, str2_len));
@@ -350,18 +330,17 @@ void BufferArrayTestObjectType::test<7>()
char buffer[256];
// 2x str1
- size_t len = ba->write(str1, str1_len);
- len = ba->write(str1, strlen(str1));
+ size_t len = ba->write(0, str1, str1_len);
+ len = ba->write(str1_len, str1, str1_len);
// reposition and overwrite
- len = ba->seek(6);
- len = ba->write(str2, 2);
+ len = ba->write(6, str2, 2);
ensure("Overwrite length correct", 2 == len);
- len = ba->write(str2, 2);
+ len = ba->write(8, str2, 2);
ensure("Overwrite length correct.2", 2 == len);
- len = ba->write(str2, 2);
+ len = ba->write(10, str2, 2);
ensure("Overwrite length correct.3", 2 == len);
// append some data
@@ -373,13 +352,12 @@ void BufferArrayTestObjectType::test<7>()
memcpy(out_buf, str1, str1_len);
// And some final writes
- len = ba->write(str2, 2);
+ len = ba->write(3 * str1_len + str2_len, str2, 2);
ensure("Write length correct.2", 2 == len);
// Check contents
memset(buffer, 'X', sizeof(buffer));
- ba->seek(0);
- len = ba->read(buffer, sizeof(buffer));
+ len = ba->read(0, buffer, sizeof(buffer));
ensure("Final buffer length correct", (3 * str1_len + str2_len + 2) == len);
ensure("Read content correct", 0 == strncmp(buffer, str1, 6));
ensure("Read content correct.2", 0 == strncmp(buffer + 6, str2, 2));
@@ -417,8 +395,8 @@ void BufferArrayTestObjectType::test<8>()
char buffer[256];
// 2x str1
- size_t len = ba->write(str1, str1_len);
- len = ba->write(str1, strlen(str1));
+ size_t len = ba->write(0, str1, str1_len);
+ len = ba->write(str1_len, str1, str1_len);
// zero-length allocate (we allow this with a valid pointer returned)
char * out_buf(ba->appendBufferAlloc(0));
@@ -430,12 +408,11 @@ void BufferArrayTestObjectType::test<8>()
ensure("Two zero-length appendBufferAlloc buffers distinct", out_buf != out_buf2);
// And some final writes
- len = ba->write(str2, str2_len);
+ len = ba->write(2 * str1_len, str2, str2_len);
// Check contents
memset(buffer, 'X', sizeof(buffer));
- ba->seek(0);
- len = ba->read(buffer, sizeof(buffer));
+ len = ba->read(0, buffer, sizeof(buffer));
ensure("Final buffer length correct", (2 * str1_len + str2_len) == len);
ensure("Read content correct.1", 0 == strncmp(buffer, str1, str1_len));
ensure("Read content correct.2", 0 == strncmp(buffer + str1_len, str1, str1_len));