0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 #include <string.h>
0035 #include <stdio.h>
0036 #include <stdlib.h>
0037 #include <memory.h>
0038 #include <unistd.h>
0039
0040 #include <atmi.h>
0041 #include <ubf.h>
0042 #include <ndebug.h>
0043 #include <test.fd.h>
0044 #include <ndrstandard.h>
0045 #include <ubfutil.h>
0046 #include <nstopwatch.h>
0047 #include <nstdutil.h>
0048 #include <exassert.h>
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063 expublic int basic_abort_rules(int maxmsg)
0064 {
0065 int ret = EXSUCCEED;
0066 TPQCTL qc;
0067 int i;
0068 long olen;
0069 int cd=99;
0070 char *buf=NULL;
0071
0072 NDRX_LOG(log_error, "case basic_abort_rules");
0073
0074
0075 NDRX_LOG(log_error, "Test tpcall + TPENOENT");
0076 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0077 NDRX_ASSERT_TP_OUT(
0078 (EXFAIL==tpcall("NO_SUCH_SERVICE", NULL, 0, &buf, &olen, 0)
0079 && TPENOENT==tperrno), "NOENT call failed");
0080 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpcommit(0), "failed to commit");
0081
0082
0083 NDRX_LOG(log_error, "Test tpcall + TPEINVAL");
0084 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0085 NDRX_ASSERT_TP_OUT(
0086 (EXFAIL==tpcall("NO_SUCH_SERVICE", NULL, 0, NULL, NULL, 0)
0087 && TPEINVAL==tperrno), "NOENT call failed");
0088 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpcommit(0), "failed to commit");
0089
0090
0091 NDRX_LOG(log_error, "Test tpcall + TPEBADDESC");
0092 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0093 NDRX_ASSERT_TP_OUT(
0094 (EXFAIL==tpgetrply(&cd, &buf, &olen,0)
0095 && TPEBADDESC==tperrno), "TPEBADDESC notmatched");
0096 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpcommit(0), "failed to commit");
0097
0098
0099 NDRX_LOG(log_error, "Test @TM-1 junk msg");
0100 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0101 NDRX_ASSERT_TP_OUT(
0102 (EXFAIL==tpcall("@TM-1", NULL, 0, &buf, &olen, 0)
0103 && TPESVCFAIL==tperrno), "NOENT call failed");
0104 NDRX_ASSERT_TP_OUT( (EXSUCCEED!=tpcommit(0) && TPEABORT==tperrno), "commit + TPEABORT failed");
0105
0106
0107 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0108 memset(&qc, 0, sizeof(qc));
0109 NDRX_ASSERT_TP_OUT(
0110 ( EXFAIL==tpdequeue("MYSPACE", "TEST1", &qc, (char **)&buf, &olen, 0)
0111 && TPEDIAGNOSTIC==tperrno
0112 && QMENOMSG==qc.diagnostic
0113 ),
0114 "Failed to dequeue: %ld", qc.diagnostic
0115 );
0116 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpcommit(0), "failed to commit");
0117
0118
0119 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0120 memset(&qc, 0, sizeof(qc));
0121 qc.flags|=TPQPEEK;
0122 NDRX_ASSERT_TP_OUT(
0123 ( EXFAIL==tpdequeue("MYSPACE", "TEST1", &qc, (char **)&buf, &olen, 0)
0124 && TPEDIAGNOSTIC==tperrno
0125 && QMENOMSG==qc.diagnostic
0126 ),
0127 "Failed to dequeue: %ld", qc.diagnostic
0128 );
0129 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpcommit(0), "failed to commit");
0130
0131
0132 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0133 memset(&qc, 0, sizeof(qc));
0134 NDRX_ASSERT_TP_OUT(
0135 ( EXFAIL==tpdequeue("MYSPACE", "NO_SUCH_QUEUE", &qc, (char **)&buf, &olen, 0)
0136 && TPEDIAGNOSTIC==tperrno
0137 && QMEBADQUEUE==qc.diagnostic
0138 ),
0139 "Failed to dequeue: %ld", qc.diagnostic
0140 );
0141 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpcommit(0), "failed to commit");
0142
0143
0144 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0145 memset(&qc, 0, sizeof(qc));
0146 NDRX_ASSERT_TP_OUT(
0147 ( EXFAIL==tpdequeue(NULL, NULL, &qc, (char **)&buf, &olen, 0)
0148 && TPEINVAL==tperrno
0149 ),
0150 "Failed to dequeue: %ld", qc.diagnostic
0151 );
0152 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpcommit(0), "failed to commit");
0153
0154
0155 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0156 memset(&qc, 0, sizeof(qc));
0157 NDRX_ASSERT_TP_OUT(
0158 ( EXFAIL==tpenqueue("MYSPACE", "NO_SUCH_QUEUE", &qc, NULL, 0, 0)
0159 && TPEDIAGNOSTIC==tperrno
0160 && QMEBADQUEUE==qc.diagnostic
0161 ),
0162 "Failed to enqueue: %ld", qc.diagnostic
0163 );
0164 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpcommit(0), "failed to commit");
0165
0166
0167 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0168 memset(&qc, 0, sizeof(qc));
0169 NDRX_ASSERT_TP_OUT(
0170 ( EXFAIL==tpenqueue(NULL, NULL, &qc, NULL, 0, 0)
0171 && TPEINVAL==tperrno
0172 ),
0173 "Failed to enqueue: %ld", qc.diagnostic
0174 );
0175 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpcommit(0), "failed to commit");
0176
0177
0178
0179
0180 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0181 memset(&qc, 0, sizeof(qc));
0182 NDRX_ASSERT_TP_OUT(
0183 (EXSUCCEED==tpenqueue("MYSPACE", "TEST1", &qc, NULL, 0, 0)),
0184 "Failed to enqueue: %ld", qc.diagnostic
0185 );
0186 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpcommit(0), "failed to commit");
0187
0188
0189 if (EXSUCCEED!=system("xadmin lcf qwriterr -A 1 -a"))
0190 {
0191 NDRX_LOG(log_error, "TESTERROR: xadmin lcf qwriterr -A 1 -a failed");
0192 EXFAIL_OUT(ret);
0193 }
0194
0195
0196 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0197 memset(&qc, 0, sizeof(qc));
0198 NDRX_ASSERT_TP_OUT(
0199 ( EXFAIL==tpdequeue("MYSPACE", "TEST1", &qc, (char **)&buf, &olen, 0)
0200 && TPEDIAGNOSTIC==tperrno
0201 && QMEOS==qc.diagnostic
0202 ),
0203 "Dequeue shall fail with QMEOS, but got: %ld", qc.diagnostic
0204 );
0205 NDRX_ASSERT_TP_OUT( (EXSUCCEED!=tpcommit(0) && TPEABORT==tperrno), "commit must fail");
0206
0207
0208
0209 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0210 memset(&qc, 0, sizeof(qc));
0211 NDRX_ASSERT_TP_OUT(
0212 ( EXFAIL==tpenqueue("MYSPACE", "TEST1", &qc, NULL, 0, 0)
0213 && TPEDIAGNOSTIC==tperrno
0214 && QMEOS==qc.diagnostic
0215 ),
0216 "Enqueue shall fail with QMEOS, but got: %ld", qc.diagnostic
0217 );
0218 NDRX_ASSERT_TP_OUT( (EXSUCCEED!=tpcommit(0) && TPEABORT==tperrno), "commit must fail");
0219
0220
0221
0222 if (EXSUCCEED!=system("xadmin lcf qwriterr -A 0 -a"))
0223 {
0224 NDRX_LOG(log_error, "TESTERROR: xadmin lcf qwriterr -A 0 -a failed");
0225 EXFAIL_OUT(ret);
0226 }
0227
0228
0229 NDRX_ASSERT_TP_OUT(EXSUCCEED==tpbegin(60, 0), "failed to start tran");
0230 memset(&qc, 0, sizeof(qc));
0231 NDRX_ASSERT_TP_OUT(
0232 ( EXSUCCEED==tpdequeue("MYSPACE", "TEST1", &qc, (char **)&buf, &olen, 0)
0233 ),
0234 "Dequeue must not fail but got: %ld", qc.diagnostic
0235 );
0236 NDRX_ASSERT_TP_OUT( (EXSUCCEED==tpcommit(0)), "commit must not fail");
0237
0238 out:
0239
0240 if (EXSUCCEED!=tpterm())
0241 {
0242 NDRX_LOG(log_error, "tpterm failed with: %s", tpstrerror(tperrno));
0243 ret=EXFAIL;
0244 goto out;
0245 }
0246
0247 return ret;
0248 }
0249
0250