changeset 40 | b8bdbc8f59c7 |
parent 0 | 08ec8eefde2f |
child 45 | cc28652e0254 |
child 55 | 44f437012c90 |
33:5e4beccba4e9 | 40:b8bdbc8f59c7 |
---|---|
940 threadIdx = i; |
940 threadIdx = i; |
941 break; |
941 break; |
942 } |
942 } |
943 } |
943 } |
944 |
944 |
945 srand((unsigned)&ThreadFunc); |
|
946 |
|
945 PrintS("Thread \"%s\" - begin\r\n", (char*)pname); |
947 PrintS("Thread \"%s\" - begin\r\n", (char*)pname); |
946 err = sqlite3_open(TheTestDbName, &db); |
948 err = sqlite3_open(TheTestDbName, &db); |
947 TEST2(err, SQLITE_OK); |
949 TEST2(err, SQLITE_OK); |
948 TEST(db != 0); |
950 TEST(db != 0); |
949 |
951 |
950 while(records < KRecordsCount) |
952 while(records < KRecordsCount) |
951 { |
953 { |
954 if((records % 10) == 0) |
|
955 { |
|
956 PrintSI("Thread \"%s\", %d records.\r\n", (char*)pname, records); |
|
957 } |
|
952 err = sqlite3_exec(db, "BEGIN", 0, 0, &errmsg); |
958 err = sqlite3_exec(db, "BEGIN", 0, 0, &errmsg); |
953 if(err == SQLITE_OK) |
959 if(err == SQLITE_OK) |
954 { |
960 { |
955 err = sqlite3_exec(db, "INSERT INTO A VALUES(0,0,0.0,'',x'00')", 0, 0, &errmsg); |
961 err = sqlite3_exec(db, "INSERT INTO A VALUES(0,0,0.0,'',x'00')", 0, 0, &errmsg); |
956 if(err == SQLITE_OK) |
962 if(err == SQLITE_OK) |
964 } |
970 } |
965 TEST(err == SQLITE_OK || err == SQLITE_BUSY); |
971 TEST(err == SQLITE_OK || err == SQLITE_BUSY); |
966 if(err == SQLITE_OK) |
972 if(err == SQLITE_OK) |
967 { |
973 { |
968 TheInsertRecCnt[threadIdx] += KCommitRecordsCount; |
974 TheInsertRecCnt[threadIdx] += KCommitRecordsCount; |
969 records += 2; |
975 records += KCommitRecordsCount; |
970 } |
976 } |
971 else if(err == SQLITE_BUSY) |
977 else if(err == SQLITE_BUSY) |
972 { |
978 { |
973 ++TheLockErrCnt[threadIdx]; |
979 ++TheLockErrCnt[threadIdx]; |
974 (void)sqlite3_exec(db, "ROLLBACK", 0, 0, 0); |
980 (void)sqlite3_exec(db, "ROLLBACK", 0, 0, 0); |
975 if(errmsg) |
981 if(errmsg) |
976 { |
982 { |
977 PrintSI("Err msg: %s. Err: %d.\r\n", errmsg, err); |
983 char fmt[100]; |
984 strcpy(fmt, "Thread \""); |
|
985 strcat(fmt, (char*)pname); |
|
986 strcat(fmt, "\". Err msg: %s. Err: %d.\r\n"); |
|
987 PrintSI(fmt, errmsg, err); |
|
978 sqlite3_free(errmsg); |
988 sqlite3_free(errmsg); |
979 errmsg = 0; |
989 errmsg = 0; |
980 } |
990 } |
981 usleep(100); |
991 usleep((rand() % 3000) + 500); |
982 } |
992 } |
983 } |
993 } |
984 |
994 |
985 err = sqlite3_close(db); |
995 err = sqlite3_close(db); |
986 TEST2(err, SQLITE_OK); |
996 TEST2(err, SQLITE_OK); |
1345 int main(int argc, void** argv) |
1355 int main(int argc, void** argv) |
1346 { |
1356 { |
1347 UNUSED_ARG(argc); |
1357 UNUSED_ARG(argc); |
1348 UNUSED_ARG(argv); |
1358 UNUSED_ARG(argv); |
1349 |
1359 |
1360 TestOpen("t_sqliteapi test"); |
|
1350 TestTitle(); |
1361 TestTitle(); |
1351 |
1362 |
1352 TestHeapMark(); |
1363 TestHeapMark(); |
1353 |
1364 |
1354 TestEnvCreate(); |
1365 TestEnvCreate(); |