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