server: add sample validator that checks for string in stderr

This commit is contained in:
David Anderson 2014-03-18 19:12:13 -07:00
parent 6752f78ec8
commit 834ac11661
5 changed files with 79 additions and 10 deletions

View File

@ -113,6 +113,7 @@ schedshare_PROGRAMS = \
sample_assimilator \
sample_dummy_assimilator \
sample_bitwise_validator \
sample_substr_validator \
sample_trivial_validator \
sample_work_generator \
single_job_assimilator \
@ -218,6 +219,10 @@ sample_bitwise_validator_SOURCES = $(VALIDATOR_SOURCES) \
sample_bitwise_validator.cpp
sample_bitwise_validator_LDADD = $(SERVERLIBS)
sample_substr_validator_SOURCES = $(VALIDATOR_SOURCES) \
sample_substr_validator.cpp
sample_substr_validator_LDADD = $(SERVERLIBS)
sample_trivial_validator_SOURCES = $(VALIDATOR_SOURCES) \
sample_trivial_validator.cpp
sample_trivial_validator_LDADD = $(SERVERLIBS)

View File

@ -0,0 +1,64 @@
// This file is part of BOINC.
// http://boinc.berkeley.edu
// Copyright (C) 2014 University of California
//
// BOINC is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
//
// BOINC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
// A sample validator that accepts results whose stderr output
// contains a given string.
// Usage:
// sample_substr_validator --stderr_string xxx [other options]
#include "sched_msgs.h"
#include "validate_util2.h"
#include "validator.h"
bool first = true;
char* stderr_string;
void parse_cmdline() {
for (int i=1; i<g_argc; i++) {
if (!strcmp(g_argv[i], "--stderr_string")) {
stderr_string = g_argv[++i];
return;
}
}
log_messages.printf(MSG_CRITICAL,
"--stderr_string missing from command line\n"
);
exit(1);
}
int init_result(RESULT& r, void*&) {
if (first) {
parse_cmdline();
first = false;
}
if (strstr(r.stderr_out, stderr_string)) {
return 0;
} else {
return -1;
}
}
int compare_results(RESULT&, void*, RESULT const&, void*, bool& match) {
match = true;
return 0;
}
int cleanup_result(RESULT const&, void*) {
return 0;
}
const char *BOINC_RCSID_f3a7a34795 = "$Id$";

View File

@ -17,11 +17,7 @@
// A sample validator that accepts all results
#include <cstdlib>
#include "config.h"
#include "validate_util.h"
using std::vector;
#include "validate_util2.h"
int init_result(RESULT&, void*&) {
return 0;

View File

@ -101,6 +101,8 @@ bool credit_from_wu = false;
bool credit_from_runtime = false;
double max_runtime = 0;
bool no_credit = false;
int g_argc;
char **g_argv;
WORKUNIT* g_wup;
vector<DB_APP_VERSION> app_versions;
@ -790,6 +792,8 @@ int main(int argc, char** argv) {
exit(1);
}
}
g_argc = argc;
g_argv = argv;
if (app_name[0] == 0) {
log_messages.printf(MSG_CRITICAL,

View File

@ -19,11 +19,11 @@
extern double max_granted_credit;
// the --max_granted_credit cmdline arg, or 0
extern double max_claimed_credit;
// the --max_claimed_credit cmdline arg, or 0
extern bool grant_claimed_credit;
// the --grant_claimed_credit cmdline arg, or false
extern WORKUNIT* g_wup;
// A pointer to the WU currently being processed;
// you can use this in your init_result() etc. functions
// you can access this in your init_result() etc. functions
// (which are passed RESULT but not WORKUNIT)
extern int g_argc;
extern char** g_argv;