+++ /dev/null
-/*
- * load and test L&B plugin
- *
- * (requires -rdynamic to use fake JP backend symbols)
- */
-
-#include <string.h>
-#include <errno.h>
-#include <stdio.h>
-#include <time.h>
-#include <dlfcn.h>
-#include <malloc.h>
-#include <unistd.h>
-#include <getopt.h>
-
-#include "glite/jp/types.h"
-#include "glite/jp/context.h"
-#include "glite/jp/backend.h"
-#include "glite/jp/file_plugin.h"
-#include "glite/jp/known_attr.h"
-#include "glite/jp/attr.h"
-#include "glite/lb/jp_job_attrs.h"
-
-
-typedef int init_f(glite_jp_context_t ctx, glite_jpps_fplug_data_t *data);
-typedef void done_f(glite_jp_context_t ctx, glite_jpps_fplug_data_t *data);
-
-static const char rcsid[] = "@(#)$$";
-static int verbose = 0;
-static char *file = NULL;
-
-static struct option const long_options[] = {
- { "file", required_argument, 0, 'f' },
- { "help", no_argument, 0, 'h' },
- { "verbose", no_argument, 0, 'v' },
- { "version", no_argument, 0, 'V' },
- { NULL, 0, NULL, 0}
-};
-
-/*
- * usage
- */
-static void
-usage(char *program_name) {
- fprintf(stdout,"LB statistics\n"
- "- reads a dump file (one job only) \n"
- "- and outputs an XML with statistics to stdout \n\n"
- "Usage: %s [option]\n"
- "-h, --help display this help and exit\n"
- "-V, --version output version information and exit\n"
- "-v, --verbose print extensive debug output\n"
- "-f, --file <file> port to listen\n\n",
- program_name);
-}
-
-/*
- * substitute implementatin of JP backend
- */
-
-int glite_jppsbe_pread(glite_jp_context_t ctx, void *handle, void *buf, size_t nbytes, off_t offset, ssize_t *nbytes_ret) {
- FILE *f;
-
- f = (FILE *)handle;
- if (fseek(f, offset, SEEK_SET) != 0) {
- *nbytes_ret = 0;
- return 0;
- }
- *nbytes_ret = fread(buf, 1, nbytes, f);
-
- return ferror(f) ? 1 : 0;
-}
-
-
-int glite_jp_stack_error(glite_jp_context_t ctx, const glite_jp_error_t *jperror) {
- printf("JP backend error %d: %s\n", jperror->code, jperror->desc);
- return 0;
-}
-
-
-int glite_jp_clear_error(glite_jp_context_t ctx) {
- return 0;
-}
-
-
-/*
- * free the array of JP attr
- */
-static void free_attrs(glite_jp_attrval_t *av) {
- glite_jp_attrval_t *item;
-
- item = av;
- while (item->name) {
- glite_jp_attrval_free(item++, 0);
- }
- free(av);
-}
-
-/*
- * main
- */
-int main(int argc, char *argv[])
-{
- glite_jp_context_t jpctx;
- glite_jpps_fplug_data_t plugin_data;
- void *data_handle, *lib_handle;
- FILE *f;
- glite_jp_attrval_t *attrval;
- char *err;
- init_f *plugin_init;
- done_f *plugin_done;
- int opt;
-
- /* get arguments */
- while ((opt = getopt_long(argc,argv,
- "f:" /* file */
- "h" /* help */
- "v" /* verbose */
- "V", /* version */
- long_options, (int *) 0)) != EOF) {
-
- switch (opt) {
- case 'V': fprintf(stdout,"%s:\t%s\n",argv[0],rcsid); return(0);
- case 'v': verbose = 1; break;
- case 'f': file = optarg; break;
- case 'h':
- default:
- usage(argv[0]); return(0);
- }
- }
-
- /* load L&B plugin and its 'init' symbol */
- if ((lib_handle = dlopen("glite_lb_plugin.so", RTLD_LAZY)) == NULL) {
- err = dlerror() ? :"unknown error";
- printf("can't load L&B plugin (%s)\n", err);
- return 1;
- }
- if ((plugin_init = dlsym(lib_handle, "init")) == NULL ||
- (plugin_done = dlsym(lib_handle, "done")) == NULL) {
- err = dlerror() ? :"unknown error";
- printf("can't find symbol 'init' or 'done' (%s)\n", err);
- goto err;
- }
-
- /* dump file with events */
- if ((f = fopen(file, "rt")) == NULL) {
- printf("Error: %s\n", strerror(errno));
- goto err;
- }
-
- /* use the plugin */
- plugin_init(jpctx, &plugin_data);
- plugin_data.ops.open(jpctx, f, "uri://", &data_handle);
-
- if (data_handle) {
- /* header */
- printf("<?xml version=\"1.0\"?>");
- printf("<lbd:jobRecord");
- printf("\txmlns:lbd=\"http://glite.org/wsdl/types/lbdump\"\n");
-
- /* jobid */
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_ATTR_JOBID, &attrval);
- if (attrval) {
- printf("\tjobid=\"%s\"\n>\n", attrval->value);
- free_attrs(attrval);
- } else {
- printf("\tjobid=\"default\"\n>\n");
- }
- printf(">\n");
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_ATTR_OWNER, &attrval);
- if (attrval) {
- printf("\t<user>%s</user>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_aTag, &attrval);
- if (attrval) {
- printf("\t<aTag>%s</aTag>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_rQType, &attrval);
- if (attrval) {
- printf("\t<rQType>%s</rQType>\n", ctime(&attrval->timestamp));
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_eDuration, &attrval);
- if (attrval) {
- printf("\t<eDuration>%s</eDuration>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_eNodes, &attrval);
- if (attrval) {
- printf("\t<eNodes>%s</eNodes>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_eProc, &attrval);
- if (attrval) {
- printf("\t<eProc>%s</eProc>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_RB, &attrval);
- if (attrval) {
- printf("\t<RB>%s</RB>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_CE, &attrval);
- if (attrval) {
- printf("\t<CE>%s</CE>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_host, &attrval);
- if (attrval) {
- printf("\t<host>%s</host>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_UIHost, &attrval);
- if (attrval) {
- printf("\t<UIHost>%s</UIHost>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_CPUTime, &attrval);
- if (attrval) {
- printf("\t<CPUTime>%s</CPUTime>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_NProc, &attrval);
- if (attrval) {
- printf("\t<NProc>%s</NProc>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_finalStatus, &attrval);
- if (attrval) {
- printf("\t<finalStatus>%s</finalStatus>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_finalStatusDate, &attrval);
- if (attrval) {
- printf("\t<finalStatusDate>%s</finalStatusDate>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_finalStatusReason, &attrval);
- if (attrval) {
- printf("\t<finalStatusReason>%s</finalStatusReason>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_LRMSDoneStatus, &attrval);
- if (attrval) {
- printf("\t<LRMSDoneStatus>%s</LRMSDoneStatus>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_LRMSStatusReason, &attrval);
- if (attrval) {
- printf("\t<LRMSStatusReason>%s</LRMSStatusReason>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_retryCount, &attrval);
- if (attrval) {
- printf("\t<retryCount>%s</retryCount>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_additionalReason, &attrval);
- if (attrval) {
- printf("\t<additionalReason>%s</additionalReason>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_jobType, &attrval);
- if (attrval) {
- printf("\t<jobType>%s</jobType>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_nsubjobs, &attrval);
- if (attrval) {
- printf("\t<nsubjobs>%s</nsubjobs>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_lastStatusHistory, &attrval);
- if (attrval) {
- printf("\t<lastStatusHistory>%s</lastStatusHistory>\n", attrval->value);
- free_attrs(attrval);
- }
-
- plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_fullStatusHistory, &attrval);
- if (attrval) {
- printf("\t<fullStatusHistory>%s</fullStatusHistory>\n", attrval->value);
- free_attrs(attrval);
- }
-
- printf("</lbd:jobRecord>\n");
-
- plugin_data.ops.close(jpctx, data_handle);
- }
- plugin_done(jpctx, &plugin_data);
-
- fclose(f);
- dlclose(lib_handle);
- return 0;
-
-err:
- dlclose(lib_handle);
- return 1;
-}