Index: head/benchmarks/apib/Makefile =================================================================== --- head/benchmarks/apib/Makefile (revision 463477) +++ head/benchmarks/apib/Makefile (revision 463478) @@ -1,36 +1,37 @@ # Created by: Alexey Dokuchaev # $FreeBSD$ PORTNAME= apib PORTVERSION= 1.0 +PORTREVISION= 1 CATEGORIES= benchmarks www MAINTAINER= danfe@FreeBSD.org -COMMENT= Simple, fast HTTP performance-testing tool +COMMENT= Simple and fast HTTP performance testing tool LICENSE= APACHE20 LIB_DEPENDS= libapr-1.so:devel/apr1 USE_GITHUB= yes GH_ACCOUNT= apigee GH_TAGNAME= 7e8dea9 USES= localbase ssl GNU_CONFIGURE= yes CONFIGURE_ENV= APR_LOC="${LOCALBASE}/include/apr-1" PLIST_FILES= bin/apib bin/apibmon PORTEXAMPLES= env.sh pivot run.sh rungroup.sh tojson OPTIONS_DEFINE= EXAMPLES do-install: ${INSTALL_PROGRAM} ${WRKSRC}/apib ${WRKSRC}/apibmon \ ${STAGEDIR}${PREFIX}/bin do-install-EXAMPLES-on: @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} ${INSTALL_DATA} ${WRKSRC}/samplescripts/* ${STAGEDIR}${EXAMPLESDIR} .include Index: head/benchmarks/apib/files/patch-src_apib__cpu.c =================================================================== --- head/benchmarks/apib/files/patch-src_apib__cpu.c (nonexistent) +++ head/benchmarks/apib/files/patch-src_apib__cpu.c (revision 463478) @@ -0,0 +1,102 @@ +--- src/apib_cpu.c.orig 2017-08-28 22:38:37 UTC ++++ src/apib_cpu.c +@@ -14,6 +14,11 @@ + limitations under the License. + */ + ++#ifdef __FreeBSD__ ++#include ++#include ++#include ++#endif + #include + #include + #include +@@ -35,6 +40,9 @@ static double TicksPerSecond; + * for hyperthreading, etc. */ + int cpu_Count(apr_pool_t* pool) + { ++#ifdef _SC_NPROCESSORS_ONLN ++ return (int)sysconf(_SC_NPROCESSORS_ONLN); ++#else + apr_status_t s; + apr_file_t* f; + char buf[PROC_BUF_LEN]; +@@ -66,10 +74,19 @@ int cpu_Count(apr_pool_t* pool) + count = 1; + } + return count; ++#endif + } + + static int getTicks(CPUUsage* cpu, apr_pool_t* pool) + { ++#ifdef __FreeBSD__ ++ struct tms ticks; ++ cpu->idle = times(&ticks); ++ if (cpu->idle == -1) ++ return 0; ++ cpu->nonIdle = ticks.tms_utime + ticks.tms_stime; ++ return 1; ++#else + apr_status_t s; + apr_file_t* proc; + char buf[PROC_BUF_LEN]; +@@ -118,10 +135,12 @@ static int getTicks(CPUUsage* cpu, apr_pool_t* pool) + } + + return 0; ++#endif + } + + double cpu_GetMemoryUsage(apr_pool_t* pool) + { ++#ifdef __linux__ + apr_status_t s; + apr_file_t* proc; + char buf[PROC_BUF_LEN]; +@@ -138,12 +157,36 @@ double cpu_GetMemoryUsage(apr_pool_t* pool) + if (s != APR_SUCCESS) { + return 0.0; + } ++#endif + + long totalMem = 0; + long freeMem = 0; + long buffers = 0; + long cache = 0; + ++#ifdef __FreeBSD__ ++ /* Let's work with kilobytes. */ ++ long pagesize = sysconf(_SC_PAGESIZE) / 1024; ++ totalMem = sysconf(_SC_PHYS_PAGES) * pagesize; ++ ++ size_t len; ++ ++ unsigned free; ++ len = sizeof(free); ++ sysctlbyname("vm.stats.vm.v_free_count", &free, &len, NULL, 0); ++ freeMem = free * pagesize; ++ ++ /* `buffers' is of expected type (long), no need for another variable. */ ++ len = sizeof(buffers); ++ sysctlbyname("vfs.bufspace", &buffers, &len, NULL, 0); ++ buffers /= 1024; ++ ++ /* `cache' is number of inactive pages since r309017. */ ++ unsigned inact; ++ len = sizeof(inact); ++ sysctlbyname("vm.stats.vm.v_inactive_count", &inact, &len, NULL, 0); ++ cache = inact * pagesize; ++#else + while (linep_NextLine(&line)) { + char* n = linep_NextToken(&line, " "); + char* v = linep_NextToken(&line, " "); +@@ -158,6 +201,7 @@ double cpu_GetMemoryUsage(apr_pool_t* pool) + cache = atol(v); + } + } ++#endif + + if ((totalMem <= 0) || (freeMem <= 0)) { + return 0.0; Property changes on: head/benchmarks/apib/files/patch-src_apib__cpu.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/benchmarks/apib/pkg-descr =================================================================== --- head/benchmarks/apib/pkg-descr (revision 463477) +++ head/benchmarks/apib/pkg-descr (revision 463478) @@ -1,16 +1,16 @@ apib is a tool that makes it easy to test API servers. It is supported on Unix systems that include the Apache Portable Runtime and OpenSSL. apib has most of the features of Apache Bench (ab), but is also intended -to be a more modern replacement. In particular, it supports: +to be a more modern replacement. In particular, it offers: - Proper HTTP 1.1 support including keep-alives and chunked encoding - Ability to spawn multiple I/O threads to take advantage of multiple CPU cores - Non-blocking I/O for high concurrency - Support for POST and PUT of large objects - Support for OAuth 1.0 signatures - Ability to output results to a file so they may be automated - Remote CPU monitoring WWW: https://github.com/apigee/apib