]> git.saurik.com Git - apple/security.git/blobdiff - SecurityTests/testclient/testclient.cpp
Security-57031.1.35.tar.gz
[apple/security.git] / SecurityTests / testclient / testclient.cpp
diff --git a/SecurityTests/testclient/testclient.cpp b/SecurityTests/testclient/testclient.cpp
new file mode 100644 (file)
index 0000000..affb511
--- /dev/null
@@ -0,0 +1,132 @@
+//
+// Test driver program for cdsa_client library
+//
+#include "csptests.h"
+#include "dltests.h"
+
+#include <security_cdsa_client/cssmclient.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+using namespace CssmClient;
+extern "C" void malloc_debug(int);
+
+static void usage();
+
+static const char *progname;
+
+// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
+//     ¥ main
+// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
+int main(int argc, char *argv[])
+{    
+       extern char *optarg;
+       extern int optind;
+       bool didWork = false;
+       bool autoCommit = true;
+       bool printSchema = false;
+       int ch;
+       
+       progname = strrchr(argv[0], '/');
+       progname = progname ? progname + 1 : argv[0];
+
+       try
+       {
+               while ((ch = getopt(argc, argv, "?haAbcdM:D:smwg:")) != -1)
+               {
+                       switch(ch)
+                       {
+                       case 'a':
+                               autoCommit=true;
+                               break;
+                       case 'A':
+                               autoCommit=false;
+                               break;
+                       case 'b':
+                               setbuf(stdout, NULL);
+                               break;
+                       case 'c':
+                               csptests();
+                               didWork = true;
+                               break;
+                       case 'm':
+                               testmac();
+                               didWork = true;
+                               break;
+                       case 'w':
+                               testwrap();
+                               didWork = true;
+                               break;
+                       case 'd':
+                               dltests(autoCommit);
+                               didWork = true;
+                               break;
+                       case 's':
+                               printSchema = true;
+                               break;
+                       case 'g':
+                               if (strcmp (optarg, "AppleFileDL") == 0)
+                               {
+                                       gSelectedFileGuid = &gGuidAppleFileDL;
+                               }
+                               else if (strcmp (optarg, "LDAPDL") == 0)
+                               {
+                                       gSelectedFileGuid = &gGuidAppleLDAPDL;
+                               }
+                               else
+                               {
+                                       didWork = false;
+                               }
+                               break;
+                       case 'D':
+                               dumpDb(optarg, printSchema);
+                               didWork = true;
+                               break;
+                       case 'M':
+                               malloc_debug(atoi(optarg));
+                               break;
+                       case '?':
+                       case 'h':
+                       default:
+                               usage();
+                       }
+               }
+       
+               if (argc != optind)
+                       usage();
+       
+               if (!didWork)
+                       usage();
+
+               Cssm::standard()->terminate();
+       }
+       catch (CommonError &error)
+       {
+               cssmPerror("Tester abort", error.osStatus());
+       }
+
+       return 0;
+}    
+
+// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
+//     ¥ usage
+// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
+static void
+usage()
+{
+       printf("usage: %s [-M<malloc_debug>] [-b] [-c] [[-a|-A] -d] [[-s ] [-g AppleFileDL | LDAPDL] -D <db_to_dump>]\n", progname);
+       printf("        -M debug_level  Call malloc_debug(debug_level) to enable malloc debugging.\n");
+       printf("        -b              turn off stdout buffering.\n");
+       printf("        -c              run csp (rotty) tests.\n");
+       printf("        -m              Test Mac\n");
+       printf("        -w              Test Wrap\n");
+       printf("        -d              run dl tests.\n");
+       printf("        -a              Enable AutoCommit for dl modifications (default).\n");
+       printf("        -A              Disable AutoCommit for dl modifications.\n");
+       printf("        -D dbname       Dump a db into a human readable format.\n");
+       printf("        -s              Dump out schema info (use with -D).\n");
+    exit(1);
+}
+