From 120253d566fcc6015b68d58195f957fab41af723 Mon Sep 17 00:00:00 2001 From: stefanocasazza Date: Thu, 14 Dec 2017 16:48:16 +0100 Subject: [PATCH] sync+fix --- include/ulib/json/value.h | 88 ++++++++++++++++------ include/ulib/serialize/flatbuffers.h | 10 ++- include/ulib/ssl/net/sslsocket.h | 2 +- include/ulib/string.h | 86 +++++++++++++-------- include/ulib/utility/http2.h | 4 +- include/ulib/utility/uhttp.h | 4 +- src/ulib/json/value.cpp | 12 +-- src/ulib/notifier.cpp | 23 +++--- src/ulib/utility/http2.cpp | 4 +- src/ulib/utility/uhttp.cpp | 2 +- tests/examples/web_server.sh | 25 +++--- tests/examples/web_server_multiclient.test | 5 +- tests/ulib/README | 8 +- 13 files changed, 173 insertions(+), 100 deletions(-) diff --git a/include/ulib/json/value.h b/include/ulib/json/value.h index b13d4f38..5f8a183d 100644 --- a/include/ulib/json/value.h +++ b/include/ulib/json/value.h @@ -361,11 +361,13 @@ public: * consumption, but may be usefull to support feature such as RPC where bandwith is limited */ + static uint32_t size_output; + UString output() const { U_TRACE_NO_PARAM(0, "UValue::output()") - UString result(U_max(size+100U,U_CAPACITY)); + UString result(U_max(size_output+100U,U_CAPACITY)); pstringify = result.data(); // buffer to stringify json @@ -380,7 +382,7 @@ public: { U_TRACE_NO_PARAM(0, "UValue::prettify()") - UString result(size*2+800U); + UString result(size_output*2+800U); pstringify = result.data(); // buffer to stringify json @@ -397,7 +399,7 @@ public: { U_TRACE(0, "UValue::stringify(%V,%p)", result.rep, &json) - (void) result.reserve(json.size+100U); + (void) result.reserve(U_max(json.size_output+100U,U_CAPACITY)); pstringify = result.pend(); // buffer to stringify json @@ -607,7 +609,6 @@ protected: union jval pkey, // only if binded to an object value; - static uint32_t size; static UFlatBuffer* pfb; static char* pstringify; // buffer to stringify json @@ -1211,7 +1212,7 @@ public: { U_TRACE(0, "UJsonTypeHandler::toJSON(%V)", json.rep) - json.push_back('{'); + json.__push('{'); ((T*)pval)->toJSON(json); @@ -1266,6 +1267,8 @@ template void JSON_OBJ_stringify(UString& str, T& obj) { U_TRACE(0, "JSON_OBJ_stringify(%V,%p)", str.rep, &obj) + (void) str.reserve(U_max(UValue::size_output+100U,U_CAPACITY)); + UJsonTypeHandler(obj).toJSON(str); U_INTERNAL_DUMP("str(%u) = %V", str.size(), str.rep) @@ -1301,7 +1304,11 @@ public: { U_TRACE(0, "UJsonTypeHandler::toJSON(%V)", json.rep) - (void) json.append(U_CONSTANT_TO_PARAM("null")); + char* ptr = json.pend(); + + u_put_unalignedp32(ptr, U_MULTICHAR_CONSTANT32('n','u','l','l')); + + json.rep->_length += 4; U_INTERNAL_DUMP("json(%u) = %V", json.size(), json.rep) } @@ -1338,7 +1345,22 @@ public: { U_TRACE(0, "UJsonTypeHandler::toJSON(%V)", json.rep) - (void) json.append(*(*(bool*)pval ? UString::str_true : UString::str_false)); + char* ptr = json.pend(); + + if (*(bool*)pval) + { + u_put_unalignedp32(ptr, U_MULTICHAR_CONSTANT32('t','r','u','e')); + + json.rep->_length += 4; + } + else + { + u_put_unalignedp32(ptr, U_MULTICHAR_CONSTANT32('f','a','l','s')); + + ptr[4] = 'e'; + + json.rep->_length += 5; + } U_INTERNAL_DUMP("json(%u) = %V", json.size(), json.rep) } @@ -1375,7 +1397,7 @@ public: { U_TRACE(0, "UJsonTypeHandler::toJSON(%V)", json.rep) - json.push_back(*(char*)pval); + json.__push(*(char*)pval); U_INTERNAL_DUMP("json(%u) = %V", json.size(), json.rep) } @@ -1412,7 +1434,7 @@ public: { U_TRACE(0, "UJsonTypeHandler::toJSON(%V)", json.rep) - json.push_back(*(unsigned char*)pval); + json.__push(*(unsigned char*)pval); U_INTERNAL_DUMP("json(%u) = %V", json.size(), json.rep) } @@ -1956,7 +1978,7 @@ public: uvector* pvec = (uvector*)pval; - json.push_back('['); + json.__push('['); if (pvec->_length) { @@ -1969,11 +1991,11 @@ public: if (++ptr >= end) break; - json.push_back(','); + json.__push(','); } } - json.push_back(']'); + json.__push(']'); U_INTERNAL_DUMP("json(%u) = %V", json.size(), json.rep) } @@ -2045,7 +2067,7 @@ public: uvectorbase* pvec = (uvectorbase*)pval; - json.push_back('['); + json.__push('['); if (pvec->_length) { @@ -2058,11 +2080,11 @@ public: if (++ptr >= end) break; - json.push_back(','); + json.__push(','); } } - json.push_back(']'); + json.__push(']'); U_INTERNAL_DUMP("json(%u) = %V", json.size(), json.rep) } @@ -2132,10 +2154,17 @@ public: uhashmap* pmap = (uhashmap*)pval; - if (pmap->empty()) (void) json.append(U_CONSTANT_TO_PARAM("{}")); + if (pmap->empty()) + { + char* ptr = json.pend(); + + u_put_unalignedp16(ptr, U_MULTICHAR_CONSTANT16('{','}')); + + json.rep->_length += 2; + } else { - json.push_back('{'); + json.__push('{'); # ifndef HAVE_OLD_IOSTREAM do { json.toJSON(pmap->getKey(), UJsonTypeHandler(*(pmap->elem()))); } while (pmap->next()); @@ -2217,7 +2246,7 @@ public: if (pmap->first()) { - json.push_back('{'); + json.__push('{'); do { json.toJSON(pmap->getKey(), UJsonTypeHandler(*(UStringRep*)(pmap->elem()))); } while (pmap->next()); @@ -2225,7 +2254,11 @@ public: } else { - (void) json.append(U_CONSTANT_TO_PARAM("{}")); + char* ptr = json.pend(); + + u_put_unalignedp16(ptr, U_MULTICHAR_CONSTANT16('{','}')); + + json.rep->_length += 2; } U_INTERNAL_DUMP("json(%u) = %V", json.size(), json.rep) @@ -2306,7 +2339,7 @@ public: stdvector* pvec = (stdvector*)pval; uint32_t i = 0, n = pvec->size(); - json.push_back('['); + json.__push('['); while (true) { @@ -2314,10 +2347,10 @@ public: if (++i >= n) break; - json.push_back(','); + json.__push(','); } - json.push_back(']'); + json.__push(']'); U_INTERNAL_DUMP("json(%u) = %V", json.size(), json.rep) } @@ -2391,10 +2424,17 @@ public: stringtobitmaskmap* pmap = (stringtobitmaskmap*)pval; - if (pmap->empty()) (void) json.append(U_CONSTANT_TO_PARAM("{}")); + if (pmap->empty()) + { + char* ptr = json.pend(); + + u_put_unalignedp16(ptr, U_MULTICHAR_CONSTANT16('{','}')); + + json.rep->_length += 2; + } else { - json.push_back('{'); + json.__push('{'); // this is is C++17 vvv for (const auto & [ key, value ] : *pmap) json.toJSON(key, UJsonTypeHandler(value)); diff --git a/include/ulib/serialize/flatbuffers.h b/include/ulib/serialize/flatbuffers.h index 49c09ea0..ae2dd6bf 100644 --- a/include/ulib/serialize/flatbuffers.h +++ b/include/ulib/serialize/flatbuffers.h @@ -337,7 +337,12 @@ protected: } private: - UFlatBufferValue() {} + UFlatBufferValue() + { + // coverity[uninit_ctor] +# ifdef U_COVERITY_FALSE_POSITIVE +# endif + } friend class UFlatBuffer; @@ -360,6 +365,9 @@ public: // coverity[uninit_ctor] # ifdef U_COVERITY_FALSE_POSITIVE + u_ = 0ULL; + type_ = + min_bit_width_ = BIT_WIDTH_8; reset(); # endif } diff --git a/include/ulib/ssl/net/sslsocket.h b/include/ulib/ssl/net/sslsocket.h index 0ac2d71f..031f5c08 100644 --- a/include/ulib/ssl/net/sslsocket.h +++ b/include/ulib/ssl/net/sslsocket.h @@ -327,7 +327,7 @@ private: # endif # if U_USE_ALPN - U_SYSCALL_VOID(SSL_CTX_set_alpn_select_cb, "%p,%p,%p", ctx, selectProto, 0); // ALPN selection callback + U_SYSCALL_VOID(SSL_CTX_set_alpn_select_cb, "%p,%p,%p", ctx, selectProto, U_NULLPTR); // ALPN selection callback # endif } #endif diff --git a/include/ulib/string.h b/include/ulib/string.h index dd74664f..692d40b6 100644 --- a/include/ulib/string.h +++ b/include/ulib/string.h @@ -2234,10 +2234,9 @@ public: U_ASSERT_MAJOR(space(), 12) - uint32_t sz = size(); - char* ptr = c_pointer(sz); + char* ptr = pend(); - rep->_length = sz + u_num2str32(number, ptr) - ptr; + rep->_length += u_num2str32(number, ptr) - ptr; U_INTERNAL_ASSERT(invariant()) } @@ -2248,10 +2247,9 @@ public: U_ASSERT_MAJOR(space(), 12) - uint32_t sz = size(); - char* ptr = c_pointer(sz); + char* ptr = pend(); - rep->_length = sz + u_num2str32s(number, ptr) - ptr; + rep->_length += u_num2str32s(number, ptr) - ptr; U_INTERNAL_ASSERT(invariant()) } @@ -2262,10 +2260,9 @@ public: U_ASSERT_MAJOR(space(), 22) - uint32_t sz = size(); - char* ptr = c_pointer(sz); + char* ptr = pend(); - rep->_length = sz + u_num2str64(number, ptr) - ptr; + rep->_length += u_num2str64(number, ptr) - ptr; U_INTERNAL_ASSERT(invariant()) } @@ -2276,10 +2273,9 @@ public: U_ASSERT_MAJOR(space(), 22) - uint32_t sz = size(); - char* ptr = c_pointer(sz); + char* ptr = pend(); - rep->_length = sz + u_num2str64s(number, ptr) - ptr; + rep->_length += u_num2str64s(number, ptr) - ptr; U_INTERNAL_ASSERT(invariant()) } @@ -2288,12 +2284,11 @@ public: { U_TRACE(0, "UString::appendNumberDouble(%g)", number) - U_ASSERT_MAJOR(space(), 32) + U_ASSERT_MAJOR(space(), 22) - uint32_t sz = size(); - char* ptr = c_pointer(sz); + char* ptr = pend(); - rep->_length = sz + u_dtoa(number, ptr) - ptr; + rep->_length += u_dtoa(number, ptr) - ptr; U_INTERNAL_ASSERT(invariant()) } @@ -2304,12 +2299,11 @@ public: U_ASSERT_MAJOR(space(), tlen) - uint32_t sz = size(); - char* ptr = c_pointer(sz); + char* ptr = pend(); U_MEMCPY(ptr, t, tlen); - rep->_length = sz + tlen; + rep->_length += tlen; U_INTERNAL_ASSERT(invariant()) } @@ -2318,9 +2312,10 @@ public: { U_TRACE(0, "UString::appendDataQuoted(%.*S,%u)", tlen, t, tlen) + U_ASSERT_MAJOR(space(), tlen+2) U_INTERNAL_ASSERT_EQUALS(u_is_quoted(t, tlen), false) - char* ptr = __append(U_CONSTANT_SIZE("\"\"") + tlen); + char* ptr = pend(); *ptr++ = '"'; @@ -2328,6 +2323,8 @@ public: ptr[tlen] = '"'; + rep->_length += tlen+2; + U_INTERNAL_ASSERT(invariant()) } @@ -2413,32 +2410,48 @@ public: { U_TRACE(0, "UString::toJSON(%.*S,%u,%p)", sz, name, sz, &member) + U_ASSERT_MAJOR(space(), sz+6) + U_INTERNAL_ASSERT_MAJOR(sz, 0) U_INTERNAL_ASSERT(u_is_quoted(name, sz)) - (void) append(name, sz); + char* ptr = pend(); - push_back(':'); + U_MEMCPY(ptr, name, sz); + + ptr[sz] = ':'; + + rep->_length += sz+1; member.toJSON(*this); - push_back(','); - - U_INTERNAL_ASSERT(invariant()) + __push(','); } template void toJSON(const UString& name, UJsonTypeHandler member) { U_TRACE(0, "UString::toJSON(%V,%p)", name.rep, &member) - appendDataQuoted(U_STRING_TO_PARAM(name)); + uint32_t tlen = name.size(); + const char* t = name.data(); - push_back(':'); + U_ASSERT_MAJOR(space(), tlen+6) + U_INTERNAL_ASSERT_MAJOR(tlen, 0) + U_INTERNAL_ASSERT_EQUALS(u_is_quoted(t, tlen), false) + + char* ptr = pend(); + + *ptr++ = '"'; + + U_MEMCPY(ptr, t, tlen); + ptr += tlen; + + u_put_unalignedp16(ptr, U_MULTICHAR_CONSTANT16('"',':')); + + rep->_length += tlen+3; member.toJSON(*this); - push_back(','); - - U_INTERNAL_ASSERT(invariant()) + __push(','); } // ----------------------------------------------------------------------------------------------------------------------- @@ -2449,6 +2462,19 @@ private: char* __append(uint32_t n); char* __replace(uint32_t pos, uint32_t n1, uint32_t n2); + void __push(uint8_t c) + { + U_TRACE(0, "UString::__push(%u)", c) + + U_ASSERT_MAJOR(space(), 1) + + uint8_t* ptr = (uint8_t*)(rep->str + rep->_length++); + + *ptr = c; + + U_INTERNAL_ASSERT(invariant()) + } + template friend class UJsonTypeHandler; }; diff --git a/include/ulib/utility/http2.h b/include/ulib/utility/http2.h index 76c598ec..d9df1fa9 100644 --- a/include/ulib/utility/http2.h +++ b/include/ulib/utility/http2.h @@ -136,7 +136,7 @@ public: { U_TRACE(0+256, "UHTTP2::Connection::preallocate(%u)", max_connection) - U_INTERNAL_ASSERT_EQUALS(vConnection, 0) + U_INTERNAL_ASSERT_EQUALS(vConnection, U_NULLPTR) U_INTERNAL_DUMP("sizeof(Connection) = %u sizeof(Stream) = %u", sizeof(Connection), sizeof(Stream)) @@ -665,7 +665,7 @@ protected: entry->value->release(); entry->name = - entry->value = 0; + entry->value = U_NULLPTR; } static void evictHpackDynTblFirstEntry(HpackDynamicTable* dyntbl) diff --git a/include/ulib/utility/uhttp.h b/include/ulib/utility/uhttp.h index a2792da1..0702618d 100644 --- a/include/ulib/utility/uhttp.h +++ b/include/ulib/utility/uhttp.h @@ -1275,9 +1275,9 @@ private: } #ifdef U_HTTP2_DISABLE - static UString getHeaderFromCache(uint32_t idx) { return getDataFromCache(file_data->array, idx); } + static UString getHeaderFromCache(uint32_t idx) { return getDataFromCache(file_data->array, idx); } #else - static UString getHeaderFromCache(uint32_t idx) { return getDataFromCache((U_http_version != '2' ? file_data->array : (idx /= 2, file_data->http2)), idx); } + static UString getHeaderFromCache(uint32_t idx) { return (U_http_version != '2' ? getDataFromCache(file_data->array, idx) : getDataFromCache(file_data->http2, idx / 2)); } #endif static UString getBodyFromCache() { return getDataFromCache(file_data->array, 0); } diff --git a/src/ulib/json/value.cpp b/src/ulib/json/value.cpp index b02bd9c4..ba8ad3eb 100644 --- a/src/ulib/json/value.cpp +++ b/src/ulib/json/value.cpp @@ -18,7 +18,7 @@ int UValue::pos; int UValue::jsonParseFlags; char* UValue::pstringify; -uint32_t UValue::size; +uint32_t UValue::size_output; UValue::jval UValue::o; UFlatBuffer* UValue::pfb; UValue::parser_stack_data UValue::sd[U_JSON_PARSE_STACK_SIZE]; @@ -994,13 +994,13 @@ void UValue::toFlatBuffer(UFlatBuffer& fb, UString& result) const { U_TRACE(0, "UValue::toFlatBuffer(%p,%p)", &fb, &result) - U_INTERNAL_DUMP("size = %u UFlatBuffer::getBufferMax() = %u UFlatBuffer::getStackMax() = %u", size, UFlatBuffer::getBufferMax(), UFlatBuffer::getStackMax()) + U_INTERNAL_DUMP("size_output = %u UFlatBuffer::getBufferMax() = %u UFlatBuffer::getStackMax() = %u", size_output, UFlatBuffer::getBufferMax(), UFlatBuffer::getStackMax()) uint8_t* prev_stack; uint8_t* prev_buffer; uint8_t stack[64 * 1024]; uint32_t end, prev_stack_size, prev_buffer_size; - bool breset1 = (size > UFlatBuffer::getBufferMax()), + bool breset1 = (size_output > UFlatBuffer::getBufferMax()), breset2 = (sizeof(stack) > UFlatBuffer::getStackMax()); // buffer to serialize json @@ -1011,14 +1011,14 @@ void UValue::toFlatBuffer(UFlatBuffer& fb, UString& result) const prev_buffer = UFlatBuffer::getBuffer(); prev_buffer_size = UFlatBuffer::getBufferMax(); - (void) result.reserve(size+100U); + (void) result.reserve(U_max(size_output+100U,U_CAPACITY)); UFlatBuffer::setBuffer((uint8_t*)(pstringify = result.data()), result.capacity()); } if (breset2) { - U_INTERNAL_ASSERT_MINOR(size, sizeof(stack)) + U_INTERNAL_ASSERT_MINOR(size_output, sizeof(stack)) prev_stack = UFlatBuffer::getStack(); prev_stack_size = UFlatBuffer::getStackMax(); @@ -1160,7 +1160,7 @@ bool UValue::parse(const UString& document) const char* start; uint64_t integerPart; const char* s = document.data(); - const char* end = s + (size = document.size()); + const char* end = s + (size_output = document.size()); uint32_t sz, significandDigit, decimalDigit, exponent; bool minus = false, colon = false, comma = false, separator = true; diff --git a/src/ulib/notifier.cpp b/src/ulib/notifier.cpp index 4bd032ea..1794826b 100644 --- a/src/ulib/notifier.cpp +++ b/src/ulib/notifier.cpp @@ -619,20 +619,23 @@ loop2: if (pevents->events) { handler_event = (UEventFd*)pevents->data.ptr; - U_INTERNAL_DUMP("i = %d handler_event->fd = %d ", i, handler_event->fd) + U_INTERNAL_DUMP("i = %d handler_event->fd = %d", i, handler_event->fd) - U_INTERNAL_ASSERT_DIFFERS(handler_event->fd, -1) + // U_INTERNAL_ASSERT_DIFFERS(handler_event->fd, -1) - if (handler_event->handlerRead() == U_NOTIFIER_DELETE) + if (handler_event->fd != -1) { - handlerDelete(handler_event); + if (handler_event->handlerRead() == U_NOTIFIER_DELETE) + { + handlerDelete(handler_event); - pevents->events = 0; - } - else - { - if (U_ClientImage_state != U_PLUGIN_HANDLER_AGAIN) bloop1 = true; - else pevents->events = 0; + pevents->events = 0; + } + else + { + if (U_ClientImage_state != U_PLUGIN_HANDLER_AGAIN) bloop1 = true; + else pevents->events = 0; + } } } diff --git a/src/ulib/utility/http2.cpp b/src/ulib/utility/http2.cpp index 608cf65b..065af7de 100644 --- a/src/ulib/utility/http2.cpp +++ b/src/ulib/utility/http2.cpp @@ -3250,7 +3250,7 @@ bool UHTTP2::initRequest() pConnection->itable.clear(); // NB: we can't clear it before because UClientImage_Base::getRequestUri() depend on it... pConnection->state = CONN_STATE_OPEN; - pConnection->bug_client = 0; + pConnection->bug_client = U_NULLPTR; U_RETURN(false); } @@ -3877,7 +3877,7 @@ void UHTTP2::clearHpackDynTbl(HpackDynamicTable* dyntbl) dyntbl->entry_capacity = dyntbl->entry_start_index = dyntbl->hpack_size = 0; - dyntbl->entries = 0; + dyntbl->entries = U_NULLPTR; U_INTERNAL_DUMP("num_entries = %u entry_capacity = %u entry_start_index = %u hpack_size = %u hpack_capacity = %u hpack_max_capacity = %u", dyntbl->num_entries, dyntbl->entry_capacity, dyntbl->entry_start_index, dyntbl->hpack_size, dyntbl->hpack_capacity, dyntbl->hpack_max_capacity) diff --git a/src/ulib/utility/uhttp.cpp b/src/ulib/utility/uhttp.cpp index cbbe93ec..26c51b78 100644 --- a/src/ulib/utility/uhttp.cpp +++ b/src/ulib/utility/uhttp.cpp @@ -2223,7 +2223,7 @@ const char* UHTTP::getHeaderValuePtr(const char* name, uint32_t name_len, bool n *UClientImage_Base::request = UHTTP2::pConnection->itable.at(name, name_len); - return (*UClientImage_Base::request ? UClientImage_Base::request->data() : (const char*)0); + return (*UClientImage_Base::request ? UClientImage_Base::request->data() : (const char*)U_NULLPTR); } return getHeaderValuePtr(*UClientImage_Base::request, name, name_len, nocase); diff --git a/tests/examples/web_server.sh b/tests/examples/web_server.sh index 644d0a20..54bcd449 100755 --- a/tests/examples/web_server.sh +++ b/tests/examples/web_server.sh @@ -4,7 +4,8 @@ (cd benchmark; rm -f db; creat_link FrameworkBenchmarks/ULib/db db) - DOC_ROOT=sse_example + DOC_ROOT=docroot +#DOC_ROOT=sse_example #DOC_ROOT=ruby/blog #DOC_ROOT=benchmark/docroot @@ -77,25 +78,19 @@ userver { #PLUGIN "ssi http" #ORM_DRIVER "sqlite mysql" #ORM_DRIVER sqlite - DOCUMENT_ROOT sse_example - PLUGIN_DIR ../../../src/ulib/net/server/plugin/.libs - ORM_DRIVER_DIR ../../../src/ulib/orm/driver/.libs -#DOCUMENT_ROOT docroot -#PLUGIN_DIR ../../../src/ulib/net/server/plugin/.libs -#ORM_DRIVER_DIR ../../../src/ulib/orm/driver/.libs -#DOCUMENT_ROOT JONATHAN/docroot -#DOCUMENT_ROOT benchmark/docroot -#PLUGIN_DIR ../../../../src/ulib/net/server/plugin/.libs -#ORM_DRIVER_DIR ../../../../src/ulib/orm/driver/.libs #DOCUMENT_ROOT . #PLUGIN_DIR ../../src/ulib/net/server/plugin/.libs #ORM_DRIVER_DIR ../../src/ulib/orm/driver/.libs #DOCUMENT_ROOT php -#PLUGIN_DIR ../../../src/ulib/net/server/plugin/.libs -#ORM_DRIVER_DIR ../../../src/ulib/orm/driver/.libs + DOCUMENT_ROOT docroot +#DOCUMENT_ROOT sse_example + PLUGIN_DIR ../../../src/ulib/net/server/plugin/.libs + ORM_DRIVER_DIR ../../../src/ulib/orm/driver/.libs +#DOCUMENT_ROOT JONATHAN/docroot +#DOCUMENT_ROOT benchmark/docroot #DOCUMENT_ROOT ruby/blog/public -#PLUGIN_DIR ../../../../../src/ulib/net/server/plugin/.libs -#ORM_DRIVER_DIR ../../../../../src/ulib/orm/driver/.libs +#PLUGIN_DIR ../../../../src/ulib/net/server/plugin/.libs +#ORM_DRIVER_DIR ../../../../src/ulib/orm/driver/.libs } http { #ALIAS "[ / /100.html ]" diff --git a/tests/examples/web_server_multiclient.test b/tests/examples/web_server_multiclient.test index e73a95e3..d829c8f0 100755 --- a/tests/examples/web_server_multiclient.test +++ b/tests/examples/web_server_multiclient.test @@ -70,8 +70,9 @@ start_prg_background userver_tcp -c inp/webserver.cfg wait_server_ready localhost 8080 -#ab -k -n 2 -c 2 http://$ADDRESS:8080/servlet/benchmarking?name=stefano >/dev/null 2>&1 - ab -k -n 100 -c 2 http://127.0.0.1:8080/servlet/benchmarking?name=stefano >/dev/null 2>&1 +#ab -k -n 2 -c 2 "http://$ADDRESS:8080/servlet/benchmarking?name=stefano" >/dev/null 2>&1 + ab -k -n 100 -c 2 'http://127.0.0.1:8080/servlet/benchmarking?name=stefano' >/dev/null 2>&1 +#ab -k -n 100000 -c 1000 'http://127.0.0.1:8080/servlet/benchmarking?name=stefano' >/tmp/ab.txt 2>&1 $SLEEP kill_server userver_tcp diff --git a/tests/ulib/README b/tests/ulib/README index e02a0dc3..d97d0f68 100644 --- a/tests/ulib/README +++ b/tests/ulib/README @@ -4,11 +4,11 @@ Four Debian releases are available on the main site: Debian 7.11, or wheezy. Access this release through dists/oldoldstable Debian 7.11 was released Saturday, 4th June 2016. -Debian 8.9, or jessie. Access this release through dists/oldstable -Debian 8.9 was released Saturday, 22nd July 2017. +Debian 8.10, or jessie. Access this release through dists/oldstable +Debian 8.10 was released Saturday, 9th December 2017. -Debian 9.2, or stretch. Access this release through dists/stable -Debian 9.2 was released Saturday, 7th October 2017. +Debian 9.3, or stretch. Access this release through dists/stable +Debian 9.3 was released Saturday, 9th December 2017. Testing, or buster. Access this release through dists/testing. The current tested development snapshot is named buster. Packages which