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@razorfever.net
This commit is contained in:
parent
347c925ee5
commit
a30d6e77af
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=411516
1
GIDs
1
GIDs
@ -137,6 +137,7 @@ bs:*:220:
|
||||
rtpproxy:*:222:
|
||||
postgrey:*:225:
|
||||
sqlgrey:*:226:
|
||||
_hfm:*:227:
|
||||
kismet:*:229:
|
||||
aprsd:*:240:
|
||||
tnc:*:241:
|
||||
|
1
UIDs
1
UIDs
@ -142,6 +142,7 @@ bs:*:220:220::0:0:Big Sister:/usr/local/bigsister:/bin/sh
|
||||
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
|
||||
|
@ -405,6 +405,7 @@
|
||||
SUBDIR += heartbeat
|
||||
SUBDIR += heirloom
|
||||
SUBDIR += hextools
|
||||
SUBDIR += hfm
|
||||
SUBDIR += hfsexplorer
|
||||
SUBDIR += hfsutils
|
||||
SUBDIR += hidesvn
|
||||
|
56
sysutils/hfm/Makefile
Normal file
56
sysutils/hfm/Makefile
Normal file
@ -0,0 +1,56 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= hfm
|
||||
PORTVERSION= 1.1.3
|
||||
DISTVERSIONPREFIX= v
|
||||
CATEGORIES= sysutils
|
||||
|
||||
MAINTAINER= 554b8425@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>
|
6
sysutils/hfm/distinfo
Normal file
6
sysutils/hfm/distinfo
Normal file
@ -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
|
47
sysutils/hfm/files/hfm.in
Normal file
47
sysutils/hfm/files/hfm.in
Normal file
@ -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"
|
||||
|
17
sysutils/hfm/pkg-descr
Normal file
17
sysutils/hfm/pkg-descr
Normal file
@ -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
|
5
sysutils/hfm/pkg-message
Normal file
5
sysutils/hfm/pkg-message
Normal file
@ -0,0 +1,5 @@
|
||||
hfm includes an rc.d script to control a daemon mode. Use:
|
||||
|
||||
sysrc hfh_enable=yes
|
||||
|
||||
to enable.
|
8
sysutils/hfm/pkg-plist
Normal file
8
sysutils/hfm/pkg-plist
Normal file
@ -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
|
||||
@sample %%ETCDIR%%/hfm.conf.sample
|
Loading…
Reference in New Issue
Block a user