Index: /branches/rel10/psModules/test/config/.cvsignore
===================================================================
--- /branches/rel10/psModules/test/config/.cvsignore	(revision 6361)
+++ /branches/rel10/psModules/test/config/.cvsignore	(revision 6361)
@@ -0,0 +1,7 @@
+.deps
+.libs
+Makefile
+Makefile.in
+temp
+tst_pmConfig
+SampleIPPConfig
Index: /branches/rel10/psModules/test/config/Makefile.am
===================================================================
--- /branches/rel10/psModules/test/config/Makefile.am	(revision 6361)
+++ /branches/rel10/psModules/test/config/Makefile.am	(revision 6361)
@@ -0,0 +1,27 @@
+# Makefile for psModule tests
+
+AM_LDFLAGS = -L$(top_builddir)/src -lpsmodule $(PSMODULE_LIBS)
+AM_CFLAGS  = @AM_CFLAGS@ $(PSMODULE_CFLAGS) $(SRCINC)
+
+TESTS = \
+    tst_pmConfig
+
+tst_pmConfig_SOURCES = tst_pmConfig.c
+
+check_PROGRAMS = $(TESTS)
+
+check_DATA = \
+    SampleIPPConfig
+
+TESTS_ENVIRONMENT = perl $(top_srcdir)/test/runTest --verified=$(srcdir)/verified
+
+SampleIPPConfig: data/SampleIPPConfig
+	cp $? $@
+
+tests: $(TESTS) $(check_DATA)
+
+EXTRA_DIST = verified data
+
+CLEANFILES = $(TESTS) temp/* $(check_DATA)
+
+test: check
Index: /branches/rel10/psModules/test/config/tst_pmConfig.c
===================================================================
--- /branches/rel10/psModules/test/config/tst_pmConfig.c	(revision 6361)
+++ /branches/rel10/psModules/test/config/tst_pmConfig.c	(revision 6361)
@@ -0,0 +1,272 @@
+/** @file tst_pmConfig.c
+ *
+ *  @brief Contains the tests for pmConfig.c:
+ *
+ * test00: This code will test the pmConfig() routine.
+ *
+ *  @author GLG, MHPCC
+ *
+ * XXX: Untested:
+ * pmConfigValidateCamera()
+ * pmConfigCameraFromHeader()
+ * pmConfigRecipeFromCamera()
+ * pmConfigDB()
+ *
+ *  @version $Revision: 1.6 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-02-08 01:57:44 $
+ *
+ *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
+ */
+#include "psTest.h"
+#include "pslib.h"
+#include "pmConfig.h"
+
+static int test00(void);
+testDescription tests[] = {
+                              {test00, 000, "pmConfig:", true, false},
+                              {NULL}
+                          };
+
+int main(int argc, char* argv[])
+{
+    psLogSetFormat("HLNM");
+    //
+    // We include the function names here in psTraceSetLevel() commands for
+    // debugging convenience.  There is no guarantee that this list of functions
+    // is complete.
+    //
+    psTraceSetLevel(".", 0);
+    psTraceSetLevel("readConfig", 0);
+    psTraceSetLevel("pmConfigRead", 0);
+    psTraceSetLevel("pmConfigValidateCamera", 0);
+    psTraceSetLevel("pmConfigCameraFromHeader", 0);
+    psTraceSetLevel("pmConfigRecipeFromCamera", 0);
+    psTraceSetLevel("pmConfigDB", 0);
+    return !runTestSuite(stderr, "Test Point Driver", tests, argc, argv);
+}
+
+/******************************************************************************
+test00():
+XXX: untested:
+    TIME:
+    LOGFORMAT: tested implicitly via the stdout files.
+    Command line arguments for logging shall override config file defaults.
+ *****************************************************************************/
+int test00( void )
+{
+    psTraceSetLevel(".", 0);
+    bool testStatus = true;
+    psBool rc = 0;
+    psString str[3];
+    str[0] = "ARGS:";
+    str[1] = "-site";
+    str[2] = "SampleIPPConfig";
+
+    psMetadata *site = psMetadataAlloc();
+    psMetadata *camera = psMetadataAlloc();
+    psMetadata *recipe = psMetadataAlloc();
+    psS32 argc = 3;
+
+    psMetadata *nullMD = NULL;
+    printf("----------------------------------------------------------------\n");
+    printf("Calling pmConfigRead() with NULL site pointer.  Should generate ERROR, return false.\n");
+    rc = pmConfigRead(NULL, &camera, &recipe, &argc, str, "RecipeName");
+    if (rc == true) {
+        printf("TEST ERROR: pmConfigRead() returned true\n");
+        testStatus = false;
+    }
+
+    printf("----------------------------------------------------------------\n");
+    printf("Calling pmConfigRead() with NULL *site pointer.  Should generate ERROR, return false.\n");
+    rc = pmConfigRead(&nullMD, &camera, &recipe, &argc, str, "RecipeName");
+    if (rc == true) {
+        printf("TEST ERROR: pmConfigRead() returned true\n");
+        testStatus = false;
+    }
+
+    printf("----------------------------------------------------------------\n");
+    printf("Calling pmConfigRead() with NULL camera pointer.  Should generate ERROR, return false.\n");
+    rc = pmConfigRead(&site, NULL, &recipe, &argc, str, "RecipeName");
+    if (rc == true) {
+        printf("TEST ERROR: pmConfigRead() returned true\n");
+        testStatus = false;
+    }
+
+    printf("----------------------------------------------------------------\n");
+    printf("Calling pmConfigRead() with NULL *camera pointer.  Should generate ERROR, return false.\n");
+    rc = pmConfigRead(&site, &nullMD, &recipe, &argc, str, "RecipeName");
+    if (rc == true) {
+        printf("TEST ERROR: pmConfigRead() returned true\n");
+        testStatus = false;
+    }
+
+    printf("----------------------------------------------------------------\n");
+    printf("Calling pmConfigRead() with NULL recipe pointer.  Should generate ERROR, return false.\n");
+    rc = pmConfigRead(&site, &camera, NULL, &argc, str, "RecipeName");
+    if (rc == true) {
+        printf("TEST ERROR: pmConfigRead() returned true\n");
+        testStatus = false;
+    }
+
+    printf("----------------------------------------------------------------\n");
+    printf("Calling pmConfigRead() with NULL *recipe pointer.  Should generate ERROR, return false.\n");
+    rc = pmConfigRead(&site, &camera, &nullMD, &argc, str, "RecipeName");
+    if (rc == true) {
+        printf("TEST ERROR: pmConfigRead() returned true\n");
+        testStatus = false;
+    }
+
+    printf("----------------------------------------------------------------\n");
+    printf("Calling pmConfigRead() with NULL argv pointer.  Should generate ERROR, return false.\n");
+    rc = pmConfigRead(&site, &camera, &recipe, &argc, NULL, "RecipeName");
+    if (rc == true) {
+        printf("TEST ERROR: pmConfigRead() returned true\n");
+        testStatus = false;
+    }
+
+    printf("----------------------------------------------------------------\n");
+    printf("Calling pmConfigRead() with negative argc.  Should generate ERROR, return false.\n");
+    psS32 tmpArgc = -1;
+    rc = pmConfigRead(&site, &camera, &recipe, &tmpArgc, str, "RecipeName");
+    if (rc == true) {
+        printf("TEST ERROR: pmConfigRead() returned true\n");
+        testStatus = false;
+    }
+
+    printf("----------------------------------------------------------------\n");
+    printf("Calling pmConfigRead() with acceptable arguments.\n");
+
+    rc = pmConfigRead(&site, &camera, &recipe, &argc, str, "RecipeName");
+    if (rc == false) {
+        printf("TEST ERROR: pmConfigRead() returned False\n");
+        testStatus = false;
+    } else {
+        //
+        // Ensure that the various trace and logging values are set properly
+        //
+        if (1 != psTraceGetLevel("dummyTraceFunc01")) {
+            printf("TEST ERROR: failed to properly set tracelevel for dummyTraceFunc01\n");
+            printf("    tracelevel was %d, should be 1.\n", psTraceGetLevel("dummyTraceFunc01"));
+            testStatus = false;
+        }
+
+        if (2 != psTraceGetLevel("dummyTraceFunc02")) {
+            printf("TEST ERROR: failed to properly set tracelevel for dummyTraceFunc02\n");
+            printf("    tracelevel was %d, should be 2.\n", psTraceGetLevel("dummyTraceFunc02"));
+            testStatus = false;
+        }
+
+        if (1 != psLogGetDestination()) {
+            printf("TEST ERROR: failed to properly set log destination.\n");
+            printf("    it was %d, should be 1\n", psLogGetDestination());
+            testStatus = false;
+        }
+
+        if (3 != psLogGetLevel()) {
+            printf("TEST ERROR: failed to properly set log level.\n");
+            printf("    it was %d, should be 3\n", psLogGetLevel());
+            testStatus = false;
+        }
+
+        //
+        // Test the several arbitrary config file strings.
+        //
+        psS32 tmpInt = psMetadataLookupS32(&rc, site, "ARBITRARY_STRING_S32");
+        if ((rc == false) || (tmpInt != 20)) {
+            printf("TEST ERROR: failed to properly set metadata integer ARBITRARY_STRING_S32.\n");
+            testStatus = false;
+        }
+
+        psF32 tmpFloat = psMetadataLookupS32(&rc, site, "ARBITRARY_STRING_F32");
+        if ((rc == false) || (tmpFloat != 21.0)) {
+            printf("TEST ERROR: failed to properly set metadata float ARBITRARY_STRING_F32.\n");
+            testStatus = false;
+        }
+
+        psF64 tmpDub = psMetadataLookupS32(&rc, site, "ARBITRARY_STRING_F64");
+        if ((rc == false) || (tmpDub != 22.0)) {
+            printf("TEST ERROR: failed to properly set metadata double ARBITRARY_STRING_F64.\n");
+            testStatus = false;
+        }
+
+        psBool tmpBool;
+        tmpBool = psMetadataLookupS32(&rc, site, "ARBITRARY_STRING_BOOL_T");
+        if ((rc == false) || (tmpBool != true)) {
+            printf("TEST ERROR: failed to properly set metadata double ARBITRARY_STRING_BOOL_T.\n");
+            testStatus = false;
+        }
+        tmpBool = psMetadataLookupS32(&rc, site, "ARBITRARY_STRING_BOOL_F");
+        if ((rc == false) || (tmpBool != false)) {
+            printf("TEST ERROR: failed to properly set metadata double ARBITRARY_STRING_BOOL_F.\n");
+            testStatus = false;
+        }
+
+        //
+        // Test the database camera metadata keywords.
+        //
+        psMetadata *tmpMeta = psMetadataLookupMD(&rc, site, "CAMERAS");
+        if (rc == false) {
+            printf("TEST ERROR: failed to properly set metadata metadata CAMERAS.\n");
+            testStatus = false;
+        } else {
+            psString tmpStr;
+            tmpStr = psMetadataLookupStr(&rc, tmpMeta, "MEGACAM_RAW");
+            if ((rc == false) || (0 != strcmp(tmpStr, "megacam_raw.config"))) {
+                printf("TEST ERROR: failed to properly set metadata metadata CAMERAS->MEGACAM_RAW.\n");
+                testStatus = false;
+            }
+
+            tmpStr = psMetadataLookupStr(&rc, tmpMeta, "MEGACAM_SPLICE");
+            if ((rc == false) || (0 != strcmp(tmpStr, "megacam_splice.config"))) {
+                printf("TEST ERROR: failed to properly set metadata metadata CAMERAS->MEGACAM_SPLICE.\n");
+                testStatus = false;
+            }
+
+            tmpStr = psMetadataLookupStr(&rc, tmpMeta, "GPC1_RAW");
+            if ((rc == false) || (0 != strcmp(tmpStr, "gpc1_raw.config"))) {
+                printf("TEST ERROR: failed to properly set metadata metadata CAMERAS->GPC1_RAW.\n");
+                testStatus = false;
+            }
+
+            tmpStr = psMetadataLookupStr(&rc, tmpMeta, "LRIS_BLUE");
+            if ((rc == false) || (0 != strcmp(tmpStr, "lris_blue.config"))) {
+                printf("TEST ERROR: failed to properly set metadata metadata CAMERAS->LRIS_BLUE.\n");
+                testStatus = false;
+            }
+
+            tmpStr = psMetadataLookupStr(&rc, tmpMeta, "LRIS_RED");
+            if ((rc == false) || (0 != strcmp(tmpStr, "lris_red.config"))) {
+                printf("TEST ERROR: failed to properly set metadata metadata CAMERAS->LRIS_RED.\n");
+                testStatus = false;
+            }
+        }
+
+        //
+        // Test the database metadata keywords.  This is somewhat redundant since
+        // we already test metadat strings.
+        //
+        psString tmpStr;
+        tmpStr = psMetadataLookupStr(&rc, site, "DBSERVER");
+        if ((rc == false) || (0 != strcmp(tmpStr, "ippdb.ifa.hawaii.edu"))) {
+            printf("TEST ERROR: failed to properly set metadata string DBSERVER.\n");
+            testStatus = false;
+        }
+
+        tmpStr = psMetadataLookupStr(&rc, site, "DBUSER");
+        if ((rc == false) || (0 != strcmp(tmpStr, "ipp"))) {
+            printf("TEST ERROR: failed to properly set metadata string DBUSER.\n");
+            testStatus = false;
+        }
+
+        tmpStr = psMetadataLookupStr(&rc, site, "DBPASSWORD");
+        if ((rc == false) || (0 != strcmp(tmpStr, "password"))) {
+            printf("TEST ERROR: failed to properly set metadata string DBPASSWORD.\n");
+            testStatus = false;
+        }
+    }
+
+    psFree(site);
+    psFree(camera);
+    psFree(recipe);
+    return(testStatus);
+}
Index: /branches/rel10/psModules/test/config/verified/tst_pmConfig.stderr
===================================================================
--- /branches/rel10/psModules/test/config/verified/tst_pmConfig.stderr	(revision 6361)
+++ /branches/rel10/psModules/test/config/verified/tst_pmConfig.stderr	(revision 6361)
@@ -0,0 +1,27 @@
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_pmConfig.c                                             *
+*            TestPoint: Test Point Driver{pmConfig:}                               *
+*             TestType: Positive                                                   *
+\**********************************************************************************/
+
+<HOST>|E|pmConfigRead (FILE:LINENO)
+    Unallowable operation: site is NULL.
+<HOST>|E|pmConfigRead (FILE:LINENO)
+    Unallowable operation: *site is NULL.
+<HOST>|E|pmConfigRead (FILE:LINENO)
+    Unallowable operation: camera is NULL.
+<HOST>|E|pmConfigRead (FILE:LINENO)
+    Unallowable operation: *camera is NULL.
+<HOST>|E|pmConfigRead (FILE:LINENO)
+    Unallowable operation: recipe is NULL.
+<HOST>|E|pmConfigRead (FILE:LINENO)
+    Unallowable operation: *recipe is NULL.
+<HOST>|E|pmConfigRead (FILE:LINENO)
+    Unallowable operation: argv is NULL.
+<HOST>|E|pmConfigRead (FILE:LINENO)
+    Error: *argc is 0 or less.
+<HOST>|I|readConfig
+    Loading site configuration from file SampleIPPConfig
+
+---> TESTPOINT PASSED (Test Point Driver{pmConfig:} | tst_pmConfig.c)
+
