summaryrefslogtreecommitdiff
path: root/db-4.8.30/test/TESTS
blob: 1a7efa236f115cd170884e85e4226da7b1b00ba9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
# Automatically built by dist/s_test; may require local editing.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Allocate and lock a self-blocking mutex.  Start another process. 
	Try to lock the mutex again -- it will block.  
	Unlock the mutex from the other process, and the blocked 
	lock should be obtained.  Clean up.
	Do another test with a "-process-only" mutex.  The second 
	process should not be able to unlock the mutex.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Allocate, lock, unlock, and free a bunch of mutexes. 
	Set basic configuration options and check mutex_stat and 
	the mutex getters for the correct values. 

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
backup
	Test of hotbackup functionality. 

	Do all the of the following tests with and without 
	the -c (checkpoint) option.  Make sure that -c and 
	-d (data_dir) are not allowed together. 

	(1) Test that plain and simple hotbackup works. 
	(2) Test with -data_dir (-d). 
	(3) Test updating an existing hot backup (-u).
	(4) Test with absolute path. 
	(5) Test with DB_CONFIG (-D), setting log_dir (-l)
	and data_dir (-d).
	(6) DB_CONFIG and update.  
	(7) Repeat hot backup (non-update) with DB_CONFIG and 
	existing directories. 

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
bigfile001
	Create a database greater than 4 GB in size.  Close, verify.
	Grow the database somewhat.  Close, reverify.  Lather, rinse,
	repeat.  Since it will not work on all systems, this test is
	not run by default.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
bigfile002
	This one should be faster and not require so much disk space,
	although it doesn't test as extensively.  Create an mpool file
	with 1K pages.  Dirty page 6000000.  Sync.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
dbm
	Historic DBM interface test.  Use the first 1000 entries from the
	dictionary.  Insert each with self as key and data; retrieve each.
	After all are entered, retrieve all; compare output to original.
	Then reopen the file, re-retrieve everything.  Finally, delete
	everything.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
db_reptest
	Wrapper to configure and run the db_reptest program.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
dead001
	Use two different configurations to test deadlock detection among a
	variable number of processes.  One configuration has the processes
	deadlocked in a ring.  The other has the processes all deadlocked on
	a single resource.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
dead002
	Same test as dead001, but use "detect on every collision" instead
	of separate deadlock detector.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
dead003

	Same test as dead002, but explicitly specify DB_LOCK_OLDEST and
	DB_LOCK_YOUNGEST.  Verify the correct lock was aborted/granted.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
dead006
	use timeouts rather than the normal dd algorithm.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
dead007
	Tests for locker and txn id wraparound.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env001
	Test of env remove interface (formerly env_remove).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env002
	Test of DB_LOG_DIR and env name resolution.
	With an environment path specified using -home, and then again
	with it specified by the environment variable DB_HOME:
	1) Make sure that the set_lg_dir option is respected
	a) as a relative pathname.
	b) as an absolute pathname.
	2) Make sure that the DB_LOG_DIR db_config argument is respected,
	again as relative and absolute pathnames.
	3) Make sure that if -both- db_config and a file are present,
	only the file is respected (see doc/env/naming.html).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env003
	Test DB_TMP_DIR and env name resolution
	With an environment path specified using -home, and then again
	with it specified by the environment variable DB_HOME:
	1) Make sure that the DB_TMP_DIR config file option is respected
	a) as a relative pathname.
	b) as an absolute pathname.
	2) Make sure that the -tmp_dir config option is respected,
	again as relative and absolute pathnames.
	3) Make sure that if -both- -tmp_dir and a file are present,
	only the file is respected (see doc/env/naming.html).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env004
	Test multiple data directories.  Do a bunch of different opens
	to make sure that the files are detected in different directories.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env005
	Test that using subsystems without initializing them correctly
	returns an error.  Cannot test mpool, because it is assumed in
	the Tcl code.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env006
	Make sure that all the utilities exist and run.
	Test that db_load -r options don't blow up.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env007
	Test DB_CONFIG config file options for berkdb env.
	1) Make sure command line option is respected
	2) Make sure that config file option is respected
	3) Make sure that if -both- DB_CONFIG and the set_<whatever>
	method is used, only the file is respected.
	Then test all known config options.
	Also test config options on berkdb open.  This isn't
	really env testing, but there's no better place to put it.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env008
	Test environments and subdirectories.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env009
	Test calls to all the various stat functions.  We have several
	sprinkled throughout the test suite, but this will ensure that
	we run all of them at least once.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env010
	Run recovery in an empty directory, and then make sure we can still
	create a database in that directory.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env011
	Run with region overwrite flag.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env012
	Test DB_REGISTER.

	DB_REGISTER will fail on systems without fcntl.  If it
	fails, make sure we got the expected DB_OPNOTSUP return.

	Then, the real tests:
	For each test, we start a process that opens an env with -register.

	1. Verify that a 2nd process can enter the existing env with -register.

	2. Kill the 1st process, and verify that the 2nd process can enter
	with "-register -recover".

	3. Kill the 1st process, and verify that the 2nd process cannot
	enter with just "-register".

	4. While the 1st process is still running, a 2nd process enters
	with "-register".  Kill the 1st process.  Verify that a 3rd process
	can enter with "-register -recover".  Verify that the 3rd process,
	entering, causes process 2 to fail with the message DB_RUNRECOVERY.

	5. We had a bug where recovery was always run with -register
	if there were empty slots in the process registry file.  Verify
	that recovery doesn't automatically run if there is an empty slot.

	6. Verify process cannot connect when specifying -failchk and an
	isalive function has not been declared.

	7. Verify that a 2nd process can enter the existing env with -register
	and -failchk and having specified an isalive function

	8. Kill the 1st process, and verify that the 2nd process can enter
	with "-register -failchk -recover"

	9. 2nd process enters with "-register -failchk".  Kill the 1st process.
	2nd process may get blocked on a mutex held by process one.  Verify
	3rd process can enter with "-register -recover -failchk".   3rd process
	should run failchk, clear out open txn/log from process 1.   It will
	enter env without need for any additional recovery.   We look for 
	"Freeing log information .." sentence in the log for 3rd process as 
	an indication that failchk ran.   If DB_RUNRECOVERY were returned 
	instead it would mean failchk could not recover. 

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env013
	Test of basic functionality of fileid_reset.

	Create a database in an env.  Copy it to a new file within
	the same env.  Reset the file id and make sure it has changed.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env014

	Make sure that attempts to open an environment with
	incompatible flags (e.g. replication without transactions)
	fail with the appropriate messages.

	A new thread of control joining an env automatically
	initializes the same subsystems as the original env.
	Make sure that the attempt to change subsystems when
	joining an env fails with the appropriate messages.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env015
	Rename the underlying directory of an env, make sure everything
	still works.  Test runs with regular named databases and with
	in-memory named databases.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env016
	Replication settings and DB_CONFIG

	Create a DB_CONFIG for various replication settings.  Use
	rep_stat or getter functions to verify they're set correctly.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env017
	Check documented "stat" fields against the fields
	returned by the "stat" functions.  Make sure they
	match, and that none are missing.	
	These are the stat functions we test:
	env log_stat
	env lock_stat
	env txn_stat
	env mutex_stat
	env rep_stat
	env repmgr_stat
	env mpool_stat
	db_stat
	seq_stat

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
env018
	Test getters when joining an env.  When a second handle is 
	opened on an existing env, get_open_flags needs to return 
	the correct flags to the second handle so it knows what sort
	of environment it's just joined.

	For several different flags to env_open, open an env.  Open
	a second handle on the same env, get_open_flags and verify 
	the flag is returned.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
