Thread: [C-MPI-commits] SF.net SVN: c-mpi:[41] tools
Status: Pre-Alpha
Brought to you by:
jmwozniak
|
From: <jmw...@us...> - 2010-04-28 20:27:38
|
Revision: 41
http://c-mpi.svn.sourceforge.net/c-mpi/?rev=41&view=rev
Author: jmwozniak
Date: 2010-04-28 20:27:32 +0000 (Wed, 28 Apr 2010)
Log Message:
-----------
Reusable test functionality.
Added Paths:
-----------
tools/
tools/test-helpers.zsh
Added: tools/test-helpers.zsh
===================================================================
--- tools/test-helpers.zsh (rev 0)
+++ tools/test-helpers.zsh 2010-04-28 20:27:32 UTC (rev 41)
@@ -0,0 +1,11 @@
+
+# Sourced by tests for reusable functionality
+
+USE_COMM_WORLD=$( grep USE_COMM_WORLD cmpi-config.h | col 3 )
+
+crash()
+{
+ print $1
+ mv ${OUT} ${OUT}.failed
+ exit 1
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jmw...@us...> - 2010-04-29 20:01:34
|
Revision: 57
http://c-mpi.svn.sourceforge.net/c-mpi/?rev=57&view=rev
Author: jmwozniak
Date: 2010-04-29 20:01:28 +0000 (Thu, 29 Apr 2010)
Log Message:
-----------
test/cmpi/test04 works.
Modified Paths:
--------------
src/cmpi/node.c
test/cmpi/About.txt
test/cmpi/test04.c
test/cmpi/test04.zsh
tools/test-helpers.zsh
Modified: src/cmpi/node.c
===================================================================
--- src/cmpi/node.c 2010-04-29 19:24:21 UTC (rev 56)
+++ src/cmpi/node.c 2010-04-29 20:01:28 UTC (rev 57)
@@ -77,7 +77,7 @@
p = strchr(optarg, '=');
if (p == NULL)
{
- printf("Got bad -p argument! \n");
+ printf("Got bad -p argument! \n\n");
exit(EXIT_FAILURE);
}
*p = ' ';
Modified: test/cmpi/About.txt
===================================================================
--- test/cmpi/About.txt 2010-04-29 19:24:21 UTC (rev 56)
+++ test/cmpi/About.txt 2010-04-29 20:01:28 UTC (rev 57)
@@ -13,3 +13,4 @@
test-putget: Small put() + get().
test04: multiple put() + get().
test05: put() + update() + get().
+test06:
Modified: test/cmpi/test04.c
===================================================================
--- test/cmpi/test04.c 2010-04-29 19:24:21 UTC (rev 56)
+++ test/cmpi/test04.c 2010-04-29 20:01:28 UTC (rev 57)
@@ -2,34 +2,34 @@
/**
Store many small records.
The number of records is controlled by the
- "reps" key in the CMPI cache.
+ "reps" key in the CMPI cache.
*/
-#include "test_helpers.h"
+#include "test_helpers.h"
/**
Requires that "reps" be in the CMPI params.
- Generates keys for multiple clients.
+ Generates keys for multiple clients.
*/
void
cmpi_client_code()
{
int i;
- // Obtain the number of reps to perform:
+ // Obtain the number of reps to perform:
char* s = cmpi_params_search("reps");
if (s == NULL || strlen(s) == 0)
{
NOTE("No reps given!");
- exit(1);
+ exit(1);
}
int reps;
int n = sscanf(s, "%i", &reps);
- assert(n > 0);
+ assert(n > 0);
wait_for_notification();
- notify_next();
-
+ notify_next();
+
for (i = 0; i < reps; i++)
{
char key[20];
@@ -39,13 +39,13 @@
cmpi_put(key, value, strlen(value)+1);
}
- sleep((mpi_size-mpi_rank)*3+10);
+ sleep((mpi_size-mpi_rank)*3+10);
int client_rank;
MPI_Comm_rank(cmpi_comm_clients, &client_rank);
if (client_rank == 0)
{
- note("Shutting down...");
+ note("Shutting down...");
cmpi_shutdown();
}
}
Modified: test/cmpi/test04.zsh
===================================================================
--- test/cmpi/test04.zsh 2010-04-29 19:24:21 UTC (rev 56)
+++ test/cmpi/test04.zsh 2010-04-29 20:01:28 UTC (rev 57)
@@ -1,13 +1,37 @@
-#!/bin/zsh
+#!/bin/zsh
-N=$1
+# Be sure to make tests with D=1
-[[ $N == "" ]] && N=4
+# set -x
-# tools/startup_nodes.zsh ${N} 100 &
+source tools/test-helpers.zsh
-# sleep $(( N+15 ))
+PROGRAM=$1
+OUT=${PROGRAM%.x}.out
+shift
+LAUNCH=${*}
-# KDA-1 execution:
-mpiexec -n ${N} test/cmpi/test04.x -n $(( N-1 )) >& test/cmpi/test04.out
+if (( USE_COMM_WORLD == 1 ))
+then
+ # Monolithic execution (5 nodes, 1 client):
+
+ mpiexec -n 6 ${PROGRAM} -n 5 -p reps=10 >& ${OUT}
+ CODE=$?
+ [[ ${CODE} == 0 ]] || crash "exit code was: ${CODE}"
+
+else
+
+ # KDA-2B execution:
+
+ tools/startup_nodes.zsh $(( N-1 )) 100 &
+ mpiexec -n 1 test/cmpi/test01.x > CLIENT.out
+ sleep $(( N+15 ))
+
+fi
+
+# Should be 6 "Normal exit."s
+N=$( grep -c "Normal exit." ${OUT} )
+(( N == 6 )) || crash "N != 6"
+
+exit 0
Modified: tools/test-helpers.zsh
===================================================================
--- tools/test-helpers.zsh 2010-04-29 19:24:21 UTC (rev 56)
+++ tools/test-helpers.zsh 2010-04-29 20:01:28 UTC (rev 57)
@@ -6,6 +6,6 @@
crash()
{
print $1
- mv ${OUT} ${OUT}.failed
+ mv -v ${OUT} ${OUT}.failed
exit 1
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jmw...@us...> - 2010-05-11 21:18:09
|
Revision: 85
http://c-mpi.svn.sourceforge.net/c-mpi/?rev=85&view=rev
Author: jmwozniak
Date: 2010-05-11 21:18:02 +0000 (Tue, 11 May 2010)
Log Message:
-----------
Better driver tests.
Modified Paths:
--------------
Makefile.in
include/driver.h
include/gossip.h
src/cmpi/driver.c
src/cmpi/module.mk.in
src/cmpi/node.c
src/cmpi-db/module.mk.in
src/gossip/gossip.c
src/mpirpc/module.mk.in
test/driver/module.mk.in
test/driver/test01.c
test/driver/test02.c
test/driver/test03.c
Added Paths:
-----------
test/driver/test-quit.zsh
tools/timebomb.zsh
Modified: Makefile.in
===================================================================
--- Makefile.in 2010-05-11 19:31:33 UTC (rev 84)
+++ Makefile.in 2010-05-11 21:18:02 UTC (rev 85)
@@ -273,8 +273,8 @@
$(Q) " DEBUGGING VARIABLES "
$(Q) " "
$(E)echo MPICC: $(MPICC)
- $(E)echo MODULES: $(MODULES)
- $(E)echo DISKSIM: $(DISKSIM)
+# $(E)echo MODULES: $(MODULES)
+# $(E)echo DISKSIM: $(DISKSIM)
$(E)echo CFLAGS: $(CFLAGS)
$(E)echo IFLAGS: $(IFLAGS)
$(E)echo LIBS: $(LIBS)
@@ -287,8 +287,8 @@
# $(E)echo USE_TABLE_KDA_2A: @USE_TABLE_KDA_2A@
# $(E)echo USE_TABLE_KDA_2B: @USE_TABLE_KDA_2B@
$(E)echo USE_TABLE_DENSE_1: @USE_TABLE_DENSE_1@
-# $(E)echo CMPI_SRC: $(CMPI_OBJS)
-# $(E)echo CMPI_OBJS: $(CMPI_OBJS)
+ $(E)echo TABLE_OBJS: $(TABLE_OBJS)
+ $(E)echo CMPI_OBJS: $(CMPI_OBJS)
# $(E)echo TEST_CMPI_SRC: $(TEST_CMPI_SRC)
# $(E)echo TEST_DISKSIM_SRC: $(TEST_DISKSIM_SRC)
# $(E)echo TEST_MPIRPC_SRC: $(TEST_MPIRPC_SRC)
@@ -317,7 +317,7 @@
include src/kda-2/module.mk
include src/dense-1/module.mk
include src/cmpi/module.mk
-#include src/cmpi-db/module.mk
+include src/cmpi-db/module.mk
#include src/cmpi-cp/module.mk
################################################################
@@ -351,7 +351,7 @@
include test/adts/module.mk
include test/mpirpc/module.mk
include test/cmpi/module.mk
-#include test/driver/module.mk.in
+include test/driver/module.mk.in
#include test/cmpi-db/module.mk.in
#include test/cmpi-io/module.mk.in
@@ -409,11 +409,11 @@
unpublish: src/mpirpc/unpublish.o $(CMPI)
$(Q) " MPICC $(@)"
- $(E)$(MPICC) $(<) $(CMPI) $(LIBS) -o $(@)
+ $(E) $(MPICC) $(<) $(CMPI) $(LIBS) -o $(@)
bin:
$(Q) " MKDIR $(@)"
- $(E)mkdir -p $(@)
+ $(E) mkdir -p $(@)
## Development tools...
@@ -534,7 +534,7 @@
# add this as a make goal to disable rebuilding dependencies
.PHONY: nodep clean
.SECONDARY: $(TEST_OBJS) $(TEST_PROGS)
-.PRECIOUS: $(TEST_OUTPUT) %.gs.dummyobj %.gs.i %.gs.s %.o
+.PRECIOUS: $(TEST_OUTPUT) %.o
nodep:; @:
# default rule for generating dependency files
Modified: include/driver.h
===================================================================
--- include/driver.h 2010-05-11 19:31:33 UTC (rev 84)
+++ include/driver.h 2010-05-11 21:18:02 UTC (rev 85)
@@ -13,7 +13,7 @@
*/
#define CMPI_DRIVER_MAX_COMMAND (100+CMPI_KEY_LENGTH)
-typedef struct cmpi_driver_
+typedef struct
{
FILE* source;
FILE* sink;
Modified: include/gossip.h
===================================================================
--- include/gossip.h 2010-05-11 19:31:33 UTC (rev 84)
+++ include/gossip.h 2010-05-11 21:18:02 UTC (rev 85)
@@ -127,6 +127,8 @@
int gossip_enable_syslog(
int priority);
+int gossip_enable_stdout(
+ void);
int gossip_enable_stderr(
void);
int gossip_enable_file(
Modified: src/cmpi/driver.c
===================================================================
--- src/cmpi/driver.c 2010-05-11 19:31:33 UTC (rev 84)
+++ src/cmpi/driver.c 2010-05-11 21:18:02 UTC (rev 85)
@@ -157,8 +157,8 @@
{
char* p = tokens->head->next->data;
int i;
- SHOW_I(i);
sscanf(p, "%i", &i);
+ SHOW_FI(i);
sleep(i);
fprintf(driver->sink, "ok\n");
fflush(driver->sink);
@@ -167,11 +167,16 @@
void
driver_quit(cmpi_driver* driver)
{
+ NOTE_F;
+
driver->quitting = true;
fprintf(driver->sink, "ok\n");
fflush(driver->sink);
+ NOTE("sent ok");
+ sleep(1);
+
cmpi_shutdown();
DONE;
}
@@ -183,8 +188,8 @@
struct list* tokens = list_parse(driver->command);
- gossip_ldebug(MASK_DRIVER, "got tokens: \n");
- gossip_do(MASK_DRIVER, list_printf("%s", tokens));
+ NOTE("got tokens: ");
+ DEBUG(list_printf("%s", tokens));
if (tokens->size == 0)
return;
Modified: src/cmpi/module.mk.in
===================================================================
--- src/cmpi/module.mk.in 2010-05-11 19:31:33 UTC (rev 84)
+++ src/cmpi/module.mk.in 2010-05-11 21:18:02 UTC (rev 85)
@@ -39,5 +39,5 @@
$(CMPI): $(CMPI_OBJS) $(TABLE_OBJS)
$(Q) " AR $@"
- $(E)$(INSTALL) -d lib
- $(E)ar rcs $(@) $(CMPI_OBJS) $(TABLE_OBJS)
+ $(E) install -d lib
+ $(E) ar rcs $(@) $(CMPI_OBJS) $(TABLE_OBJS)
Modified: src/cmpi/node.c
===================================================================
--- src/cmpi/node.c 2010-05-11 19:31:33 UTC (rev 84)
+++ src/cmpi/node.c 2010-05-11 21:18:02 UTC (rev 85)
@@ -153,8 +153,10 @@
int
main(int argc, char* argv[])
{
- gossip_set_debug_mask(1,MASK_DEBUG|MASK_MPIRPC|MASK_ADTS|
- MASK_CMPI|MASK_DRIVER);
+ gossip_debug_init();
+ gossip_set_debug_mask(true,MASK_DEBUG|MASK_MPIRPC|MASK_ADTS|
+ MASK_CMPI|MASK_DRIVER);
+ gossip_enable_stdout();
// Comment out to achieve deterministic results:
// srand((unsigned int) time(NULL));
Modified: src/cmpi-db/module.mk.in
===================================================================
--- src/cmpi-db/module.mk.in 2010-05-11 19:31:33 UTC (rev 84)
+++ src/cmpi-db/module.mk.in 2010-05-11 21:18:02 UTC (rev 85)
@@ -1,17 +1,17 @@
DIR := src/cmpi-db
-CMPI_PROGS += bin/cmpi-db
-CMPI_PROGS += bin/cmpi-db-fifo-quit
-CMPI_SRC += src/cmpi-cp/cmpi-cp.c src/cmpi-db/cmpi-db-fifo-quit.c
+PROGS += bin/cmpi-db
+PROGS += bin/cmpi-db-fifo-quit
+CMPIDB_SRC += src/cmpi-cp/cmpi-cp.c src/cmpi-db/cmpi-db-fifo-quit.c
-CMPI_DB = bin/cmpi-db
+CMPIDB = bin/cmpi-db
-$(CMPI_DB): src/cmpi/node.o src/cmpi/driver.o src/cmpi-db/cmpi-db-fifo.o $(CMPI) bin
+$(CMPI_DB): src/cmpi-db/cmpi-db-fifo.o $(CMPI) bin
$(Q) " MPICC $(@)"
$(E)$(MPICC) $(MPE) src/cmpi/node.o src/cmpi/driver.o \
- src/cmpi-db/cmpi-db-fifo.o $(CMPI) $(LIBS) -o $(@)
+ $(<) $(CMPI) $(LIBS) -o $(@)
bin/cmpi-db-fifo-quit: src/cmpi-db/cmpi-db-fifo-quit.o $(CMPI) bin
$(Q) " MPICC $(@)"
- $(E)$(MPICC) src/cmpi-db/cmpi-db-fifo-quit.o $(CMPI) -o $(@)
+ $(E)$(MPICC) $(<) $(CMPI) -o $(@)
Modified: src/gossip/gossip.c
===================================================================
--- src/gossip/gossip.c 2010-05-11 19:31:33 UTC (rev 84)
+++ src/gossip/gossip.c 2010-05-11 21:18:02 UTC (rev 85)
@@ -11,6 +11,7 @@
* Handles debugging output.
*/
+#include <assert.h>
#include <strings.h>
#include <gossip.h>
@@ -23,15 +24,16 @@
enum
{
- GOSSIP_STDERR = 1,
- GOSSIP_FILE = 2,
+ GOSSIP_STDOUT = 1,
+ GOSSIP_STDERR = 2,
+ GOSSIP_FILE = 3,
GOSSIP_SYSLOG = 4
};
-/** determines which logging facility to use. Default to stderr to begin
+/** determines which logging facility to use. Default to stdout to begin
* with.
*/
-int gossip_facility = GOSSIP_STDERR;
+int gossip_facility = GOSSIP_STDOUT;
/* file handle used for file logging */
static FILE *internal_log_file = NULL;
@@ -45,6 +47,7 @@
/*****************************************************************
* prototypes
*/
+static int gossip_disable_stdout(void);
static int gossip_disable_stderr(void);
static int gossip_disable_file(void);
@@ -94,6 +97,29 @@
return 0;
}
+/** Turns on logging to stdout.
+ *
+ * \return 0 on success, -errno on failure.
+ */
+int gossip_enable_stdout(
+ void)
+{
+ /* keep up with the existing logging settings */
+ int tmp_debug_on = gossip_debug_on;
+ uint64_t tmp_debug_mask = gossip_debug_mask;
+
+ /* turn off any running facility */
+ gossip_disable();
+
+ gossip_facility = GOSSIP_STDOUT;
+
+ /* restore the logging settings */
+ gossip_debug_on = tmp_debug_on;
+ gossip_debug_mask = tmp_debug_mask;
+
+ return 0;
+}
+
/** Turns on logging to stderr.
*
* \return 0 on success, -errno on failure.
@@ -162,6 +188,9 @@
switch (gossip_facility)
{
+ case GOSSIP_STDOUT:
+ ret = gossip_disable_stdout();
+ break;
case GOSSIP_STDERR:
ret = gossip_disable_stderr();
break;
@@ -300,6 +329,9 @@
switch (gossip_facility)
{
+ case GOSSIP_STDOUT:
+ ret = gossip_debug_fp_va(stdout, prefix, format, ap, internal_logstamp);
+ break;
case GOSSIP_STDERR:
ret = gossip_debug_fp_va(stderr, prefix, format, ap, internal_logstamp);
break;
@@ -340,6 +372,9 @@
switch (gossip_facility)
{
+ case GOSSIP_STDOUT:
+ ret = gossip_debug_fp_va(stdout, 'E', format, ap, internal_logstamp);
+ break;
case GOSSIP_STDERR:
ret = gossip_debug_fp_va(stderr, 'E', format, ap, internal_logstamp);
break;
@@ -545,6 +580,18 @@
return 0;
}
+/* gossip_disable_stdout()
+ *
+ * The shutdown function for the stdout logging facility.
+ *
+ * returns 0 on success, -errno on failure
+ */
+static int gossip_disable_stdout(
+ void)
+{
+ /* this function doesn't need to do anything... */
+ return 0;
+}
/* gossip_disable_stderr()
*
Modified: src/mpirpc/module.mk.in
===================================================================
--- src/mpirpc/module.mk.in 2010-05-11 19:31:33 UTC (rev 84)
+++ src/mpirpc/module.mk.in 2010-05-11 21:18:02 UTC (rev 85)
@@ -10,5 +10,5 @@
lib/libmpirpc.a: $(MPIRPC_OBJS)
$(Q) " AR $@"
- $(E)$(INSTALL) -d lib
- $(E)ar crs $(@) $(MPIRPC_OBJS)
+ $(E) install -d lib
+ $(E) ar crs $(@) $(MPIRPC_OBJS)
Modified: test/driver/module.mk.in
===================================================================
--- test/driver/module.mk.in 2010-05-11 19:31:33 UTC (rev 84)
+++ test/driver/module.mk.in 2010-05-11 21:18:02 UTC (rev 85)
@@ -1,20 +1,37 @@
-TEST_DRIVER_SRC += # $(shell find test/driver -name "*.c" ! -name test_helpers.c)
-TEST_SRC += $(TEST_DRIVER_SRC)
-TEST_HELPER_SRC += test/driver/test_helpers.c
+DIR := test/driver
-DRIVER = test/driver/test_driver.x
+TEST_DRIVER_SRC += $(shell find test/driver -name "*.c" ! -name test_helpers.c)
-DRIVER_IMPL = test/driver/test_driver_fifo.o
+TEST_DRIVER_OBJS = $(patsubst %.c, %.o, $(TEST_DRIVER_SRC))
+TEST_DRIVER_OUTPUT = $(patsubst %.c, %.out, $(TEST_DRIVER_SRC))
-test/driver/test%.x: test/driver/test%.o $(DRIVER)
+TEST_HELPER_SRC := test/driver/test_helpers.c
+TEST_DRIVER_OBJS += $(patsubst %.c, %.o, $(TEST_HELPER_SRC))
+
+TEST_SRC += $(TEST_DRIVER_SRC)
+TEST_OBJS += $(TEST_DRIVER_OBJS)
+TEST_PROGS += $(patsubst %.c, %.x, $(TEST_DRIVER_SRC))
+TEST_OUTPUT += $(TEST_DRIVER_OUTPUT)
+
+TEST_DRIVER = test/driver/test_driver.x
+
+TEST_DRIVER_IMPL = test/driver/test_driver_fifo.o
+
+$(TEST_DRIVER): $(TEST_DRIVER_IMPL) test/driver/test_helpers.o $(CMPI)
$(Q) " MPICC $(@) "
+ $(E) $(MPICC) $(MPE) $(<) test/driver/test_helpers.o \
+ $(CMPI) $(LIBS) -o $(@)
+
+test/driver/test%.x: test/driver/test%.o test/driver/test_helpers.o $(DRIVER)
+ $(Q) " MPICC $(@) "
$(E)$(MPICC) $(MPE) $(<) test/driver/test_helpers.o $(CMPI) $(LIBS) -o $(@)
-test/driver/test%.out: test/driver/test%.x $(DRIVER)
+test/driver/test02.x: test/driver/test02.o test/driver/test_helpers.o \
+ $(CMPI)
+ $(Q) " MPICC $(@) "
+ $(E)$(MPICC) $(MPE) $(<) test/driver/test_helpers.o $(CMPI) $(LIBS) -o $(@)
+
+test/driver/test%.out: test/driver/test%.zsh test/driver/test02.x $(TEST_DRIVER)
$(Q) " TEST $(@) "
- $(E)touch $(@)
-
-$(DRIVER): $(DRIVER_IMPL) test/driver/test_helpers.o src/cmpi/node.o $(CMPI)
- $(E)$(MPICC) $(MPE) $(<) test/driver/test_helpers.o src/cmpi/node.o \
- $(CMPI) $(LIBS) -o $(@)
+ $(E) $(<) $(@)
Added: test/driver/test-quit.zsh
===================================================================
--- test/driver/test-quit.zsh (rev 0)
+++ test/driver/test-quit.zsh 2010-05-11 21:18:02 UTC (rev 85)
@@ -0,0 +1,25 @@
+#!/bin/zsh
+
+OUTPUT=$1
+
+mpiexec -n 5 test/driver/test_driver.x -n 4 > ${OUTPUT} &
+DRIVER_PID=${!}
+
+tools/timebomb.zsh ${$} 10 ${OUTPUT} $0
+BOMB1_PID=${!}
+
+sleep 5
+
+print "Launching tool 02..."
+test/driver/test02.x
+
+wait
+
+N=$( grep -c "Normal exit" ${OUTPUT} )
+if (( N != 5 ))
+then
+ mv -v ${OUTPUT} ${OUTPUT}.failed
+ exit 1
+fi
+
+return 0
Property changes on: test/driver/test-quit.zsh
___________________________________________________________________
Added: svn:executable
+ *
Modified: test/driver/test01.c
===================================================================
--- test/driver/test01.c 2010-05-11 19:31:33 UTC (rev 84)
+++ test/driver/test01.c 2010-05-11 21:18:02 UTC (rev 85)
@@ -1,21 +1,24 @@
+#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <accessor.h>
int
main(int argc, char* argv[])
{
+ int error;
+
driver_access_fifo();
fprintf(to_cmpi, "sleep 3\n");
fflush(to_cmpi);
- char output[30];
- fscanf(from_cmpi, "output: %s", output);
+ char output[32];
+ error = fscanf(from_cmpi, "%s", output);
- printf("%s\n", output);
+ assert(!strcmp(output, "ok"));
return 0;
}
-
Modified: test/driver/test02.c
===================================================================
--- test/driver/test02.c 2010-05-11 19:31:33 UTC (rev 84)
+++ test/driver/test02.c 2010-05-11 21:18:02 UTC (rev 85)
@@ -2,19 +2,23 @@
#include <stdio.h>
#include <stdlib.h>
+#include <mpi_tools.h>
#include <accessor.h>
int
main(int argc, char* argv[])
{
- driver_access_fifo();
+ int error;
+ error = driver_access_fifo();
+ assert(error);
+
fprintf(to_cmpi, "quit\n");
fflush(to_cmpi);
- char output[30];
- fscanf(from_cmpi, "output: %s", output);
+ char output[32];
+ fscanf(from_cmpi, "%s", output);
- printf("%s\n", output);
+ assert(!strcmp(output, "ok"));
return 0;
}
Modified: test/driver/test03.c
===================================================================
--- test/driver/test03.c 2010-05-11 19:31:33 UTC (rev 84)
+++ test/driver/test03.c 2010-05-11 21:18:02 UTC (rev 85)
@@ -1,25 +1,26 @@
-#include <stdio.h>
+#include <assert.h>
+#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
+#include <string.h>
-#include <accessor.h>
+#include <accessor.h>
int
main(int argc, char* argv[])
{
driver_access_fifo();
-
- char data[30] = "hello does this work";
-
+
+ char* data = "hello does this work";
+
fprintf(to_cmpi, "put key1 %i\n", (int) strlen(data));
fprintf(to_cmpi, "%s", data);
- fflush(to_cmpi);
-
- char output[30];
- fscanf(from_cmpi, "output: %s", output);
+ fflush(to_cmpi);
- printf("%s\n", output);
+ char output[32];
+ fscanf(from_cmpi, "%s", output);
- return 0;
+ assert(!strcmp(output, "ok"));
+
+ return 0;
}
Added: tools/timebomb.zsh
===================================================================
--- tools/timebomb.zsh (rev 0)
+++ tools/timebomb.zsh 2010-05-11 21:18:02 UTC (rev 85)
@@ -0,0 +1,17 @@
+#!/bin/zsh
+
+TARGET=$1
+DELAY=$2
+DATA=$3
+shift 3
+LABEL=${*}
+
+sleep ${DELAY}
+
+print "timebomb killing: ${LABEL} PID: ${TARGET}"
+
+cp -v ${DATA} ${DATA}.bak
+
+sleep 3
+
+kill ${TARGET}
Property changes on: tools/timebomb.zsh
___________________________________________________________________
Added: svn:executable
+ *
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jmw...@us...> - 2010-05-14 19:41:31
|
Revision: 119
http://c-mpi.svn.sourceforge.net/c-mpi/?rev=119&view=rev
Author: jmwozniak
Date: 2010-05-14 19:41:24 +0000 (Fri, 14 May 2010)
Log Message:
-----------
Test fix to take into account use of CMPI_MODE
Modified Paths:
--------------
configure.ac
include/cmpi_mode.h
src/cmpi/mode_mono.c
src/cmpi/mode_rr.c
src/cmpi/module.mk.in
src/dense-1/cmpi_dense.c
test/cmpi/module.mk.in
test/cmpi/test-manyputs.zsh
test/cmpi/test-putget.zsh
test/cmpi/test-startup.zsh
test/cmpi/test-tables.zsh
test/cmpi/test-update01.zsh
test/cmpi/test-update02.zsh
tools/test-helpers.zsh
Modified: configure.ac
===================================================================
--- configure.ac 2010-05-14 18:59:07 UTC (rev 118)
+++ configure.ac 2010-05-14 19:41:24 UTC (rev 119)
@@ -323,6 +323,23 @@
AC_SUBST(USE_TABLE_KDA_2B)
AC_SUBST(USE_COMM_WORLD)
+dnl C-MPI mode selection:
+USE_CMPI_MODE=MONO
+AC_ARG_ENABLE([mode-mono],
+ AS_HELP_STRING(
+ [--enable-mode-mono],
+ [use mode-mono node/client topology]),
+ [AC_MSG_RESULT([using mode-mono...])
+ USE_CMPI_MODE=MONO])
+
+AC_ARG_ENABLE([mode-pairs],
+ AS_HELP_STRING(
+ [--enable-mode-pairs],
+ [use mode-pairs node/client topology]),
+ [AC_MSG_RESULT([using mode-mono...])
+ USE_CMPI_MODE=PAIRS])
+AC_SUBST(USE_CMPI_MODE)
+
AC_ARG_ENABLE([driver],
AS_HELP_STRING(
[--enable-driver],
Modified: include/cmpi_mode.h
===================================================================
--- include/cmpi_mode.h 2010-05-14 18:59:07 UTC (rev 118)
+++ include/cmpi_mode.h 2010-05-14 19:41:24 UTC (rev 119)
@@ -5,3 +5,4 @@
struct inlist* cmpi_mode_contacts(int rank, int size, int nodes);
int cmpi_mode_next(int rank, int size, int nodes);
int cmpi_mode_first_client(int rank, int size, int nodes);
+struct inlist* cmpi_shutdown_list(int rank, int size, int nodes);
Modified: src/cmpi/mode_mono.c
===================================================================
--- src/cmpi/mode_mono.c 2010-05-14 18:59:07 UTC (rev 118)
+++ src/cmpi/mode_mono.c 2010-05-14 19:41:24 UTC (rev 119)
@@ -53,3 +53,24 @@
{
return nodes;
}
+
+/**
+ Obtain the list of nodes that this rank is
+ responsible for instructing to quit.
+*/
+struct inlist* cmpi_shutdown_list(int rank, int size, int nodes)
+{
+ struct inlist* result = inlist_create();
+
+ int mode = cmpi_mode_select(rank, size, nodes);
+ assert(mode != CMPI_MODE_NODE);
+
+ int first = cmpi_mode_first_client(rank, size, nodes);
+ if (rank == first)
+ {
+ for (int i = 0; i < nodes; i++)
+ inlist_add(result, i);
+ }
+
+ return result;
+}
Modified: src/cmpi/mode_rr.c
===================================================================
--- src/cmpi/mode_rr.c 2010-05-14 18:59:07 UTC (rev 118)
+++ src/cmpi/mode_rr.c 2010-05-14 19:41:24 UTC (rev 119)
@@ -15,7 +15,7 @@
printf("MPI size must be even for mode_rr!\n");
exit(1);
}
-
+
if (rank >= size/2)
return CMPI_MODE_CLIENT;
return CMPI_MODE_NODE;
@@ -48,14 +48,14 @@
result = next;
}
else
- {
+ {
int next = rank+1;
if (next >= size)
result = -1;
else
result = next;
}
-
+
return result;
}
@@ -63,3 +63,14 @@
{
return size/2;
}
+
+/**
+ Obtain the list of nodes that this rank is
+ responsible for instructing to quit.
+*/
+struct inlist* cmpi_shutdown_list(int rank, int size, int nodes)
+{
+ struct inlist* result = cmpi_mode_contacts(rank, size, nodes);
+
+ return result;
+}
Modified: src/cmpi/module.mk.in
===================================================================
--- src/cmpi/module.mk.in 2010-05-14 18:59:07 UTC (rev 118)
+++ src/cmpi/module.mk.in 2010-05-14 19:41:24 UTC (rev 119)
@@ -7,8 +7,8 @@
CMPI_SRC += $(DIR)/driver.c
CMPI_SRC += $(DIR)/accessor.c
-#MODE = $(DIR)/mode_mono.c
-MODE = $(DIR)/mode_rr.c
+MODE = $(DIR)/mode_mono.c
+#MODE = $(DIR)/mode_rr.c
CMPI_SRC += $(MODE)
Modified: src/dense-1/cmpi_dense.c
===================================================================
--- src/dense-1/cmpi_dense.c 2010-05-14 18:59:07 UTC (rev 118)
+++ src/dense-1/cmpi_dense.c 2010-05-14 19:41:24 UTC (rev 119)
@@ -204,15 +204,19 @@
void
cmpi_shutdown()
{
- struct inlist_item* item;
NOTE_F;
+ struct inlist_item* item;
+ struct inlist* list =
+ cmpi_shutdown_list(mpi_rank, mpi_size, cmpi_nodes);
+
MPIRPC_Node node;
- for (item = contacts->head; item; item = item->next)
+ for (item = list->head; item; item = item->next)
{
MPIRPC_Node_make(MPI_COMM_WORLD, item->data, &node);
DENSE_Shutdown(node);
}
+ inlist_free(list);
DONE;
}
Modified: test/cmpi/module.mk.in
===================================================================
--- test/cmpi/module.mk.in 2010-05-14 18:59:07 UTC (rev 118)
+++ test/cmpi/module.mk.in 2010-05-14 19:41:24 UTC (rev 119)
@@ -3,7 +3,12 @@
TEST_CMPI_SRC += $(shell find test/cmpi -name "*.c" ! -name test_helpers.c)
TEST_CMPI_OBJS = $(patsubst %.c, %.o, $(TEST_CMPI_SRC))
-TEST_CMPI_OUTPUT = $(patsubst %.c, %.out, $(TEST_CMPI_SRC))
+TEST_CMPI_OUTPUT = test/cmpi/test-startup.out \
+ test/cmpi/test-tables.out \
+ test/cmpi/test-putget.out \
+ test/cmpi/test-manyputs.out \
+ test/cmpi/test-update01.out \
+ test/cmpi/test-update02.out
TEST_HELPER_SRC := test/cmpi/test_helpers.c
TEST_CMPI_OBJS += $(patsubst %.c, %.o, $(TEST_HELPER_SRC))
@@ -13,6 +18,14 @@
TEST_PROGS += $(patsubst %.c, %.x, $(TEST_CMPI_SRC))
TEST_OUTPUT += $(TEST_CMPI_OUTPUT)
+ifeq (@USE_CMPI_MODE@,MONO)
+ NODES := 5
+ CLIENTS := 1
+else
+ NODES := 3
+ CLIENTS := 3
+endif
+
ifeq (@USE_COMM_WORLD@,1)
$(DIR)/test%.x: $(DIR)/test%.o $(DIR)/test_helpers.o src/cmpi/node.o $(CMPI)
@@ -31,7 +44,7 @@
$(DIR)/test%.out: $(DIR)/test%.x $(DIR)/test%.zsh
$(E) $(MPDCHECK)
$(Q) " TEST $(@) "
- $(E) $(patsubst %.x, %.zsh, $(<)) $(<) $(LAUNCH)
+ $(E) $(patsubst %.x, %.zsh, $(<)) $(<) $(NODES) $(CLIENTS) $(LAUNCH)
$(DIR)/test-success.out: test/mpirpc/test-success.out \
$(TEST_CMPI_OUTPUT)
Modified: test/cmpi/test-manyputs.zsh
===================================================================
--- test/cmpi/test-manyputs.zsh 2010-05-14 18:59:07 UTC (rev 118)
+++ test/cmpi/test-manyputs.zsh 2010-05-14 19:41:24 UTC (rev 119)
@@ -7,16 +7,20 @@
source tools/test-helpers.zsh
PROGRAM=$1
-OUTPUT=${PROGRAM%.x}.out
-shift
+NODES=$2
+CLIENTS=$3
+shift 3
LAUNCH=${*}
+OUTPUT=${PROGRAM%.x}.out
+TOTAL=$(( NODES+CLIENTS ))
+
if (( USE_COMM_WORLD == 1 ))
then
# Monolithic execution (3 nodes, 3 clients):
- mpiexec -n 6 ${PROGRAM} -n 3 -p reps=10 >& ${OUTPUT}
+ mpiexec -n ${TOTAL} ${PROGRAM} -n ${NODES} -p reps=10 >& ${OUTPUT}
CODE=$?
[[ ${CODE} == 0 ]] || crash "exit code was: ${CODE}"
@@ -31,7 +35,6 @@
fi
# Should be 6 "Normal exit."s
-N=$( grep -c "Normal exit." ${OUTPUT} )
-(( N == 6 )) || crash "N != 6"
+check_exits ${TOTAL} ${OUTPUT}
exit 0
Modified: test/cmpi/test-putget.zsh
===================================================================
--- test/cmpi/test-putget.zsh 2010-05-14 18:59:07 UTC (rev 118)
+++ test/cmpi/test-putget.zsh 2010-05-14 19:41:24 UTC (rev 119)
@@ -7,16 +7,20 @@
source tools/test-helpers.zsh
PROGRAM=$1
-OUTPUT=${PROGRAM%.x}.out
-shift
+NODES=$2
+CLIENTS=$3
+shift 3
LAUNCH=${*}
+OUTPUT=${PROGRAM%.x}.out
+TOTAL=$(( NODES+CLIENTS ))
+
if (( USE_COMM_WORLD == 1 ))
then
# Monolithic execution (3 nodes, 3 clients):
- mpiexec -n 6 ${PROGRAM} -n 3 >& ${OUTPUT}
+ mpiexec -n ${TOTAL} ${PROGRAM} -n ${NODES} >& ${OUTPUT}
CODE=$?
[[ ${CODE} == 0 ]] || crash "exit code was: ${CODE}"
@@ -30,8 +34,7 @@
fi
-# Should be 5 "Normal exit."s
-N=$( grep -c "Normal exit." ${OUTPUT} )
-(( N == 6 )) || crash "N != 6"
+# Should be TOTAL "Normal exit."s
+check_exits ${TOTAL} ${OUTPUT}
exit 0
Modified: test/cmpi/test-startup.zsh
===================================================================
--- test/cmpi/test-startup.zsh 2010-05-14 18:59:07 UTC (rev 118)
+++ test/cmpi/test-startup.zsh 2010-05-14 19:41:24 UTC (rev 119)
@@ -7,15 +7,19 @@
source tools/test-helpers.zsh
PROGRAM=$1
-OUTPUT=${PROGRAM%.x}.out
-shift
+NODES=$2
+CLIENTS=$3
+shift 3
LAUNCH=${*}
+OUTPUT=${PROGRAM%.x}.out
+TOTAL=$(( NODES+CLIENTS ))
+
if (( USE_COMM_WORLD == 1 ))
then
- # KDA-2A execution (3 nodes, 3 clients):
- mpiexec -n 6 ${PROGRAM} -n 3 >& ${OUTPUT}
+ # Monolithic execution (3 nodes, 3 clients):
+ mpiexec -n ${TOTAL} ${PROGRAM} -n ${NODES} -p reps=10 >& ${OUTPUT}
CODE=$?
[[ ${CODE} == 0 ]] || crash "exit code was: ${CODE}"
@@ -31,8 +35,8 @@
fi
-# Should be 6 "Normal exit."s
+# Should be TOTAL "Normal exit."s
N=$( grep -c "Normal exit." ${OUTPUT} )
-(( N == 6 )) || crash "N != 6"
+(( N == TOTAL )) || crash "N != ${TOTAL}"
exit 0
Modified: test/cmpi/test-tables.zsh
===================================================================
--- test/cmpi/test-tables.zsh 2010-05-14 18:59:07 UTC (rev 118)
+++ test/cmpi/test-tables.zsh 2010-05-14 19:41:24 UTC (rev 119)
@@ -7,15 +7,19 @@
source tools/test-helpers.zsh
PROGRAM=$1
-OUTPUT=${PROGRAM%.x}.out
-shift
+NODES=$2
+CLIENTS=$3
+shift 3
LAUNCH=${*}
+OUTPUT=${PROGRAM%.x}.out
+TOTAL=$(( NODES+CLIENTS ))
+
if (( USE_COMM_WORLD == 1 ))
then
- # KDA-2A execution (3 nodes, 3 clients):
- mpiexec -n 6 ${PROGRAM} -n 3 >& ${OUTPUT}
+ # Monolithic execution:
+ mpiexec -n ${TOTAL} ${PROGRAM} -n ${NODES} -p reps=10 >& ${OUTPUT}
CODE=$?
[[ ${CODE} == 0 ]] || crash "exit code was: ${CODE}"
@@ -29,8 +33,8 @@
fi
-# Should be 6 "Normal exit."s
+# Should be TOTAL "Normal exit."s
N=$( grep -c "Normal exit." ${OUTPUT} )
-(( N == 6 )) || crash "N != 6"
+(( N == TOTAL )) || crash "N != ${TOTAL}"
exit 0
Modified: test/cmpi/test-update01.zsh
===================================================================
--- test/cmpi/test-update01.zsh 2010-05-14 18:59:07 UTC (rev 118)
+++ test/cmpi/test-update01.zsh 2010-05-14 19:41:24 UTC (rev 119)
@@ -7,16 +7,19 @@
source tools/test-helpers.zsh
PROGRAM=$1
-OUTPUT=${PROGRAM%.x}.out
-shift
+NODES=$2
+CLIENTS=$3
+shift 3
LAUNCH=${*}
+OUTPUT=${PROGRAM%.x}.out
+TOTAL=$(( NODES+CLIENTS ))
+
if (( USE_COMM_WORLD == 1 ))
then
- # Monolithic execution (3 nodes, 3 clients):
-
- mpiexec -n 6 ${PROGRAM} -n 3 -p reps=10 >& ${OUTPUT}
+ # Monolithic execution:
+ mpiexec -n ${TOTAL} ${PROGRAM} -n ${NODES} -p reps=10 >& ${OUTPUT}
CODE=$?
[[ ${CODE} == 0 ]] || crash "exit code was: ${CODE}"
@@ -30,8 +33,6 @@
fi
-# Should be 6 "Normal exit."s
-N=$( grep -c "Normal exit." ${OUTPUT} )
-(( N == 6 )) || crash "N != 6"
+check_exits ${TOTAL} ${OUTPUT}
exit 0
Modified: test/cmpi/test-update02.zsh
===================================================================
--- test/cmpi/test-update02.zsh 2010-05-14 18:59:07 UTC (rev 118)
+++ test/cmpi/test-update02.zsh 2010-05-14 19:41:24 UTC (rev 119)
@@ -7,16 +7,19 @@
source tools/test-helpers.zsh
PROGRAM=$1
+NODES=$2
+CLIENTS=$3
+shift 3
+LAUNCH=${*}
OUTPUT=${PROGRAM%.x}.out
-shift
-LAUNCH=${*}
+TOTAL=$(( NODES+CLIENTS ))
if (( USE_COMM_WORLD == 1 ))
then
- # Monolithic execution (3 nodes, 3 clients):
+ # Monolithic execution:
- mpiexec -n 6 ${PROGRAM} -n 3 -p reps=10 >& ${OUTPUT}
+ mpiexec -n ${TOTAL} ${PROGRAM} -n ${CLIENTS} -p reps=10 >& ${OUTPUT}
CODE=$?
[[ ${CODE} == 0 ]] || crash "exit code was: ${CODE}"
@@ -30,8 +33,6 @@
fi
-# Should be 6 "Normal exit."s
-N=$( grep -c "Normal exit." ${OUTPUT} )
-(( N == 6 )) || crash "N != 6"
+check_exits ${TOTAL} ${OUTPUT}
exit 0
Modified: tools/test-helpers.zsh
===================================================================
--- tools/test-helpers.zsh 2010-05-14 18:59:07 UTC (rev 118)
+++ tools/test-helpers.zsh 2010-05-14 19:41:24 UTC (rev 119)
@@ -26,3 +26,12 @@
mv -v ${OUTPUT} ${OUTPUT}.failed
exit 1
}
+
+check_exits()
+# Should be TOTAL "Normal exit."s
+{
+ TOTAL=$1
+ OUTPUT=$2
+ N=$( grep -c "Normal exit." ${OUTPUT} )
+ (( N == TOTAL )) || crash "N != ${TOTAL}"
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jmw...@us...> - 2018-02-02 16:06:36
|
Revision: 205
http://sourceforge.net/p/c-mpi/code/205
Author: jmwozniak
Date: 2018-02-02 16:06:34 +0000 (Fri, 02 Feb 2018)
Log Message:
-----------
Add docs
Modified Paths:
--------------
tools/timebomb.zsh
Added Paths:
-----------
README.txt
Added: README.txt
===================================================================
--- README.txt (rev 0)
+++ README.txt 2018-02-02 16:06:34 UTC (rev 205)
@@ -0,0 +1,6 @@
+
+Install (APT) libssl-dev for libcrypto.
+
+./setup.sh
+./configure --prefix=... --enable-table-kda-2A
+make
Modified: tools/timebomb.zsh
===================================================================
--- tools/timebomb.zsh 2018-02-02 16:05:36 UTC (rev 204)
+++ tools/timebomb.zsh 2018-02-02 16:06:34 UTC (rev 205)
@@ -1,5 +1,8 @@
#!/bin/zsh
+# TIMEBOMB
+# Kills given PID after given delay
+
TARGET=$1
DELAY=$2
DATA=$3
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jmw...@us...> - 2010-05-24 00:34:08
|
Revision: 148
http://c-mpi.svn.sourceforge.net/c-mpi/?rev=148&view=rev
Author: jmwozniak
Date: 2010-05-24 00:34:01 +0000 (Mon, 24 May 2010)
Log Message:
-----------
Probable bug fix to driver
Modified Paths:
--------------
src/cmpi/accessor.c
src/cmpi/driver.c
test/cmpi-db/test-cp1.zsh
test/cmpi-db/test-loop.zsh
tools/test-helpers.zsh
Modified: src/cmpi/accessor.c
===================================================================
--- src/cmpi/accessor.c 2010-05-23 23:18:14 UTC (rev 147)
+++ src/cmpi/accessor.c 2010-05-24 00:34:01 UTC (rev 148)
@@ -1,5 +1,6 @@
#include <assert.h>
+#include <errno.h>
#include <stdlib.h>
#include <string.h>
@@ -42,12 +43,16 @@
if (to_cmpi == NULL)
{
printf("Could not open: %s \n", fifo_in);
+ printf("errno: %s\n", strerror(errno));
+ fflush(stdout);
return false;
}
from_cmpi = fopen(fifo_out, "r");
if (from_cmpi == NULL)
{
printf("Could not open: %s \n", fifo_out);
+ printf("errno: %s\n", strerror(errno));
+ fflush(stdout);
return false;
}
return true;
Modified: src/cmpi/driver.c
===================================================================
--- src/cmpi/driver.c 2010-05-23 23:18:14 UTC (rev 147)
+++ src/cmpi/driver.c 2010-05-24 00:34:01 UTC (rev 148)
@@ -82,8 +82,9 @@
if (!fifo_in)
driver_setup_fifo_names();
- unlink(fifo_in);
- unlink(fifo_out);
+ // This was a bad idea:
+ // unlink(fifo_in);
+ // unlink(fifo_out);
int error = mkfifo(fifo_in, S_IRUSR|S_IWUSR);
if (error != 0 &&
Modified: test/cmpi-db/test-cp1.zsh
===================================================================
--- test/cmpi-db/test-cp1.zsh 2010-05-23 23:18:14 UTC (rev 147)
+++ test/cmpi-db/test-cp1.zsh 2010-05-24 00:34:01 UTC (rev 148)
@@ -42,6 +42,7 @@
fi
bin/cmpi-db-quit >& /dev/null
+tool_error "cmpi-db-quit" ${?}
QUIT_PROCESS=$!
wait ${DB_PID}
Modified: test/cmpi-db/test-loop.zsh
===================================================================
--- test/cmpi-db/test-loop.zsh 2010-05-23 23:18:14 UTC (rev 147)
+++ test/cmpi-db/test-loop.zsh 2010-05-24 00:34:01 UTC (rev 148)
@@ -1,44 +1,28 @@
#!/bin/zsh
# Be sure to make tests with D=1
+# Produces output in test-loop.out and tool.out
-set -x
+# set -x
OUTPUT=$1
NODES=$2
CLIENTS=$3
-TOTAL=$(( NODES+CLIENTS ))
-
-LOOPS=10
-
TOOL_OUT=tool.out
INPUT_DATA=input.data
OUTPUT_DATA=output.data
-tool_error()
-{
- TOOL=$1
- ERR=$2
- if [[ ${ERR} != 0 ]]
- then
- cat ${TOOL_OUT}
- rm -v ${TOOL_OUT}
- print "${TOOL}: error: ${ERR}"
- kill ${DB_PID}
- kill ${BOMB_PID}
- crash "failed"
- else
- print "success"
- fi
-}
+TOTAL=$(( NODES+CLIENTS ))
+LOOPS=10
+
source tools/test-helpers.zsh
mpiexec -n ${TOTAL} bin/cmpi-db -n ${NODES} >& ${OUTPUT} &
DB_PID=${!}
-tools/timebomb.zsh ${DB_PID} $(( TOTAL*6 + LOOPS*4 )) ${OUTPUT} $0 &
+tools/timebomb.zsh ${DB_PID} $(( TOTAL*10 + LOOPS*4 )) ${OUTPUT} $0 &
BOMB_PID=${!}
sleep ${TOTAL}
Modified: tools/test-helpers.zsh
===================================================================
--- tools/test-helpers.zsh 2010-05-23 23:18:14 UTC (rev 147)
+++ tools/test-helpers.zsh 2010-05-24 00:34:01 UTC (rev 148)
@@ -27,6 +27,19 @@
exit 1
}
+tool_error()
+{
+ TOOL=$1
+ ERR=$2
+ if [[ ${ERR} != 0 ]]
+ then
+ print "${TOOL}: error: ${ERR}"
+ kill ${DB_PID}
+ kill ${BOMB_PID}
+ crash "failed"
+ fi
+}
+
check_exits()
# Should be TOTAL "Normal exit."s
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|