persistentstorage/sqlite3api/TEST/t_sqliteapi.c
branchRCL_3
changeset 25 047f208ea78f
parent 24 cc28652e0254
equal deleted inserted replaced
24:cc28652e0254 25:047f208ea78f
   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);