fop001.tcl
	Test file system operations, combined in a transaction. [#7363]

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
fop002.tcl
	Test file system operations in the presence of bad permissions.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
fop003

	Test behavior of create and truncate for compatibility
	with sendmail.
	1.  DB_TRUNCATE is not allowed with locking or transactions.
	2.  Can -create into zero-length existing file.
	3.  Can -create into non-zero-length existing file if and
	only if DB_TRUNCATE is specified.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
fop004
	Test of DB->rename(). (formerly test075)
	Test that files can be renamed from one directory to another.
	Test that files can be renamed using absolute or relative
	pathnames.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
fop005
	Test of DB->remove()
	Formerly test080.
	Test use of dbremove with and without envs, with absolute
	and relative paths, and with subdirectories.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
fop006
	Test file system operations in multiple simultaneous
	transactions.  Start one transaction, do a file operation.
	Start a second transaction, do a file operation.  Abort
	or commit txn1, then abort or commit txn2, and check for
	appropriate outcome.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
fop007
	Test file system operations on named in-memory databases.
	Combine two ops in one transaction.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
fop008
	Test file system operations on named in-memory databases.
	Combine two ops in one transaction.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
jointest
	Test duplicate assisted joins.  Executes 1, 2, 3 and 4-way joins
	with differing index orders and selectivity.

	We'll test 2-way, 3-way, and 4-way joins and figure that if those
	work, everything else does as well.  We'll create test databases
	called join1.db, join2.db, join3.db, and join4.db.  The number on
	the database describes the duplication -- duplicates are of the
	form 0, N, 2N, 3N, ...  where N is the number of the database.
	Primary.db is the primary database, and null.db is the database
	that has no matching duplicates.

	We should test this on all btrees, all hash, and a combination thereof

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
lock001
	Make sure that the basic lock tests work.  Do some simple gets
	and puts for a single locker.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
lock002
	Exercise basic multi-process aspects of lock.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
lock003
	Exercise multi-process aspects of lock.  Generate a bunch of parallel
	testers that try to randomly obtain locks;  make sure that the locks
	correctly protect corresponding objects.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
lock004
	Test locker ids wraping around.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
lock005
	Check that page locks are being released properly.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
lock006
	Test lock_vec interface.  We do all the same things that
	lock001 does, using lock_vec instead of lock_get and lock_put,
	plus a few more things like lock-coupling.
	1.  Get and release one at a time.
	2.  Release with put_obj (all locks for a given locker/obj).
	3.  Release with put_all (all locks for a given locker).
	Regularly check lock_stat to verify all locks have been
	released.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
log001
	Read/write log records.
	Test with and without fixed-length, in-memory logging,
	and encryption.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
log002
	Tests multiple logs
	Log truncation
	LSN comparison and file functionality.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
log003
	Verify that log_flush is flushing records correctly.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
log004
	Make sure that if we do PREVs on a log, but the beginning of the
	log has been truncated, we do the right thing.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
log005
	Check that log file sizes can change on the fly.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
log006
	Test log file auto-remove.
	Test normal operation.
	Test a long-lived txn.
	Test log_archive flags.
	Test db_archive flags.
	Test turning on later.
	Test setting via DB_CONFIG.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
log007
	Test of in-memory logging bugs. [#11505]

	Test db_printlog with in-memory logs.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
log008
	Test what happens if a txn_ckp record falls into a
	different log file than the DBREG_CKP records generated
	by the same checkpoint.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
log009
	Test of logging and getting log file version information.
	Each time we cross a log file boundary verify we can
	get the version via the log cursorlag.
	Do this both forward and backward.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
memp001
	Randomly updates pages.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
memp002
	Tests multiple processes accessing and modifying the same files.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
memp003
	Test reader-only/writer process combinations; we use the access methods
	for testing.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
memp004
	Test that small read-only databases are mapped into memory.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
mut001
	Exercise the mutex API.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
mut002
	Two-process mutex test.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
mut003
	Try doing mutex operations out of order.  Make sure 
	we get appropriate errors.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
plat001

	Test of portability of sequences.

	Create and dump a database containing sequences.  Save the dump.
	This test is used in conjunction with the upgrade tests, which
	will compare the saved dump to a locally created dump.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd001
	Per-operation recovery tests for non-duplicate, non-split
	messages.  Makes sure that we exercise redo, undo, and do-nothing
	condition.  Any test that appears with the message (change state)
	indicates that we've already run the particular test, but we are
	running it again so that we can change the state of the data base
	to prepare for the next test (this applies to all other recovery
	tests as well).

	These are the most basic recovery tests.  We do individual recovery
	tests for each operation in the access method interface.  First we
	create a file and capture the state of the database (i.e., we copy
	it.  Then we run a transaction containing a single operation.  In
	one test, we abort the transaction and compare the outcome to the
	original copy of the file.  In the second test, we restore the
	original copy of the database and then run recovery and compare
	this against the actual database.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd002
	Split recovery tests.  For every known split log message, makes sure
	that we exercise redo, undo, and do-nothing condition.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd003
	Duplicate recovery tests.  For every known duplicate log message,
	makes sure that we exercise redo, undo, and do-nothing condition.

	Test all the duplicate log messages and recovery operations.  We make
	sure that we exercise all possible recovery actions: redo, undo, undo
	but no fix necessary and redo but no fix necessary.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd004
	Big key test where big key gets elevated to internal page.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd005
	Verify reuse of file ids works on catastrophic recovery.

	Make sure that we can do catastrophic recovery even if we open
	files using the same log file id.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd006
	Nested transactions.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd007
	File create/delete tests.

	This is a recovery test for create/delete of databases.  We have
	hooks in the database so that we can abort the process at various
	points and make sure that the transaction doesn't commit.  We
	then need to recover and make sure the file is correctly existing
	or not, as the case may be.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd008
	Test deeply nested transactions and many-child transactions.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd009
	Verify record numbering across split/reverse splits and recovery.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd010
	Test stability of btree duplicates across btree off-page dup splits
	and reverse splits and across recovery.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd011
	Verify that recovery to a specific timestamp works.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd012
	Test of log file ID management. [#2288]
	Test recovery handling of file opens and closes.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd013
	Test of cursor adjustment on child transaction aborts. [#2373]

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd014
	This is a recovery test for create/delete of queue extents.  We
	then need to recover and make sure the file is correctly existing
	or not, as the case may be.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd015
	This is a recovery test for testing lots of prepared txns.
	This test is to force the use of txn_recover to call with the
	DB_FIRST flag and then DB_NEXT.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd016
	Test recovery after checksum error.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd017
	Test recovery and security.  This is basically a watered
	down version of recd001 just to verify that encrypted environments
	can be recovered.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd018
	Test recover of closely interspersed checkpoints and commits.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd019
	Test txn id wrap-around and recovery.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd020
	Test creation of intermediate directories -- an
	undocumented, UNIX-only feature.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd021
	Test of failed opens in recovery.

	If a file was deleted through the file system (and not
	within Berkeley DB), an error message should appear.
	Test for regular files and subdbs.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd022
	Test that pages allocated by an aborted subtransaction
	within an aborted prepared parent transaction are returned
	to the free list after recovery.  This exercises
	__db_pg_prepare in systems without FTRUNCATE.  [#7403]

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd023
	Test recover of reverse split.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recd024
	Test recovery of streaming partial insert operations. These are 
	operations that do multiple partial puts that append to an existing
	data item (as long as the data item is on an overflow page).
	The interesting cases are:
	* Simple streaming operations
	* Operations that cause the overflow item to flow onto another page.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep001
	Replication rename and forced-upgrade test.

	Run rep_test in a replicated master environment.
	Verify that the database on the client is correct.
	Next, remove the database, close the master, upgrade the
	client, reopen the master, and make sure the new master can
	correctly run rep_test and propagate it in the other direction.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep002
	Basic replication election test.

	Run a modified version of test001 in a replicated master
	environment; hold an election among a group of clients to
	make sure they select a proper master from amongst themselves,
	in various scenarios.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep003
	Repeated shutdown/restart replication test

	Run a quick put test in a replicated master environment;
	start up, shut down, and restart client processes, with
	and without recovery.  To ensure that environment state
	is transient, use DB_PRIVATE.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep005
	Replication election test with error handling.

	Run rep_test in a replicated master environment;
	hold an election among a group of clients to make sure they select
	a proper master from amongst themselves, forcing errors at various
	locations in the election path.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep006
	Replication and non-rep env handles.

	Run a modified version of test001 in a replicated master
	environment; verify that the database on the client is correct.
	Next, create a non-rep env handle to the master env.
	Attempt to open the database r/w to force error.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep007
	Replication and bad LSNs

	Run rep_test in a replicated master env.
	Close the client.  Make additional changes to master.
	Close the master.  Open the client as the new master.
	Make several different changes.  Open the old master as
	the client.  Verify periodically that contents are correct.
	This test is not appropriate for named in-memory db testing
	because the databases are lost when both envs are closed.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep008
	Replication, back up and synchronizing

	Run a modified version of test001 in a replicated master
	environment.
	Close master and client.
	Copy the master log to the client.
	Clean the master.
	Reopen the master and client.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep009
	Replication and DUPMASTERs
	Run test001 in a replicated environment.

	Declare one of the clients to also be a master.
	Close a client, clean it and then declare it a 2nd master.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep010
	Replication and ISPERM

	With consecutive message processing, make sure every
	DB_REP_PERMANENT is responded to with an ISPERM when
	processed.  With gaps in the processing, make sure
	every DB_REP_PERMANENT is responded to with an ISPERM
	or a NOTPERM.  Verify in both cases that the LSN returned
	with ISPERM is found in the log.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep011
	Replication: test open handle across an upgrade.

	Open and close test database in master environment.
	Update the client.  Check client, and leave the handle
	to the client open as we close the masterenv and upgrade
	the client to master.  Reopen the old master as client
	and catch up.  Test that we can still do a put to the
	handle we created on the master while it was still a
	client, and then make sure that the change can be
	propagated back to the new client.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep012
	Replication and dead DB handles.

	Run a modified version of test001 in a replicated master env.
	Run in replicated environment with secondary indices too.
	Make additional changes to master, but not to the client.
	Downgrade the master and upgrade the client with open db handles.
	Verify that the roll back on clients gives dead db handles.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep013
	Replication and swapping master/clients with open dbs.

	Run a modified version of test001 in a replicated master env.
	Make additional changes to master, but not to the client.
	Swap master and client.
	Verify that the roll back on clients gives dead db handles.
	Rerun the test, turning on client-to-client synchronization.
	Swap and verify several times.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep014
	Replication and multiple replication handles.
	Test multiple client handles, opening and closing to
	make sure we get the right openfiles.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep015
	Locking across multiple pages with replication.

	Open master and client with small pagesize and
	generate more than one page and generate off-page
	dups on the first page (second key) and last page
	(next-to-last key).
	Within a single transaction, for each database, open
	2 cursors and delete the first and last entries (this
	exercises locks on regular pages).  Intermittently
	update client during the process.
	Within a single transaction, for each database, open
	2 cursors.  Walk to the off-page dups and delete one
	from each end (this exercises locks on off-page dups).
	Intermittently update client.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep016
	Replication election test with varying required nvotes.

	Run a modified version of test001 in a replicated master environment;
	hold an election among a group of clients to make sure they select
	the master with varying required participants.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep017
	Concurrency with checkpoints.

	Verify that we achieve concurrency in the presence of checkpoints.
	Here are the checks that we wish to make:
	While dbenv1 is handling the checkpoint record:
	Subsequent in-order log records are accepted.
	Accepted PERM log records get NOTPERM
	A subsequent checkpoint gets NOTPERM
	After checkpoint completes, next txn returns PERM

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep018
	Replication with dbremove.

	Verify that the attempt to remove a database file
	on the master hangs while another process holds a
	handle on the client.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep019
	Replication and multiple clients at same LSN.
	Have several clients at the same LSN.  Run recovery at
	different times.  Declare a client master and after sync-up
	verify all client logs are identical.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep020
	Replication elections - test election generation numbers.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep021
	Replication and multiple environments.
	Run similar tests in separate environments, making sure
	that some data overlaps.  Then, "move" one client env
	from one replication group to another and make sure that
	we do not get divergent logs.  We either match the first
	record and end up with identical logs or we get an error.
	Verify all client logs are identical if successful.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep022
	Replication elections - test election generation numbers
	during simulated network partition.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep023
	Replication using two master handles.

	Open two handles on one master env.  Create two
	databases, one through each master handle.  Process
	all messages through the first master handle.  Make
	sure changes made through both handles are picked
	up properly.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep024
	Replication page allocation / verify test

	Start a master (site 1) and a client (site 2).  Master
	closes (simulating a crash).  Site 2 becomes the master
	and site 1 comes back up as a client.  Verify database.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep025
	Test of DB_REP_JOIN_FAILURE.

	One master, one client.
	Generate several log files.
	Remove old master log files.
	Delete client files and restart client.
	Put one more record to the master.  At the next
	processing of messages, the client should get JOIN_FAILURE.
	Recover with a hot failover.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep026
	Replication elections - simulate a crash after sending
	a vote.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep027
	Replication and secondary indexes.

	Set up a secondary index on the master and make sure
	it can be accessed from the client.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep028
	Replication and non-rep env handles. (Also see rep006.)

	Open second non-rep env on client, and create a db
	through this handle.  Open the db on master and put
	some data.  Check whether the non-rep handle keeps
	working.  Also check if opening the client database
	in the non-rep env writes log records.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep029
	Test of internal initialization.

	One master, one client.
	Generate several log files.
	Remove old master log files.
	Delete client files and restart client.
	Put one more record to the master.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep030
	Test of internal initialization multiple files and pagesizes.
	Hold some databases open on master.

	One master, one client using a data_dir for internal init.
	Generate several log files.
	Remove old master log files.
	Delete client files and restart client.
	Put one more record to the master.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep031
	Test of internal initialization and blocked operations.

	One master, one client.
	Put one more record to the master.
	Test that internal initialization blocks:
	log_archive, rename, remove, fileid_reset, lsn_reset.
	Sleep 30+ seconds.
	Test that blocked operations are now unblocked.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep032
	Test of log gap processing.

	One master, one client.
	Run rep_test.
	Run rep_test without sending messages to client.
	Make sure client missing the messages catches up properly.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep033
	Test of internal initialization with rename and remove of dbs.

	One master, one client.
	Generate several databases.  Replicate to client.
	Do some renames and removes, both before and after
	closing the client.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep034
	Test of STARTUPDONE notification.

	STARTUPDONE can now be recognized without the need for new "live" log
	records from the master (under favorable conditions).  The response to
	the ALL_REQ at the end of synchronization includes an end-of-log marker
	that now triggers it.  However, the message containing that end marker
	could get lost, so live log records still serve as a back-up mechanism.
	The end marker may also be set under c2c sync, but only if the serving
	client has itself achieved STARTUPDONE.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep035
	Test sync-up recovery in replication.

	We need to fork off 3 child tclsh processes to operate
	on Site 3's (client always) home directory:
	Process 1 continually calls lock_detect.
	Process 2 continually calls txn_checkpoint.
	Process 3 continually calls memp_trickle.
	Process 4 continually calls log_archive.
	Sites 1 and 2 will continually swap being master
	(forcing site 3 to continually run sync-up recovery)
	New master performs 1 operation, replicates and downgrades.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep036
	Multiple master processes writing to the database.
	One process handles all message processing.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep037
	Test of internal initialization and page throttling.

	One master, one client, force page throttling.
	Generate several log files.
	Remove old master log files.
	Delete client files and restart client.
	Put one more record to the master.
	Verify page throttling occurred.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep038
	Test of internal initialization and ongoing master updates.

	One master, one client.
	Generate several log files.
	Remove old master log files.
	Delete client files and restart client.
	Put more records on master while initialization is in progress.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep039
	Test of interrupted internal initialization.  The
	interruption is due to a changed master, or the client crashing,
	or both.

	One master, two clients.
	Generate several log files. Remove old master log files.
	Restart client, optionally having "cleaned" client env dir.  Either
	way, this has the effect of forcing an internal init.
	Interrupt the internal init.
	Vary the number of times we process messages to make sure
	the interruption occurs at varying stages of the first internal
	initialization.

	Run for btree and queue only because of the number of permutations.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep040
	Test of racing rep_start and transactions.

	One master, one client.
	Have master in the middle of a transaction.
	Call rep_start to make master a client.
	Commit the transaction.
	Call rep_start to make master the master again.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep041
	Turn replication on and off at run-time.

	Start a master with replication OFF (noop transport function).
	Run rep_test to advance log files and archive.
	Start up client; change master to working transport function.
	Now replication is ON.
	Do more ops, make sure client is up to date.
	Close client, turn replication OFF on master, do more ops.
	Repeat from point A.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep042
	Concurrency with updates.

	Verify racing role changes and updates don't result in
	pages with LSN 0,1.  Set up an environment that is master.
	Spawn child process that does a delete, but using the
	$env check so that it sleeps in the middle of the call.
	Master downgrades and then sleeps as a client so that
	child will run.  Verify child does not succeed (should
	get read-only error) due to role change in the middle of
	its call.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep043

	Constant writes during upgrade/downgrade.

	Three envs take turns being master.  Each env
	has a child process which does writes all the
	time.  They will succeed when that env is master
	and fail when it is not.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep044

	Test rollbacks with open file ids.

	We have one master with two handles and one client.
	Each time through the main loop, we open a db, write
	to the db, and close the db.  Each one of these actions
	is propagated to the client, or a roll back is forced
	by swapping masters.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep045

	Replication with versions.

	Mimic an application where a database is set up in the
	background and then put into a replication group for use.
	The "version database" identifies the current live
	version, the database against which queries are made.
	For example, the version database might say the current
	version is 3, and queries would then be sent to db.3.
	Version 4 is prepared for use while version 3 is in use.
	When version 4 is complete, the version database is updated
	to point to version 4 so queries can be directed there.

	This test has a master and two clients.  One client swaps
	roles with the master, and the other client runs constantly
	in another process.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep046
	Replication and basic bulk transfer.
	Set bulk transfer replication option.
	Run long txns on master and then commit.  Process on client
	and verify contents.  Run a very long txn so that logging
	must send the log.  Process and verify on client.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep047
	Replication and log gap bulk transfers.
	Set bulk transfer replication option.
	Run test.  Start a new client (to test ALL_REQ and bulk).
	Run small test again.  Clear messages for 1 client.
	Run small test again to test LOG_REQ gap processing and bulk.
	Process and verify on clients.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep048
	Replication and log gap bulk transfers.
	Have two master env handles.  Turn bulk on in
	one (turns it on for both).  Turn it off in the other.
	While toggling, send log records from both handles.
	Process message and verify master and client match.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep049
	Replication and delay syncing clients - basic test.

	Open and start up a master and two clients.  Turn on delay sync
	in the delayed client.  Change master, add data and process messages.
	Verify delayed client does not match.  Make additional changes and
	update the delayted client.  Verify all match.
	Add in a fresh delayed client to test delay of ALL_REQ.
	Process startup messages and verify freshc client has no database.
	Sync and verify fresh client matches.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep050
	Replication and delay syncing clients - change master test.

	Open and start up master and 4 clients.  Turn on delay for 3 clients.
	Switch masters, add data and verify delayed clients are out of date.
	Make additional changes to master.  And change masters again.
	Sync/update delayed client and verify.  The 4th client is a brand
	new delayed client added in to test the non-verify path.

	Then test two different things:
	1. Swap master again while clients are still delayed.
	2. Swap master again while sync is proceeding for one client.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep051
	Test of compaction with replication.

	Run rep_test in a replicated master environment.
	Delete a large number of entries and compact with -freespace.
	Propagate the changes to the client and make sure client and
	master match.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep052
	Test of replication with NOWAIT.

	One master, one client.  After initializing
	everything normally, close client and let the
	master get ahead -- far enough that the master
	no longer has the client's last log file.
	Reopen the client and turn on NOWAIT.
	Process a few messages to get the client into
	recovery mode, and verify that lockout occurs
	on a txn API call (txn_begin) and an env API call.
	Process all the messages and verify that lockout
	is over.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep053
	Replication and basic client-to-client synchronization.

	Open and start up master and 1 client.
	Start up a second client later and verify it sync'ed from
	the original client, not the master.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep054
	Test of internal initialization where a far-behind
	client takes over as master.

	One master, two clients.
	Run rep_test and process.
	Close client 1.
	Run rep_test, opening new databases, and processing
	messages.  Archive as we go so that log files get removed.
	Close master and reopen client 1 as master.  Process messages.
	Verify that new master and client are in sync.
	Run rep_test again, adding data to one of the new
	named databases.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep055
	Test of internal initialization and log archiving.

	One master, one client.
	Generate several log files.
	Remove old master log files and generate several more.
	Get list of archivable files from db_archive and restart client.
	As client is in the middle of internal init, remove
	the log files returned earlier by db_archive.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep058

	Replication with early databases

	Mimic an application where they create a database before
	calling rep_start, thus writing log records on a client
	before it is a client.  Verify we cannot join repl group.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep060
	Test of normally running clients and internal initialization.
	Have a client running normally, but slow/far behind the master.
	Then the master checkpoints and archives, causing the client
	to suddenly be thrown into internal init.  This test tests
	that we clean up the old files/pages in mpool and dbreg.
	Also test same thing but the app holding an open dbp as well.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep061
	Test of internal initialization multiple files and pagesizes
	with page gaps.

	One master, one client.
	Generate several log files.
	Remove old master log files.
	Delete client files and restart client.
	Put one more record to the master.
	Force some page messages to get dropped.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep062
	Test of internal initialization where client has a different
	kind of database than the master.

	Create a master of one type, and let the client catch up.
	Close the client.
	Remove the database on the master, and create a new
	database of the same name but a different type.
	Run the master ahead far enough that internal initialization
	will be required on the reopen of the client.
	Reopen the client and verify.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep063
	Replication election test with simulated different versions
	for each site.  This tests that old sites with real priority
	trump ELECTABLE sites with zero priority even with greater LSNs.
	There is a special case in the code for testing that if the
	priority is <= 10, we simulate mixed versions for elections.

	Run a rep_test in a replicated master environment and close;
	hold an election among a group of clients to make sure they select
	the master with varying LSNs and priorities.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep064
	Replication rename and forced-upgrade test.

	The test verifies that the client correctly
	(internally) closes files when upgrading to master.
	It does this by having the master have a database
	open, then crashing.  The client upgrades to master,
	and attempts to remove the open database.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep065
	Tests replication running with different versions.
	This capability is introduced with 4.5.

	Start a replication group of 1 master and N sites, all
	running some historical version greater than or equal to 4.4.
	Take down a client and bring it up again running current.
	Run some upgrades, make sure everything works.

	Each site runs the tcllib of its own version, but uses
	the current tcl code (e.g. test.tcl).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep066
	Replication and dead log handles.

	Run rep_test on master and a client.
	Simulate client crashes (master continues) until log 2.
	Open 2nd master env handle and put something in log and flush.
	Downgrade master, restart client as master.
	Run rep_test on newmaster until log 2.
	New master writes log records, newclient processes records
	and 2nd newclient env handle calls log_flush.
	New master commits, newclient processes and should succeed.
	Make sure 2nd handle detects the old log handle and doesn't
	write to a stale handle (if it does, the processing of the
	commit will fail).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep067
	Replication election test with large timeouts.

	Test replication elections among clients with widely varying
	timeouts.  This test is used to simulate a customer that
	wants to force full participation in an election, but only
	if all sites are present (i.e. if all sites are restarted
	together).  If any site has already been part of the group,
	then we want to be able to elect a master based on majority.
	Using varied timeouts, we can force full participation if
	all sites are present with "long_timeout" amount of time and
	then revert to majority.

	A long_timeout would be several minutes whereas a normal
	short timeout would be a few seconds.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep068
	Verify replication of dbreg operations does not hang clients.
	In a simple replication group, create a database with very
	little data.  With DB_TXN_NOSYNC the database can be created
	at the client even though the log is not flushed.  If we crash
	and restart, the application of the log starts over again, even
	though the database is still there.  The application can open
	the database before replication tries to re-apply the create.
	This causes a hang as replication waits to be able to get a
	handle lock.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep069
	Test of internal initialization and elections.

	If a client is in a recovery mode of any kind, it
	participates in elections at priority 0 so it can
	never be elected master.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep070
	Test of startup_done condition with idle master.

	Join a client to an existing master, and verify that
	the client detects startup_done even if the master
	does not execute any new transactions.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep071
	Test of multiple simultaneous client env handles and
	upgrading/downgrading.  Tests use of temp db handle
	internally.

	Open a master and 2 handles to the same client env.
	Run rep_test.
	Close master and upgrade client to master using one env handle.
	Run rep_test again, and then downgrade back to client.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep072
	Verify that internal init does not leak resources from
	the locking subsystem.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep073

	Test of allowing clients to create and update their own scratch
	databases within the environment.  Doing so requires the use
	use of the DB_TXN_NOT_DURABLE flag for those databases.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep074
	Verify replication withstands send errors processing requests.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep075
	Replication and prepared transactions.
	Test having outstanding prepared transactions and simulating
	crashing or upgrading or downgrading sites.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep076
	Replication elections - what happens if elected client
	does not become master?

	Set up a master and 3 clients.  Take down master, run election.
	The elected client will ignore the fact that it's been elected,
	so we still have 2 clients.

	Run another election, a regular election that allows the winner
	to become master, and make sure it goes okay.  We do this both
	for the client that ignored its election and for the other client.

	This simulates what would happen if, say, we had a temporary
	network partition and lost the winner.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep077

	Replication, recovery and applying log records immediately.
	Master and 1 client.  Start up both sites.
	Close client and run rep_test on the master so that the
	log record is the same LSN the client would be expecting.
	Reopen client with recovery and verify the client does not
	try to apply that "expected" record before it synchronizes
	with the master.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep078

	Replication and basic lease test.
	Set leases on master and 2 clients.
	Do a lease operation and process to all clients.
	Read with lease on master.  Do another lease operation
	and don't process on any client.  Try to read with
	on the master and verify it fails.  Process the messages
	to the clients and retry the read.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep079
	Replication leases and invalid usage.

	Open a client without leases.  Attempt to set leases after rep_start.
	Attempt to declare as master without election.
	Run an election with an nsites parameter value.
	Elect a master with leases.  Put some data and send to clients.
	Cleanly shutdown master env.  Restart without
	recovery and verify leases are expired and refreshed.
	Add a new client without leases to a group using leases.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep080
	NOAUTOINIT with empty client logs.

	Verify that a fresh client trying to join the group for
	the first time observes the setting of DELAY_SYNC and NOAUTOINIT
	properly.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep081
	Test of internal initialization and missing database files.

	One master, one client, two databases.
	Generate several log files.
	Remove old master log files.
	Start up client.
	Remove or replace one master database file while client initialization 
	is in progress, make sure other master database can keep processing.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep082
	Sending replication requests to correct master site.

	Regression test for a bug [#16592] where a client could send an
	UPDATE_REQ to another client instead of the master.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep083
	Replication clients must never send VERIFY_FAIL to a c2c request.

	Regression test for a bug [#16592] where a client could send a
	VERIFY_FAIL to another client, which is illegal.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep084
	Abbreviated internal init for named in-memory databases (NIMDBs).


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep085
	Skipping unnecessary abbreviated internal init.

	Make sure that once we've materialized NIMDBs, we don't bother
	trying to do it again on subsequent sync without recovery.  Make
	sure we do probe for the need to materialize NIMDBs, but don't do
	any internal init at all if there are no NIMDBs.  Note that in order to
	do this test we don't even need any NIMDBs.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep086
	Interrupted abbreviated internal init.

	Make sure we cleanly remove partially loaded named in-memory
	databases (NIMDBs).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep087
	Abbreviated internal init with open file handles.

	Client has open handle to an on-disk DB when abbreviated
	internal init starts.  Make sure we lock out access, and make sure
	it ends up as HANDLE_DEAD.  Also, make sure that if there are
	no NIMDBs, that we *don't* get HANDLE_DEAD.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep088
	Replication roll-back preserves checkpoint.

	Create a situation where a client has to roll back its
	log, discarding some existing transactions, in order to sync
	with a new master.

	1. When the client still has its entire log file history, all
	the way back to log file #1, it's OK if the roll-back discards
	any/all checkpoints.
	2. When old log files have been archived, if the roll-back would
	remove all existing checkpoints it must be forbidden.  The log
	must always have a checkpoint (or all files back through #1).
	The client must do internal init or return JOIN_FAILURE.
	3. (the normal case) Old log files archived, and a checkpoint
	still exists in the portion of the log which will remain after
	the roll-back: no internal-init/JOIN_FAILURE necessary.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr001
	Basic repmgr test. 

	Create an appointed master and two clients, process some records and 
	verify resulting databases.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr002
	Basic repmgr election test. 

	Open three clients of different priorities and make sure repmgr 
	elects expected master. Shut master down, make sure repmgr elects 
	expected remaining client master, make sure former master can join 
	as client.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr003
	Basic repmgr internal init test. 

	Start an appointed master site and two clients, processing 
	transactions between each additional site. Verify all expected 
	transactions are replicated.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr004
	Basic repmgr test with in-memory logs.

	Create an appointed master and two clients, process some records and 
	verify resulting databases.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr005
	Basic repmgr test with in-memory databases. 

	Create an appointed master and two clients, process some records and 
	verify resulting databases.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr006
	Basic repmgr test with bulk processing. 

	Create an appointed master and two clients, process some records and 
	verify resulting databases.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr007
	Basic repmgr client shutdown/restart test.

	Start an appointed master site and two clients. Shutdown and
	restart each client, processing transactions after each restart.
	Verify all expected transactions are replicated.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr008
	Basic repmgr test with client-to-client configuration.

	Create a master and two clients, process some records and verify 
	resulting databases.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr009
	repmgr API error test.

	Try a variety of repmgr calls that result in errors. Also
	try combinations of repmgr and base replication API calls
	that result in errors.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr010
	Acknowledgement policy and timeout test. 

	Verify that "quorum" acknowledgement policy succeeds with fewer than 
	nsites running. Verify that "all" acknowledgement policy results in 
	ack failures with fewer than nsites running.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr011
	repmgr two site strict majority test.

	Start an appointed master and one client with 2 site strict
	majority set. Shut down the master site, wait and verify that
	the client site was not elected master. Start up master site
	and verify that transactions are processed as expected.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr012
	repmgr heartbeat test.

	Start an appointed master and one client site. Set heartbeat
	send and monitor values and process some transactions. Stop
	sending heartbeats from master and verify that client sees
	a dropped connection.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr013
	Site list test. 

	Configure a master and two clients where one client is a peer of 
	the other and verify resulting site lists.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr014
	Basic repmgr in-memory test. 

	Create an appointed master and two clients, process some records and 
	verify resulting databases. Put databases, logs and replication files
	in-memory.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr015
	Basic repmgr in-memory election test. 

	Open three clients of different priorities and make sure repmgr 
	elects expected master. Shut master down, make sure repmgr elects 
	expected remaining client master, make sure former master can join 
	as client. Replication files are in-memory; databases, logs and
	environment regions are on-disk.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr016
	Basic repmgr in-memory internal init test. 

	Start an appointed master site and two clients, processing 
	transactions between each additional site. Verify all expected 
	transactions are replicated. Replication files are in-memory; 
	databases, logs and environment regions are on-disk.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr017
	repmgr in-memory cache overflow test. 

	Start an appointed master site and one client, putting databases,
	environment regions, logs and replication files in-memory. Set 
	very small cachesize and run enough transactions to overflow cache. 
	Shut down and restart master and client, giving master a larger cache. 
	Run and verify a small number of transactions.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr018
	Check repmgr stats.

	Start an appointed master and one client. Shut down the client,
	run some transactions at the master and verify that there are
	acknowledgement failures and one dropped connection. Shut down
	and restart client again and verify that there are two dropped
	connections.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr019
	Basic repmgr test with in-memory databases and in-memory logs. 

	Create an appointed master and two clients, process some records and 
	verify resulting databases.

	Run for btree only because access method shouldn't matter.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr022
	Basic test of repmgr's multi-process master support.

	Set up a simple 2-site group, create data and replicate it.
	Add a second process at the master and have it write some
	updates.  It does not explicitly start repmgr (nor do any
	replication configuration, for that matter).  Its first
	update triggers initiation of connections, and so it doesn't
	get to the client without a log request.  But later updates
	should go directly.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr023
	Repmgr support for multi-process master.

	Start two processes at the master.
	Add a client site (not previously known to the master 
	processes), and make sure
	both master processes connect to it.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr024
	Ensuring exactly one listener process.

	Start a repmgr process with a listener.
	Start a second process, and see that it does not become the listener.
	Shut down the first process (gracefully).  Now a second process should
	become listener.
	Kill the listener process abruptly.  Running failchk should show that
	recovery is necessary.  Run recovery and start a clean listener.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr025
	Repmgr site address discovery via handshakes.

	Master with 2 processes, does not know client's address.
	Client processes start in either order, connect to master.
	Master learns of client's address via handshake message.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr026
	Repmgr site address discovery via NEWSITE

	New client, previously unknown to (main) master process, connects to an
	existing client, which broadcasts NEWSITE message.
	This causes master to discover its address, and connect to it.
	Other new clients may also have been added to master's configuration in
	the interim (via a subordinate master process).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr027
	Repmgr recognition of peer setting, across processes.

	Set up a master and two clients, synchronized with some data.
	Add a new client, configured to use c2c sync with one of the original
	clients.  Check stats to make sure the correct c2c peer was used.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr028
	Simple smoke test for repmgr elections with multi-process envs.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr029
	Repmgr combined with replication-unaware process at master.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr030
	Subordinate connections and processes should not trigger elections.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr031
	Test repmgr's internal juggling of peer EID's.

	Set up master and 2 clients, A and B.
	Add a third client (C), with two processes.
	The first process will be configured to know about A.
	The second process will know about B, and set that as peer,
	but when it joins the env site B will have to be shuffled
	into a later position in the list, because A is already first.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
repmgr032
	Multi-process repmgr start-up policies.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rpc001
	Test RPC server timeouts for cursor, txn and env handles.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rpc002
	Test invalid RPC functions and make sure we error them correctly
	Test server home directory error cases

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rpc003
	Test RPC and secondary indices.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rpc004
	Test RPC server and security

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rpc005
	Test RPC server handle ID sharing

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rpc006
	Test RPC server and multiple operations to server.
	Make sure the server doesn't deadlock itself, but
	returns DEADLOCK to the client.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rsrc001
	Recno backing file test.  Try different patterns of adding
	records and making sure that the corresponding file matches.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rsrc002
	Recno backing file test #2: test of set_re_delim.  Specify a backing
	file with colon-delimited records, and make sure they are correctly
	interpreted.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rsrc003
	Recno backing file test.  Try different patterns of adding
	records and making sure that the corresponding file matches.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rsrc004
	Recno backing file test for EOF-terminated records.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
scr###
	The scr### directories are shell scripts that test a variety of
	things, including things about the distribution itself.  These
	tests won't run on most systems, so don't even try to run them.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb001	Tests mixing db and subdb operations
	Tests mixing db and subdb operations
	Create a db, add data, try to create a subdb.
	Test naming db and subdb with a leading - for correct parsing
	Existence check -- test use of -excl with subdbs

	Test non-subdb and subdb operations
	Test naming (filenames begin with -)
	Test existence (cannot create subdb of same name with -excl)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb002
	Tests basic subdb functionality
	Small keys, small data
	Put/get per key
	Dump file
	Close, reopen
	Dump file

	Use the first 10,000 entries from the dictionary.
	Insert each with self as key and data; retrieve each.
	After all are entered, retrieve all; compare output to original.
	Close file, reopen, do retrieve and re-verify.
	Then repeat using an environment.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb003
	Tests many subdbs
	Creates many subdbs and puts a small amount of
	data in each (many defaults to 1000)

	Use the first 1000 entries from the dictionary as subdbnames.
	Insert each with entry as name of subdatabase and a partial list
	as key/data.  After all are entered, retrieve all; compare output
	to original.  Close file, reopen, do retrieve and re-verify.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb004
	Tests large subdb names
	subdb name = filecontents,
	key = filename, data = filecontents
	Put/get per key
	Dump file
	Dump subdbs, verify data and subdb name match

	Create 1 db with many large subdbs.  Use the contents as subdb names.
	Take the source files and dbtest executable and enter their names as
	the key with their contents as data.  After all are entered, retrieve
	all; compare output to original. Close file, reopen, do retrieve and
	re-verify.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb005
	Tests cursor operations in subdbs
	Put/get per key
	Verify cursor operations work within subdb
	Verify cursor operations do not work across subdbs


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb006
	Tests intra-subdb join

	We'll test 2-way, 3-way, and 4-way joins and figure that if those work,
	everything else does as well.  We'll create test databases called
	sub1.db, sub2.db, sub3.db, and sub4.db.  The number on the database
	describes the duplication -- duplicates are of the form 0, N, 2N, 3N,
	...  where N is the number of the database.  Primary.db is the primary
	database, and sub0.db is the database that has no matching duplicates.
	All of these are within a single database.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb007
	Tests page size difference errors between subdbs.
	If the physical file already exists, we ignore pagesize specifications
	on any subsequent -creates.

	1.  Create/open a subdb with system default page size.
	Create/open a second subdb specifying a different page size.
	The create should succeed, but the pagesize of the new db
	will be the system default page size.
	2.  Create/open a subdb with a specified, non-default page size.
	Create/open a second subdb specifying a different page size.
	The create should succeed, but the pagesize of the new db
	will be the specified page size from the first create.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb008
	Tests explicit setting of lorders for subdatabases -- the
	lorder should be ignored.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb009
	Test DB->rename() method for subdbs

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb010
	Test DB->remove() method and DB->truncate() for subdbs

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb011
	Test deleting Subdbs with overflow pages
	Create 1 db with many large subdbs.
	Test subdatabases with overflow pages.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb012
	Test subdbs with locking and transactions
	Tests creating and removing subdbs while handles
	are open works correctly, and in the face of txns.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb013
	Tests in-memory subdatabases.
	Create an in-memory subdb.  Test for persistence after
	overflowing the cache.  Test for conflicts when we have
	two in-memory files.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb014
	Tests mixing in-memory named and in-memory unnamed dbs.
	Create a regular in-memory db, add data.
	Create a named in-memory db.
	Try to create the same named in-memory db again (should fail).
	Try to create a different named in-memory db (should succeed).


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb015
	Tests basic in-memory named database functionality
	Small keys, small data
	Put/get per key

	Use the first 10,000 entries from the dictionary.
	Insert each with self as key and data; retrieve each.
	After all are entered, retrieve all; compare output to original.
	Close file, reopen, do retrieve and re-verify.
	Then repeat using an environment.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb016
	Creates many in-memory named dbs and puts a small amount of
	data in each (many defaults to 100)

	Use the first 100 entries from the dictionary as names.
	Insert each with entry as name of subdatabase and a partial list
	as key/data.  After all are entered, retrieve all; compare output
	to original.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb017
	Test DB->rename() for in-memory named databases.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb018
	Tests join of in-memory named databases.

	We'll test 2-way, 3-way, and 4-way joins and figure that if those work,
	everything else does as well.  We'll create test databases called
	sub1.db, sub2.db, sub3.db, and sub4.db.  The number on the database
	describes the duplication -- duplicates are of the form 0, N, 2N, 3N,
	...  where N is the number of the database.  Primary.db is the primary
	database, and sub0.db is the database that has no matching duplicates.
	All of these are within a single database.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb019
	Tests in-memory subdatabases.
	Create an in-memory subdb.  Test for persistence after
	overflowing the cache.  Test for conflicts when we have
	two in-memory files.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdb020
	Tests in-memory subdatabases.
	Create an in-memory subdb with one page size.  Close, and
	open with a different page size: should fail.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdbtest001
	Tests multiple access methods in one subdb
	Open several subdbs, each with a different access method
	Small keys, small data
	Put/get per key per subdb
	Dump file, verify per subdb
	Close, reopen per subdb
	Dump file, verify per subdb

	Make several subdb's of different access methods all in one DB.
	Rotate methods and repeat [#762].
	Use the first 10,000 entries from the dictionary.
	Insert each with self as key and data; retrieve each.
	After all are entered, retrieve all; compare output to original.
	Close file, reopen, do retrieve and re-verify.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sdbtest002
	Tests multiple access methods in one subdb access by multiple
	processes.
	Open several subdbs, each with a different access method
	Small keys, small data
	Put/get per key per subdb
	Fork off several child procs to each delete selected
	data from their subdb and then exit
	Dump file, verify contents of each subdb is correct
	Close, reopen per subdb
	Dump file, verify per subdb

	Make several subdb's of different access methods all in one DB.
	Fork of some child procs to each manipulate one subdb and when
	they are finished, verify the contents of the databases.
	Use the first 10,000 entries from the dictionary.
	Insert each with self as key and data; retrieve each.
	After all are entered, retrieve all; compare output to original.
	Close file, reopen, do retrieve and re-verify.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sec001
	Test of security interface

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sec002
	Test of security interface and catching errors in the
	face of attackers overwriting parts of existing files.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
si001
	Secondary index put/delete with lorder test

	Put data in primary db and check that pget on secondary
	index finds the right entries.  Alter the primary in the
	following ways, checking for correct data each time:
	Overwrite data in primary database.
	Delete half of entries through primary.
	Delete half of remaining entries through secondary.
	Append data (for record-based primaries only).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
si002
	Basic cursor-based secondary index put/delete test

	Cursor put data in primary db and check that pget
	on secondary index finds the right entries.
	Open and use a second cursor to exercise the cursor
	comparison API on secondaries.  
	Overwrite while walking primary, check pget again.
	Overwrite while walking secondary (use c_pget), check
	pget again.
	Cursor delete half of entries through primary, check.
	Cursor delete half of remainder through secondary, check.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
si003
	si001 with secondaries created and closed mid-test
	Basic secondary index put/delete test with secondaries
	created mid-test.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
si004
	si002 with secondaries created and closed mid-test
	Basic cursor-based secondary index put/delete test, with
	secondaries created mid-test.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
si005
	Basic secondary index put/delete test with transactions

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
si006

	Test -immutable_key interface.

	DB_IMMUTABLE_KEY is an optimization to be used when a
	secondary key will not be changed.  It does not prevent
	a deliberate change to the secondary key, it just does not
	propagate that change when it is made to the primary.
	This test verifies that a change to the primary is propagated
	to the secondary or not as specified by -immutable_key.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
si007
	Secondary index put/delete with lorder test

	This test is the same as si001 with the exception
	that we create and populate the primary and THEN
	create the secondaries and associate them with -create.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
si008
	Secondary index put/delete with lorder test

	This test is the same as si001 except that we
	create the secondaries with different byte orders:
	one native, one swapped.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
sijointest: Secondary index and join test.
	This used to be si005.tcl.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test001
	Small keys/data
	Put/get per key
	Dump file
	Close, reopen
	Dump file

	Use the first 10,000 entries from the dictionary.
	Insert each with self as key and data; retrieve each.
	After all are entered, retrieve all; compare output to original.
	Close file, reopen, do retrieve and re-verify.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test002
	Small keys/medium data
	Put/get per key
	Dump file
	Close, reopen
	Dump file

	Use the first 10,000 entries from the dictionary.
	Insert each with self as key and a fixed, medium length data string;
	retrieve each. After all are entered, retrieve all; compare output
	to original. Close file, reopen, do retrieve and re-verify.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test003
	Small keys/large data
	Put/get per key
	Dump file
	Close, reopen
	Dump file

	Take the source files and dbtest executable and enter their names
	as the key with their contents as data.  After all are entered,
	retrieve all; compare output to original. Close file, reopen, do
	retrieve and re-verify.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test004
	Small keys/medium data
	Put/get per key
	Sequential (cursor) get/delete

	Check that cursor operations work.  Create a database.
	Read through the database sequentially using cursors and
	delete each element.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test005
	Small keys/medium data
	Put/get per key
	Close, reopen
	Sequential (cursor) get/delete

	Check that cursor operations work.  Create a database; close
	it and reopen it.  Then read through the database sequentially
	using cursors and delete each element.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test006
	Small keys/medium data
	Put/get per key
	Keyed delete and verify

	Keyed delete test.
	Create database.
	Go through database, deleting all entries by key.
	Then do the same for unsorted and sorted dups.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test007
	Small keys/medium data
	Put/get per key
	Close, reopen
	Keyed delete

	Check that delete operations work.  Create a database; close
	database and reopen it.  Then issues delete by key for each
	entry.  (Test006 plus reopen)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test008
	Small keys/large data
	Put/get per key
	Loop through keys by steps (which change)
	... delete each key at step
	... add each key back
	... change step
	Confirm that overflow pages are getting reused

	Take the source files and dbtest executable and enter their names as
	the key with their contents as data.  After all are entered, begin
	looping through the entries; deleting some pairs and then readding them.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test009
	Small keys/large data
	Same as test008; close and reopen database

	Check that we reuse overflow pages.  Create database with lots of
	big key/data pairs.  Go through and delete and add keys back
	randomly.  Then close the DB and make sure that we have everything
	we think we should.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test010
	Duplicate test
	Small key/data pairs.

	Use the first 10,000 entries from the dictionary.
	Insert each with self as key and data; add duplicate records for each.
	After all are entered, retrieve all; verify output.
	Close file, reopen, do retrieve and re-verify.
	This does not work for recno

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test011
	Duplicate test
	Small key/data pairs.
	Test DB_KEYFIRST, DB_KEYLAST, DB_BEFORE and DB_AFTER.
	To test off-page duplicates, run with small pagesize.

	Use the first 10,000 entries from the dictionary.
	Insert each with self as key and data; add duplicate records for each.
	Then do some key_first/key_last add_before, add_after operations.
	This does not work for recno

	To test if dups work when they fall off the main page, run this with
	a very tiny page size.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test012
	Large keys/small data
	Same as test003 except use big keys (source files and
	executables) and small data (the file/executable names).

	Take the source files and dbtest executable and enter their contents
	as the key with their names as data.  After all are entered, retrieve
	all; compare output to original. Close file, reopen, do retrieve and
	re-verify.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test013
	Partial put test
	Overwrite entire records using partial puts.
	Make sure that NOOVERWRITE flag works.

	1. Insert 10000 keys and retrieve them (equal key/data pairs).
	2. Attempt to overwrite keys with NO_OVERWRITE set (expect error).
	3. Actually overwrite each one with its datum reversed.

	No partial testing here.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test014
	Exercise partial puts on short data
	Run 5 combinations of numbers of characters to replace,
	and number of times to increase the size by.

	Partial put test, small data, replacing with same size.  The data set
	consists of the first nentries of the dictionary.  We will insert them
	(and retrieve them) as we do in test 1 (equal key/data pairs).  Then
	we'll try to perform partial puts of some characters at the beginning,
	some at the end, and some at the middle.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test015
	Partial put test
	Partial put test where the key does not initially exist.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test016
	Partial put test
	Partial put where the datum gets shorter as a result of the put.

	Partial put test where partial puts make the record smaller.
	Use the first 10,000 entries from the dictionary.
	Insert each with self as key and a fixed, medium length data string;
	retrieve each. After all are entered, go back and do partial puts,
	replacing a random-length string with the key value.
	Then verify.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test017
	Basic offpage duplicate test.

	Run duplicates with small page size so that we test off page duplicates.
	Then after we have an off-page database, test with overflow pages too.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test018
	Offpage duplicate test
	Key_{first,last,before,after} offpage duplicates.
	Run duplicates with small page size so that we test off page
	duplicates.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test019
	Partial get test.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test020
	In-Memory database tests.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test021
	Btree range tests.

	Use the first 10,000 entries from the dictionary.
	Insert each with self, reversed as key and self as data.
	After all are entered, retrieve each using a cursor SET_RANGE, and
	getting about 20 keys sequentially after it (in some cases we'll
	run out towards the end of the file).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test022
	Test of DB->getbyteswapped().

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test023
	Duplicate test
	Exercise deletes and cursor operations within a duplicate set.
	Add a key with duplicates (first time on-page, second time off-page)
	Number the dups.
	Delete dups and make sure that CURRENT/NEXT/PREV work correctly.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test024
	Record number retrieval test.
	Test the Btree and Record number get-by-number functionality.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test025
	DB_APPEND flag test.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test026
	Small keys/medium data w/duplicates
	Put/get per key.
	Loop through keys -- delete each key
	... test that cursors delete duplicates correctly

	Keyed delete test through cursor.  If ndups is small; this will
	test on-page dups; if it's large, it will test off-page dups.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test027
	Off-page duplicate test
	Test026 with parameters to force off-page duplicates.

	Check that delete operations work.  Create a database; close
	database and reopen it.  Then issues delete by key for each
	entry.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test028
	Cursor delete test
	Test put operations after deleting through a cursor.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test029
	Test the Btree and Record number renumbering.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test030
	Test DB_NEXT_DUP Functionality.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test031
	Duplicate sorting functionality
	Make sure DB_NODUPDATA works.

	Use the first 10,000 entries from the dictionary.
	Insert each with self as key and "ndups" duplicates
	For the data field, prepend random five-char strings (see test032)
	that we force the duplicate sorting code to do something.
	Along the way, test that we cannot insert duplicate duplicates
	using DB_NODUPDATA.

	By setting ndups large, we can make this an off-page test
	After all are entered, retrieve all; verify output.
	Close file, reopen, do retrieve and re-verify.
	This does not work for recno

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test032
	DB_GET_BOTH, DB_GET_BOTH_RANGE

	Use the first 10,000 entries from the dictionary.  Insert each with
	self as key and "ndups" duplicates.   For the data field, prepend the
	letters of the alphabet in a random order so we force the duplicate
	sorting code to do something.  By setting ndups large, we can make
	this an off-page test. By setting overflow to be 1, we can make
	this an overflow test.

	Test the DB_GET_BOTH functionality by retrieving each dup in the file
	explicitly.  Test the DB_GET_BOTH_RANGE functionality by retrieving
	the unique key prefix (cursor only).  Finally test the failure case.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test033
	DB_GET_BOTH without comparison function

	Use the first 10,000 entries from the dictionary.  Insert each with
	self as key and data; add duplicate records for each.  After all are
	entered, retrieve all and verify output using DB_GET_BOTH (on DB and
	DBC handles) and DB_GET_BOTH_RANGE (on a DBC handle) on existent and
	nonexistent keys.

	XXX
	This does not work for rbtree.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test034
	test032 with off-page or overflow case with non-duplicates
	and duplicates.

	DB_GET_BOTH, DB_GET_BOTH_RANGE functionality with off-page 
	or overflow case within non-duplicates and duplicates.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test035
	Test033 with off-page duplicates
	DB_GET_BOTH functionality with off-page duplicates.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test036
	Test KEYFIRST and KEYLAST when the key doesn't exist
	Put nentries key/data pairs (from the dictionary) using a cursor
	and KEYFIRST and KEYLAST (this tests the case where use use cursor
	put for non-existent keys).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test037
	Test DB_RMW

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test038
	DB_GET_BOTH, DB_GET_BOTH_RANGE on deleted items

	Use the first 10,000 entries from the dictionary.  Insert each with
	self as key and "ndups" duplicates.  For the data field, prepend the
	letters of the alphabet in a random order so we force the duplicate
	sorting code to do something.  By setting ndups large, we can make
	this an off-page test

	Test the DB_GET_BOTH and DB_GET_BOTH_RANGE functionality by retrieving
	each dup in the file explicitly.  Then remove each duplicate and try
	the retrieval again.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test039
	DB_GET_BOTH/DB_GET_BOTH_RANGE on deleted items without comparison
	function.

	Use the first 10,000 entries from the dictionary.  Insert each with
	self as key and "ndups" duplicates.  For the data field, prepend the
	letters of the alphabet in a random order so we force the duplicate
	sorting code to do something.  By setting ndups large, we can make
	this an off-page test.

	Test the DB_GET_BOTH and DB_GET_BOTH_RANGE functionality by retrieving
	each dup in the file explicitly.  Then remove each duplicate and try
	the retrieval again.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test040
	Test038 with off-page duplicates
	DB_GET_BOTH functionality with off-page duplicates.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test041
	Test039 with off-page duplicates
	DB_GET_BOTH functionality with off-page duplicates.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test042
	Concurrent Data Store test (CDB)

	Multiprocess DB test; verify that locking is working for the
	concurrent access method product.

	Use the first "nentries" words from the dictionary.  Insert each with
	self as key and a fixed, medium length data string.  Then fire off
	multiple processes that bang on the database.  Each one should try to
	read and write random keys.  When they rewrite, they'll append their
	pid to the data string (sometimes doing a rewrite sometimes doing a
	partial put).  Some will use cursors to traverse through a few keys
	before finding one to write.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test043
	Recno renumbering and implicit creation test
	Test the Record number implicit creation and renumbering options.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test044
	Small system integration tests
	Test proper functioning of the checkpoint daemon,
	recovery, transactions, etc.

	System integration DB test: verify that locking, recovery, checkpoint,
	and all the other utilities basically work.

	The test consists of $nprocs processes operating on $nfiles files.  A
	transaction consists of adding the same key/data pair to some random
	number of these files.  We generate a bimodal distribution in key size
	with 70% of the keys being small (1-10 characters) and the remaining
	30% of the keys being large (uniform distribution about mean $key_avg).
	If we generate a key, we first check to make sure that the key is not
	already in the dataset.  If it is, we do a lookup.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test045
	Small random tester
	Runs a number of random add/delete/retrieve operations.
	Tests both successful conditions and error conditions.

	Run the random db tester on the specified access method.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test046
	Overwrite test of small/big key/data with cursor checks.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test047
	DBcursor->c_get get test with SET_RANGE option.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test048
	Cursor stability across Btree splits.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test049
	Cursor operations on uninitialized cursors.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test050
	Overwrite test of small/big key/data with cursor checks for Recno.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test051
	Fixed-length record Recno test.
	0. Test various flags (legal and illegal) to open
	1. Test partial puts where dlen != size (should fail)
	2. Partial puts for existent record -- replaces at beg, mid, and
	end of record, as well as full replace

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test052
	Renumbering record Recno test.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test053
	Test of the DB_REVSPLITOFF flag in the Btree and Btree-w-recnum
	methods.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test054
	Cursor maintenance during key/data deletion.

	This test checks for cursor maintenance in the presence of deletes.
	There are N different scenarios to tests:
	1. No duplicates.  Cursor A deletes a key, do a  GET for the key.
	2. No duplicates.  Cursor is positioned right before key K, Delete K,
	do a next on the cursor.
	3. No duplicates.  Cursor is positioned on key K, do a regular delete
	of K, do a current get on K.
	4. Repeat 3 but do a next instead of current.
	5. Duplicates. Cursor A is on the first item of a duplicate set, A
	does a delete.  Then we do a non-cursor get.
	6. Duplicates.  Cursor A is in a duplicate set and deletes the item.
	do a delete of the entire Key. Test cursor current.
	7. Continue last test and try cursor next.
	8. Duplicates.  Cursor A is in a duplicate set and deletes the item.
	Cursor B is in the same duplicate set and deletes a different item.
	Verify that the cursor is in the right place.
	9. Cursors A and B are in the place in the same duplicate set.  A
	deletes its item.  Do current on B.
	10. Continue 8 and do a next on B.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test055
	Basic cursor operations.
	This test checks basic cursor operations.
	There are N different scenarios to tests:
	1. (no dups) Set cursor, retrieve current.
	2. (no dups) Set cursor, retrieve next.
	3. (no dups) Set cursor, retrieve prev.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test056
	Cursor maintenance during deletes.
	Check if deleting a key when a cursor is on a duplicate of that
	key works.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test057
	Cursor maintenance during key deletes.
	1.  Delete a key with a cursor.  Add the key back with a regular
	put.  Make sure the cursor can't get the new item.
	2.  Put two cursors on one item.  Delete through one cursor,
	check that the other sees the change.
	3.  Same as 2, with the two cursors on a duplicate.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test058
	Verify that deleting and reading duplicates results in correct ordering.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test059
	Cursor ops work with a partial length of 0.
	Make sure that we handle retrieves of zero-length data items correctly.
	The following ops, should allow a partial data retrieve of 0-length.
	db_get
	db_cget FIRST, NEXT, LAST, PREV, CURRENT, SET, SET_RANGE

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test060
	Test of the DB_EXCL flag to DB->open().
	1) Attempt to open and create a nonexistent database; verify success.
	2) Attempt to reopen it;  verify failure.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test061
	Test of txn abort and commit for in-memory databases.
	a) Put + abort: verify absence of data
	b) Put + commit: verify presence of data
	c) Overwrite + abort: verify that data is unchanged
	d) Overwrite + commit: verify that data has changed
	e) Delete + abort: verify that data is still present
	f) Delete + commit: verify that data has been deleted

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test062
	Test of partial puts (using DB_CURRENT) onto duplicate pages.
	Insert the first 200 words into the dictionary 200 times each with
	self as key and <random letter>:self as data.  Use partial puts to
	append self again to data;  verify correctness.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test063
	Test of the DB_RDONLY flag to DB->open
	Attempt to both DB->put and DBC->c_put into a database
	that has been opened DB_RDONLY, and check for failure.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test064
	Test of DB->get_type
	Create a database of type specified by method.
	Make sure DB->get_type returns the right thing with both a normal
	and DB_UNKNOWN open.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test065
	Test of DB->stat, both -DB_FAST_STAT and row
	counts with DB->stat -txn.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test066
	Test of cursor overwrites of DB_CURRENT w/ duplicates.

	Make sure a cursor put to DB_CURRENT acts as an overwrite in a
	database with duplicates.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test067
	Test of DB_CURRENT partial puts onto almost empty duplicate
	pages, with and without DB_DUP_SORT.

	Test of DB_CURRENT partial puts on almost-empty duplicate pages.
	This test was written to address the following issue, #2 in the
	list of issues relating to bug #0820:

	2. DBcursor->put, DB_CURRENT flag, off-page duplicates, hash and btree:
	In Btree, the DB_CURRENT overwrite of off-page duplicate records
	first deletes the record and then puts the new one -- this could
	be a problem if the removal of the record causes a reverse split.
	Suggested solution is to acquire a cursor to lock down the current
	record, put a new record after that record, and then delete using
	the held cursor.

	It also tests the following, #5 in the same list of issues:
	5. DBcursor->put, DB_AFTER/DB_BEFORE/DB_CURRENT flags, DB_DBT_PARTIAL
	set, duplicate comparison routine specified.
	The partial change does not change how data items sort, but the
	record to be put isn't built yet, and that record supplied is the
	one that's checked for ordering compatibility.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test068
	Test of DB_BEFORE and DB_AFTER with partial puts.
	Make sure DB_BEFORE and DB_AFTER work properly with partial puts, and
	check that they return EINVAL if DB_DUPSORT is set or if DB_DUP is not.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test069
	Test of DB_CURRENT partial puts without duplicates-- test067 w/
	small ndups to ensure that partial puts to DB_CURRENT work
	correctly in the absence of duplicate pages.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test070
	Test of DB_CONSUME (Four consumers, 1000 items.)

	Fork off six processes, four consumers and two producers.
	The producers will each put 20000 records into a queue;
	the consumers will each get 10000.
	Then, verify that no record was lost or retrieved twice.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test071
	Test of DB_CONSUME (One consumer, 10000 items.)
	This is DB Test 70, with one consumer, one producers, and 10000 items.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test072
	Test of cursor stability when duplicates are moved off-page.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test073
	Test of cursor stability on duplicate pages.

	Does the following:
	a. Initialize things by DB->putting ndups dups and
	setting a reference cursor to point to each.
	b. c_put ndups dups (and correspondingly expanding
	the set of reference cursors) after the last one, making sure
	after each step that all the reference cursors still point to
	the right item.
	c. Ditto, but before the first one.
	d. Ditto, but after each one in sequence first to last.
	e. Ditto, but after each one in sequence from last to first.
	occur relative to the new datum)
	f. Ditto for the two sequence tests, only doing a
	DBC->c_put(DB_CURRENT) of a larger datum instead of adding a
	new one.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test074
	Test of DB_NEXT_NODUP.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test076
	Test creation of many small databases in a single environment. [#1528].

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test077
	Test of DB_GET_RECNO [#1206].

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test078
	Test of DBC->c_count(). [#303]

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test079
	Test of deletes in large trees.  (test006 w/ sm. pagesize).

	Check that delete operations work in large btrees.  10000 entries
	and a pagesize of 512 push this out to a four-level btree, with a
	small fraction of the entries going on overflow pages.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test081
	Test off-page duplicates and overflow pages together with
	very large keys (key/data as file contents).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test082
	Test of DB_PREV_NODUP (uses test074).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test083
	Test of DB->key_range.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test084
	Basic sanity test (test001) with large (64K) pages.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test085
	Test of cursor behavior when a cursor is pointing to a deleted
	btree key which then has duplicates added. [#2473]

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test086
	Test of cursor stability across btree splits/rsplits with
	subtransaction aborts (a variant of test048).  [#2373]

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test087
	Test of cursor stability when converting to and modifying
	off-page duplicate pages with subtransaction aborts. [#2373]

	Does the following:
	a. Initialize things by DB->putting ndups dups and
	setting a reference cursor to point to each.  Do each put twice,
	first aborting, then committing, so we're sure to abort the move
	to off-page dups at some point.
	b. c_put ndups dups (and correspondingly expanding
	the set of reference cursors) after the last one, making sure
	after each step that all the reference cursors still point to
	the right item.
	c. Ditto, but before the first one.
	d. Ditto, but after each one in sequence first to last.
	e. Ditto, but after each one in sequence from last to first.
	occur relative to the new datum)
	f. Ditto for the two sequence tests, only doing a
	DBC->c_put(DB_CURRENT) of a larger datum instead of adding a
	new one.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test088
	Test of cursor stability across btree splits with very
	deep trees (a variant of test048). [#2514]

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test089
	Concurrent Data Store test (CDB)

	Enhanced CDB testing to test off-page dups, cursor dups and
	cursor operations like c_del then c_get.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test090
	Test for functionality near the end of the queue using test001.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test091
	Test of DB_CONSUME_WAIT.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test092
	Test of DB_DIRTY_READ [#3395]

	We set up a database with nentries in it.  We then open the
	database read-only twice.  One with dirty reads and one without.
	We open the database for writing and update some entries in it.
	Then read those new entries via db->get (clean and dirty), and
	via cursors (clean and dirty).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test093
	Test set_bt_compare (btree key comparison function) and
	set_h_compare (hash key comparison function).

	Open a database with a comparison function specified,
	populate, and close, saving a list with that key order as
	we do so.  Reopen and read in the keys, saving in another
	list; the keys should be in the order specified by the
	comparison function.  Sort the original saved list of keys
	using the comparison function, and verify that it matches
	the keys as read out of the database.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test094
	Test using set_dup_compare.

	Use the first 10,000 entries from the dictionary.
	Insert each with self as key and data; retrieve each.
	After all are entered, retrieve all; compare output to original.
	Close file, reopen, do retrieve and re-verify.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test095
	Bulk get test for methods supporting dups. [#2934]

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test096
	Db->truncate test.
	For all methods:
	Test that truncate empties an existing database.
	Test that truncate-write in an aborted txn doesn't
	change the original contents.
	Test that truncate-write in a committed txn does
	overwrite the original contents.
	For btree and hash, do the same in a database with offpage dups.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test097
	Open up a large set of database files simultaneously.
	Adjust for local file descriptor resource limits.
	Then use the first 1000 entries from the dictionary.
	Insert each with self as key and a fixed, medium length data string;
	retrieve each. After all are entered, retrieve all; compare output
	to original.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test098
	Test of DB_GET_RECNO and secondary indices.  Open a primary and
	a secondary, and do a normal cursor get followed by a get_recno.
	(This is a smoke test for "Bug #1" in [#5811].)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test099

	Test of DB->get and DBC->c_get with set_recno and get_recno.

	Populate a small btree -recnum database.
	After all are entered, retrieve each using -recno with DB->get.
	Open a cursor and do the same for DBC->c_get with set_recno.
	Verify that set_recno sets the record number position properly.
	Verify that get_recno returns the correct record numbers.

	Using the same database, open 3 cursors and position one at
	the beginning, one in the middle, and one at the end.  Delete
	by cursor and check that record renumbering is done properly.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test100
	Test for functionality near the end of the queue
	using test025 (DB_APPEND).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test101
	Test for functionality near the end of the queue
	using test070 (DB_CONSUME).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test102
	Bulk get test for record-based methods. [#2934]

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test103
	Test bulk get when record numbers wrap around.

	Load database with items starting before and ending after
	the record number wrap around point.  Run bulk gets (-multi_key)
	with various buffer sizes and verify the contents returned match
	the results from a regular cursor get.

	Then delete items to create a sparse database and make sure it
	still works.  Test both -multi and -multi_key since they behave
	differently.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test106




=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test107
	Test of read-committed (degree 2 isolation). [#8689]

	We set up a database.  Open a read-committed transactional cursor and
	a regular transactional cursor on it. Position each cursor on one page,
	and do a put to a different page.

	Make sure that:
	- the put succeeds if we are using degree 2 isolation.
	- the put deadlocks within a regular transaction with
	a regular cursor.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test109

	Test of sequences.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test110
	Partial get test with duplicates.

	For hash and btree, create and populate a database
	with dups. Randomly selecting offset and length,
	retrieve data from each record and make sure we
	get what we expect.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test111
	Test database compaction.

	Populate a database.  Remove a high proportion of entries.
	Dump and save contents.  Compact the database, dump again,
	and make sure we still have the same contents.
	Add back some entries, delete more entries (this time by
	cursor), dump, compact, and do the before/after check again.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test112
	Test database compaction with a deep tree.

	This is a lot like test111, but with a large number of
	entries and a small page size to make the tree deep.
	To make it simple we use numerical keys all the time.

	Dump and save contents.  Compact the database, dump again,
	and make sure we still have the same contents.
	Add back some entries, delete more entries (this time by
	cursor), dump, compact, and do the before/after check again.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test113
	Test database compaction with duplicates.

	This is essentially test111 with duplicates.
	To make it simple we use numerical keys all the time.

	Dump and save contents.  Compact the database, dump again,
	and make sure we still have the same contents.
	Add back some entries, delete more entries (this time by
	cursor), dump, compact, and do the before/after check again.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test114
	Test database compaction with overflows.

	Populate a database.  Remove a high proportion of entries.
	Dump and save contents.  Compact the database, dump again,
	and make sure we still have the same contents.
	Add back some entries, delete more entries (this time by
	cursor), dump, compact, and do the before/after check again.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test115
	Test database compaction with user-specified btree sort.

	This is essentially test111 with the user-specified sort.
	Populate a database.  Remove a high proportion of entries.
	Dump and save contents.  Compact the database, dump again,
	and make sure we still have the same contents.
	Add back some entries, delete more entries (this time by
	cursor), dump, compact, and do the before/after check again.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test116
	Test of basic functionality of lsn_reset.

	Create a database in an env.  Copy it to a new file within
	the same env.  Reset the page LSNs.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test117
	Test database compaction with requested fill percent.

	Populate a database.  Remove a high proportion of entries.
	Dump and save contents.  Compact the database, requesting
	fill percentages starting at 10% and working our way up to
	100.  On each cycle, make sure we still have the same contents.

	Unlike the other compaction tests, this one does not
	use -freespace.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test119
	Test behavior when Berkeley DB returns DB_BUFFER_SMALL on a cursor.

	If the user-supplied buffer is not large enough to contain
	the returned value, DB returns BUFFER_SMALL.  If it does,
	check that the cursor does not move -- if it moves, it will
	skip items. [#13815]

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test120
	Test of multi-version concurrency control.

	Test basic functionality: a snapshot transaction started
	before a regular transaction's put can't see the modification.
	A snapshot transaction started after the put can see it.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test121
	Tests of multi-version concurrency control.

	MVCC and cursor adjustment.
	Set up a -snapshot cursor and position it in the middle
	of a database.
	Write to the database, both before and after the cursor,
	and verify that it stays on the same position.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test122
	Tests of multi-version concurrency control.

	MVCC and databases that turn multi-version on and off.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test123
	Concurrent Data Store cdsgroup smoke test.

	Open a CDS env with -cdb_alldb.
	Start a "txn" with -cdsgroup.
	Create two databases in the env, do a cursor put 
	in both within the same txn.  This should succeed.  

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test125
	Test cursor comparison API.

	The cursor comparison API reports whether two cursors within
	the same database are at the same position.  It does not report
	any information about relative position.

	1. Test two uninitialized cursors (error).
	2. Test one uninitialized cursor, one initialized (error). 
	3. Test two cursors in different databases (error).
	4. Put two cursors in the same place, test for match.  Walk
	them back and forth a bit, more matching. 
	5. Two cursors in the same spot.  Delete through one.  

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn001
	Begin, commit, abort testing.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn002
	Verify that  read-only transactions do not write log records.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn003
	Test abort/commit/prepare of txns with outstanding child txns.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn004
	Test of wraparound txnids (txn001)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn005
	Test transaction ID wraparound and recovery.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn008
	Test of wraparound txnids (txn002)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn009
	Test of wraparound txnids (txn003)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn010
	Test DB_ENV->txn_checkpoint arguments/flags

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn011
	Test durable and non-durable txns.
	Test a mixed env (with both durable and non-durable
	dbs), then a purely non-durable env.  Make sure commit
	and abort work, and that only the log records we
	expect are written.
	Test that we can't get a durable handle on an open ND
	database, or vice versa.  Test that all subdb's
	must be of the same type (D or ND).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn012
	Test txn->getname and txn->setname.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn013
	Test of txns used in the wrong environment.
	Set up two envs.  Start a txn in one env, and attempt to use it
	in the other env.  Verify we get the appropriate error message.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn014
	Test of parent and child txns working on the same database.
	A txn that will become a parent create a database.
	A txn that will not become a parent creates another database.
	Start a child txn of the 1st txn.
	Verify that the parent txn is disabled while child is open.
	1. Child reads contents with child handle (should succeed).
	2. Child reads contents with parent handle (should succeed).
	Verify that the non-parent txn can read from its database,
	and that the child txn cannot.
	Return to the child txn.
	3. Child writes with child handle (should succeed).
	4. Child writes with parent handle (should succeed).

	Commit the child, verify that the parent can write again.
	Check contents of database with a second child.