svn commit: r411516 - in head: . sysutils sysutils/hfm sysutils/hfm/files
Kurt Jaeger
pi at FreeBSD.org
Sun Mar 20 20:20:15 UTC 2016
Author: pi
Date: Sun Mar 20 20:20:13 2016
New Revision: 411516
URL: https://svnweb.freebsd.org/changeset/ports/411516
Log:
New port: sysutils/hfm
hfm is an application to run tests in parallel at a high frequency.
If the outcome of the test results in a state change, other commands
can be executed.
It is designed to be a general purpose, loosely-coupled tool, by
having both the tests and the state change commands be executed by
the operating system. For example, one could write the test in
shell or c, and have it called through the exec facility.
In practice, the overhead of spawning a new process per test limits
frequency that can be achieved by the tests, and their results.
Anecdotally, 5ms intervals have been seen to be achievable.
An example application is to poll other network services for health,
and to take actions based on their health status changes.
WWW: https://github.com/derekmarcotte/hfm
PR: 207392
Submitted by: 554b8425 at razorfever.net
Added:
head/sysutils/hfm/
head/sysutils/hfm/Makefile (contents, props changed)
head/sysutils/hfm/distinfo (contents, props changed)
head/sysutils/hfm/files/
head/sysutils/hfm/files/hfm.in (contents, props changed)
head/sysutils/hfm/pkg-descr (contents, props changed)
head/sysutils/hfm/pkg-message (contents, props changed)
head/sysutils/hfm/pkg-plist (contents, props changed)
Modified:
head/GIDs
head/UIDs
head/sysutils/Makefile
Modified: head/GIDs
==============================================================================
--- head/GIDs Sun Mar 20 19:38:08 2016 (r411515)
+++ head/GIDs Sun Mar 20 20:20:13 2016 (r411516)
@@ -137,6 +137,7 @@ bs:*:220:
rtpproxy:*:222:
postgrey:*:225:
sqlgrey:*:226:
+_hfm:*:227:
kismet:*:229:
aprsd:*:240:
tnc:*:241:
Modified: head/UIDs
==============================================================================
--- head/UIDs Sun Mar 20 19:38:08 2016 (r411515)
+++ head/UIDs Sun Mar 20 20:20:13 2016 (r411516)
@@ -142,6 +142,7 @@ bs:*:220:220::0:0:Big Sister:/usr/local/
rtpproxy:*:222:222::0:0:& user:/nonexistent:/sbin/nologin
postgrey:*:225:225::0:0:Postgrey Owner:/nonexistent:/usr/sbin/nologin
sqlgrey:*:226:226::0:0:SQLgrey Owner:/nonexistent:/usr/sbin/nologin
+_hfm:*:227:227::0:0:hfm daemon:/nonexistent:/usr/sbin/nologin
aprsd:*:240:240::0:0:aprsd:/nonexistent:/bin/sh
tnc:*:241:241::0:0:aprsd:/nonexistent:/bin/sh
prosody:*:242:242::0:0:Prosody Jabber Server:/nonexistent:/usr/sbin/nologin
Modified: head/sysutils/Makefile
==============================================================================
--- head/sysutils/Makefile Sun Mar 20 19:38:08 2016 (r411515)
+++ head/sysutils/Makefile Sun Mar 20 20:20:13 2016 (r411516)
@@ -405,6 +405,7 @@
SUBDIR += heartbeat
SUBDIR += heirloom
SUBDIR += hextools
+ SUBDIR += hfm
SUBDIR += hfsexplorer
SUBDIR += hfsutils
SUBDIR += hidesvn
Added: head/sysutils/hfm/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sysutils/hfm/Makefile Sun Mar 20 20:20:13 2016 (r411516)
@@ -0,0 +1,56 @@
+# $FreeBSD$
+
+PORTNAME= hfm
+PORTVERSION= 1.1.3
+DISTVERSIONPREFIX= v
+CATEGORIES= sysutils
+
+MAINTAINER= 554b8425 at razorfever.net
+COMMENT= Run tests in parallel at high frequency
+
+LICENSE= BSD2CLAUSE
+
+# gb 0.4 includes FreeBSD-specific fixes that this port requires
+# https://github.com/constabulary/gb/issues/506
+BUILD_DEPENDS= go>=1.5:${PORTSDIR}/lang/go \
+ gb>=0.4:${PORTSDIR}/devel/gb \
+ ${LOCALBASE}/lib/libucl.a:${PORTSDIR}/textproc/libucl
+
+USES= compiler:c++11-lang
+USE_GITHUB= yes
+
+GH_ACCOUNT= derekmarcotte mitchellh:gu op:gl
+GH_PROJECT= hfm go-libucl:gu go-logging:gl
+GH_TAGNAME= ${DISTVERSIONFULL} f9d0e55:gu dfaf3df:gl
+
+USERS= _hfm
+GROUPS= _hfm
+
+USE_RC_SUBR= hfm
+
+MAKE_ARGS+= ETCDIR=${ETCDIR} TAG=${DISTVERSIONPREFIX}${PORTVERSION}
+
+NO_INSTALL= yes
+ALL_TARGET= test build
+
+post-extract:
+ ${MKDIR} ${WRKSRC}/vendor/src/github.com/mitchellh/go-libucl
+ ${MV} ${WRKDIR}/go-libucl-f9d0e55/* ${WRKSRC}/vendor/src/github.com/mitchellh/go-libucl/
+ ${MKDIR} ${WRKSRC}/vendor/src/github.com/op/go-logging
+ ${MV} ${WRKDIR}/go-logging-dfaf3df/* ${WRKSRC}/vendor/src/github.com/op/go-logging/
+
+do-patch:
+ (cd ${WRKSRC}; ${PATCH} vendor/src/github.com/mitchellh/go-libucl/libucl.go < vendor/patches/github.com/mitchellh/go-libucl/libucl.go.patch )
+
+do-install:
+ @${MKDIR} ${STAGEDIR}${PREFIX}/bin
+ ${INSTALL_PROGRAM} ${WRKSRC}/bin/hfm ${STAGEDIR}${PREFIX}/bin
+ @${MKDIR} ${STAGEDIR}${ETCDIR}
+ ${INSTALL_DATA} ${WRKSRC}/examples/hfm.conf.sample ${STAGEDIR}${ETCDIR}
+ @${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
+ ${INSTALL_DATA} ${WRKSRC}/examples/* ${STAGEDIR}${EXAMPLESDIR}
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/doc/* ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
Added: head/sysutils/hfm/distinfo
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sysutils/hfm/distinfo Sun Mar 20 20:20:13 2016 (r411516)
@@ -0,0 +1,6 @@
+SHA256 (derekmarcotte-hfm-v1.1.3_GH0.tar.gz) = 8e00fbb4a640ac5cd6473f4705043af4067be731cdabc5aeb882121a0ccae743
+SIZE (derekmarcotte-hfm-v1.1.3_GH0.tar.gz) = 33915
+SHA256 (mitchellh-go-libucl-f9d0e55_GH0.tar.gz) = 955e56fa334e7131ca313098fcf0a91ce89270cf1294d2a07830aa1c17b58fc0
+SIZE (mitchellh-go-libucl-f9d0e55_GH0.tar.gz) = 9426
+SHA256 (op-go-logging-dfaf3df_GH0.tar.gz) = d34d3afbdb07ad92f51d2a0a9f2682a4c0fcece733618a4ad27013e5ab6c8b60
+SIZE (op-go-logging-dfaf3df_GH0.tar.gz) = 35747
Added: head/sysutils/hfm/files/hfm.in
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sysutils/hfm/files/hfm.in Sun Mar 20 20:20:13 2016 (r411516)
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# $FreeBSD$
+#
+# PROVIDE: hfm
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Add these lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# hfm_enable (bool): Set to NO by default.
+# Set it to YES to enable hfm.
+#
+# hfm_flags (bool): Check the sources of hfm for flags
+#
+
+. /etc/rc.subr
+
+name=hfm
+rcvar=hfm_enable
+
+command="%%PREFIX%%/bin/${name}"
+
+hfm_user=_hfm
+hfm_flags=${hfm_flags:-"-config %%ETCDIR%%/${name}.conf -facility local0 -log syslog"}
+
+pidfile="/var/run/${name}.pid"
+
+required_files="%%ETCDIR%%/${name}.conf"
+
+start_cmd=hfm_start
+stop_postcmd=hfm_postcmd
+
+hfm_start() {
+ echo "Staring ${name}."
+
+ /usr/sbin/daemon -cf -u ${hfm_user} -p ${pidfile} ${command} ${hfm_flags}
+}
+
+hfm_postcmd() {
+ [ -f ${pidfile} ] && rm ${pidfile}
+}
+
+load_rc_config $name
+run_rc_command "$1"
+
Added: head/sysutils/hfm/pkg-descr
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sysutils/hfm/pkg-descr Sun Mar 20 20:20:13 2016 (r411516)
@@ -0,0 +1,17 @@
+hfm is an application to run tests in parallel at a high frequency.
+If the outcome of the test results in a state change, other commands
+can be executed.
+
+It is designed to be a general purpose, loosely-coupled tool, by
+having both the tests and the state change commands be executed by
+the operating system. For example, one could write the test in
+shell or c, and have it called through the exec facility.
+
+In practice, the overhead of spawning a new process per test limits
+frequency that can be achieved by the tests, and their results.
+Anecdotally, 5ms intervals have been seen to be achievable.
+
+An example application is to poll other network services for health,
+and to take actions based on their health status changes.
+
+WWW: https://github.com/derekmarcotte/hfm
Added: head/sysutils/hfm/pkg-message
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sysutils/hfm/pkg-message Sun Mar 20 20:20:13 2016 (r411516)
@@ -0,0 +1,5 @@
+hfm includes an rc.d script to control a daemon mode. Use:
+
+sysrc hfh_enable=yes
+
+to enable.
Added: head/sysutils/hfm/pkg-plist
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sysutils/hfm/pkg-plist Sun Mar 20 20:20:13 2016 (r411516)
@@ -0,0 +1,8 @@
+bin/hfm
+%%PORTDOCS%%%%DOCSDIR%%/README.md
+%%PORTDOCS%%%%DOCSDIR%%/architecture-90dpi.png
+%%PORTDOCS%%%%DOCSDIR%%/architecture.svg
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hfm-test-fast.conf
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hfm-test-start-delay.conf
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hfm.conf.sample
+ at sample %%ETCDIR%%/hfm.conf.sample
More information about the svn-ports-head
mailing list