From a30d6e77afe6ad0b7573e16aa819b08355439224 Mon Sep 17 00:00:00 2001 From: Kurt Jaeger Date: Sun, 20 Mar 2016 20:20:13 +0000 Subject: 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 --- sysutils/hfm/Makefile | 56 +++++++++++++++++++++++++++++++++++++++++++++++ sysutils/hfm/distinfo | 6 +++++ sysutils/hfm/files/hfm.in | 47 +++++++++++++++++++++++++++++++++++++++ sysutils/hfm/pkg-descr | 17 ++++++++++++++ sysutils/hfm/pkg-message | 5 +++++ sysutils/hfm/pkg-plist | 8 +++++++ 6 files changed, 139 insertions(+) create mode 100644 sysutils/hfm/Makefile create mode 100644 sysutils/hfm/distinfo create mode 100644 sysutils/hfm/files/hfm.in create mode 100644 sysutils/hfm/pkg-descr create mode 100644 sysutils/hfm/pkg-message create mode 100644 sysutils/hfm/pkg-plist (limited to 'sysutils/hfm') diff --git a/sysutils/hfm/Makefile b/sysutils/hfm/Makefile new file mode 100644 index 000000000000..4e4d0563d0da --- /dev/null +++ b/sysutils/hfm/Makefile @@ -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 diff --git a/sysutils/hfm/distinfo b/sysutils/hfm/distinfo new file mode 100644 index 000000000000..11a1c39c14a3 --- /dev/null +++ b/sysutils/hfm/distinfo @@ -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 diff --git a/sysutils/hfm/files/hfm.in b/sysutils/hfm/files/hfm.in new file mode 100644 index 000000000000..74e216fe9679 --- /dev/null +++ b/sysutils/hfm/files/hfm.in @@ -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" + diff --git a/sysutils/hfm/pkg-descr b/sysutils/hfm/pkg-descr new file mode 100644 index 000000000000..431436bd27da --- /dev/null +++ b/sysutils/hfm/pkg-descr @@ -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 diff --git a/sysutils/hfm/pkg-message b/sysutils/hfm/pkg-message new file mode 100644 index 000000000000..52dc919ad1bb --- /dev/null +++ b/sysutils/hfm/pkg-message @@ -0,0 +1,5 @@ +hfm includes an rc.d script to control a daemon mode. Use: + +sysrc hfh_enable=yes + +to enable. diff --git a/sysutils/hfm/pkg-plist b/sysutils/hfm/pkg-plist new file mode 100644 index 000000000000..a6359bce5f99 --- /dev/null +++ b/sysutils/hfm/pkg-plist @@ -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 -- cgit v1.2.3