]> git.saurik.com Git - apple/security.git/blob - SecurityTests/testclient/testclient.cpp
Security-57336.1.9.tar.gz
[apple/security.git] / SecurityTests / testclient / testclient.cpp
1 //
2 // Test driver program for cdsa_client library
3 //
4 #include "csptests.h"
5 #include "dltests.h"
6
7 #include <security_cdsa_client/cssmclient.h>
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <string.h>
11 #include <unistd.h>
12
13 using namespace CssmClient;
14 extern "C" void malloc_debug(int);
15
16 static void usage();
17
18 static const char *progname;
19
20 // ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
21 // ¥ main
22 // ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
23 int main(int argc, char *argv[])
24 {
25 extern char *optarg;
26 extern int optind;
27 bool didWork = false;
28 bool autoCommit = true;
29 bool printSchema = false;
30 int ch;
31
32 progname = strrchr(argv[0], '/');
33 progname = progname ? progname + 1 : argv[0];
34
35 try
36 {
37 while ((ch = getopt(argc, argv, "?haAbcdM:D:smwg:")) != -1)
38 {
39 switch(ch)
40 {
41 case 'a':
42 autoCommit=true;
43 break;
44 case 'A':
45 autoCommit=false;
46 break;
47 case 'b':
48 setbuf(stdout, NULL);
49 break;
50 case 'c':
51 csptests();
52 didWork = true;
53 break;
54 case 'm':
55 testmac();
56 didWork = true;
57 break;
58 case 'w':
59 testwrap();
60 didWork = true;
61 break;
62 case 'd':
63 dltests(autoCommit);
64 didWork = true;
65 break;
66 case 's':
67 printSchema = true;
68 break;
69 case 'g':
70 if (strcmp (optarg, "AppleFileDL") == 0)
71 {
72 gSelectedFileGuid = &gGuidAppleFileDL;
73 }
74 else if (strcmp (optarg, "LDAPDL") == 0)
75 {
76 gSelectedFileGuid = &gGuidAppleLDAPDL;
77 }
78 else
79 {
80 didWork = false;
81 }
82 break;
83 case 'D':
84 dumpDb(optarg, printSchema);
85 didWork = true;
86 break;
87 case 'M':
88 malloc_debug(atoi(optarg));
89 break;
90 case '?':
91 case 'h':
92 default:
93 usage();
94 }
95 }
96
97 if (argc != optind)
98 usage();
99
100 if (!didWork)
101 usage();
102
103 Cssm::standard()->terminate();
104 }
105 catch (CommonError &error)
106 {
107 cssmPerror("Tester abort", error.osStatus());
108 }
109
110 return 0;
111 }
112
113 // ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
114 // ¥ usage
115 // ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
116 static void
117 usage()
118 {
119 printf("usage: %s [-M<malloc_debug>] [-b] [-c] [[-a|-A] -d] [[-s ] [-g AppleFileDL | LDAPDL] -D <db_to_dump>]\n", progname);
120 printf(" -M debug_level Call malloc_debug(debug_level) to enable malloc debugging.\n");
121 printf(" -b turn off stdout buffering.\n");
122 printf(" -c run csp (rotty) tests.\n");
123 printf(" -m Test Mac\n");
124 printf(" -w Test Wrap\n");
125 printf(" -d run dl tests.\n");
126 printf(" -a Enable AutoCommit for dl modifications (default).\n");
127 printf(" -A Disable AutoCommit for dl modifications.\n");
128 printf(" -D dbname Dump a db into a human readable format.\n");
129 printf(" -s Dump out schema info (use with -D).\n");
130 exit(1);
131 }
132