6c2a76b3e2ccd32c35814b6e0f54da00190749d7Evan Hunt * Copyright (C) 2014-2016 Internet Systems Consortium, Inc. ("ISC")
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * file, You can obtain one at http://mozilla.org/MPL/2.0/.
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt atf_tc_set_md_var(tc, "descr", "reserve space in dynamic buffers");
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt * 1024 bytes should already be available, so this call does
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt * This call should grow it to 2048 bytes as only 1024 bytes are
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt * available in the buffer.
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt * 2048 bytes should already be available, so this call does
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt * This call should grow it to 4096 bytes as only 2048 bytes are
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt * available in the buffer.
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt /* Consume some of the buffer so we can run the next test. */
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt * This call should fail and leave buffer untouched.
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt atf_tc_set_md_var(tc, "descr", "reallocate dynamic buffers");
7a00d69909ace5dc11bcff9c1e07c311f92a7f8eWitold Krecicki atf_tc_set_md_var(tc, "descr", "dynamic buffer automatic reallocation");
7a00d69909ace5dc11bcff9c1e07c311f92a7f8eWitold Krecicki result = isc_buffer_allocate(mctx, &b, last_length);
7a00d69909ace5dc11bcff9c1e07c311f92a7f8eWitold Krecicki for (i = 0; i < 1000; i++) {
7a00d69909ace5dc11bcff9c1e07c311f92a7f8eWitold Krecicki isc_buffer_putstr(b, "thisisa24charslongstring");
7a00d69909ace5dc11bcff9c1e07c311f92a7f8eWitold Krecicki ATF_CHECK(b->length-last_length >= 1000*24);
7a00d69909ace5dc11bcff9c1e07c311f92a7f8eWitold Krecicki for (i = 0; i < 10000; i++) {
7a00d69909ace5dc11bcff9c1e07c311f92a7f8eWitold Krecicki ATF_CHECK(b->length-last_length >= 10000*1);
7a00d69909ace5dc11bcff9c1e07c311f92a7f8eWitold Krecicki for (i = 0; i < 10000; i++) {
7a00d69909ace5dc11bcff9c1e07c311f92a7f8eWitold Krecicki ATF_CHECK(b->length-last_length >= 10000*2);
7a00d69909ace5dc11bcff9c1e07c311f92a7f8eWitold Krecicki for (i = 0; i < 10000; i++) {
7a00d69909ace5dc11bcff9c1e07c311f92a7f8eWitold Krecicki ATF_CHECK(b->length-last_length >= 10000*3);
7a00d69909ace5dc11bcff9c1e07c311f92a7f8eWitold Krecicki for (i = 0; i < 10000; i++) {